diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,31 @@
 # Revision history for typst-hs
 
+## 0.7
+
+  * Fix problems with module loading paths (#62).
+
+  * Skip whitespace before parsing key/value values in math (#64).
+
+  * Parse the `delim` attribute (and any others) in `math.mat` (#64).
+
+  * Methods: fix 'has' method so it works for sequences of elements.
+
+  * Evaluate: run show rules after looking up an identifier.
+
+  * Show rule changes:
+
+    + ShowRule now has an extra parameter for a unique identifier.
+      This allows us to prevent double application of show rules,
+      while allowing distinct rules with the same selector. [API change]
+    + In applying show rules, we no longer recurse into an element's
+      fields, as this caused double application of show rules in nested
+      contexts. (See #63.) However, this is not a complete fix because there
+      are some tests that still fail.
+    + Ensure that show rules are applied to text elements.
+
+  * Reorganized tests. Now put the `.out` and `.typ` files in same directory,
+    rather than having separate trees.
+
 ## 0.6.2
 
   * Allow types to act as constructor functions, as in typst (#61).
diff --git a/src/Typst/Evaluate.hs b/src/Typst/Evaluate.hs
--- a/src/Typst/Evaluate.hs
+++ b/src/Typst/Evaluate.hs
@@ -28,7 +28,8 @@
 import qualified Data.Text.Encoding as TE
 import qualified Data.Vector as V
 import GHC.Generics (Generic)
-import System.FilePath (replaceFileName, takeBaseName, takeDirectory, (</>))
+import System.FilePath (replaceFileName, takeBaseName,
+                        takeFileName, takeDirectory, (</>))
 import Text.Parsec
 import Typst.Bind (destructuringBind)
 import Typst.Constructors (getConstructor)
@@ -100,6 +101,10 @@
 pContent :: Monad m => MP m (Seq Content)
 pContent = (pTxt <|> pElt) >>= applyShowRules >>= addTextElement
 
+applyShowRulesToVal :: Monad m => Val -> MP m Val
+applyShowRulesToVal (VContent cs) = VContent <$> applyShowRules cs
+applyShowRulesToVal x = pure x
+
 addTextElement :: Monad m => Seq Content -> MP m (Seq Content)
 addTextElement = foldM go mempty
   where
@@ -427,7 +432,7 @@
 pExpr expr = valToContent <$> evalExpr expr
 
 evalExpr :: Monad m => Expr -> MP m Val
-evalExpr expr =
+evalExpr expr = applyShowRulesToVal =<<
   case expr of
     Literal lit -> pure $ evalLiteral lit
     Group e -> evalExpr e
@@ -742,6 +747,7 @@
                 st
                   { evalShowRules =
                       ShowRule
+                        (evalNextShowRuleIdentifier st)
                         selector
                         ( \c ->
                             valToContent
@@ -751,12 +757,14 @@
                                     named = OM.empty
                                   }
                         )
-                        : evalShowRules st
+                        : evalShowRules st,
+                    evalNextShowRuleIdentifier = evalNextShowRuleIdentifier st + 1
                   }
             _ -> updateState $ \st ->
               st
                 { evalShowRules =
                     ShowRule
+                      (evalNextShowRuleIdentifier st)
                       selector
                       ( \c ->
                           case e of
@@ -764,7 +772,8 @@
                             Set _ _ -> pure $ Seq.singleton c
                             _ -> pure (valToContent renderVal)
                       )
-                      : evalShowRules st
+                      : evalShowRules st,
+                    evalNextShowRuleIdentifier = evalNextShowRuleIdentifier st + 1
                 }
           pure VNone
     Binding _ -> fail $ "Encountered binding out of proper context"
@@ -994,28 +1003,35 @@
 loadModule :: Monad m => Text
            -> MP m (Seq Content, (Identifier, M.Map Identifier Val))
 loadModule modname = do
-  (fp, modid, mbPackageRoot) <-
+  (fp, modid, mbPackageRoot, txt) <-
         if T.take 1 modname == "@"
            then do
             fp' <- findPackageEntryPoint modname
-            pure (fp',
+            operations <- evalOperations <$> getState
+            txt <- lift $ TE.decodeUtf8 <$> loadBytes operations fp'
+            pure ( takeFileName fp',
                    Identifier
                     (T.pack $ takeWhile (/= ':') . takeBaseName $
                        T.unpack modname),
-                   Just (takeDirectory fp'))
-           else pure (T.unpack modname,
-                        Identifier (T.pack $ takeBaseName $ T.unpack modname),
-                        Nothing)
-  txt <- loadFileText fp
+                   Just (takeDirectory fp'),
+                   txt )
+           else do
+             let fp = T.unpack modname
+             txt <- loadFileText fp
+             pure ( fp,
+                    Identifier (T.pack $ takeBaseName fp),
+                    Nothing,
+                    txt )
   case parseTypst fp txt of
     Left err -> fail $ show err
     Right ms -> do
       operations <- evalOperations <$> getState
       currentLocalDir <- evalLocalDir <$> getState
+      currentPackageRoot <- evalPackageRoot <$> getState
       let (pkgroot , localdir) =
             case mbPackageRoot of
               Just r -> (r , takeDirectory fp)
-              Nothing -> (evalPackageRoot initialEvalState ,
+              Nothing -> (currentPackageRoot,
                           currentLocalDir </> takeDirectory fp)
       res <-
         lift $
diff --git a/src/Typst/Methods.hs b/src/Typst/Methods.hs
--- a/src/Typst/Methods.hs
+++ b/src/Typst/Methods.hs
@@ -19,7 +19,7 @@
 import Data.List (intersperse, sort, sortOn)
 import qualified Data.Map as M
 import qualified Data.Map.Ordered as OM
-import Data.Maybe (fromMaybe, listToMaybe)
+import Data.Maybe (fromMaybe, listToMaybe, isJust)
 import Data.Text (Text)
 import qualified Data.Text as T
 import qualified Data.Vector as V
@@ -329,16 +329,9 @@
               pure $ VContent $ foldMap valToContent xs
         "has" -> pure $ makeFunction $ do
           f <- nthArg 1
-          case F.toList cs of
-            [Elt _ _ fields] -> do
-              case M.lookup (Identifier f) fields of
-                Just _ -> pure $ VBoolean True
-                Nothing -> pure $ VBoolean False
-            _ | f == "children" -> pure $ VBoolean True
-            _ ->
-              fail $
-                "Content is not a single element: "
-                  <> T.unpack (repr (VContent cs))
+          let hasField (Elt _ _ fields) = isJust $ M.lookup (Identifier f) fields
+              hasField _ = False
+          pure $ VBoolean $ any hasField cs
         "at" -> pure $ makeFunction $ do
           (field :: Text) <- ask >>= getPositionalArg 1 >>= fromVal
           defval <- namedArg "default" VNone
diff --git a/src/Typst/Module/Math.hs b/src/Typst/Module/Math.hs
--- a/src/Typst/Module/Math.hs
+++ b/src/Typst/Module/Math.hs
@@ -124,7 +124,7 @@
           then as
           else as ++ [VArray (V.fromList bs)]
   -- then any leftovers
-  let fields = M.fromList [("rows", VArray (V.fromList rows))]
+  fields <- M.insert "rows" (VArray (V.fromList rows)) <$> argsToFields [] args
   pure $ VContent . Seq.singleton $ Elt "math.mat" (Just pos) fields
 
 spaceConstants :: M.Map Identifier Content
diff --git a/src/Typst/Parse.hs b/src/Typst/Parse.hs
--- a/src/Typst/Parse.hs
+++ b/src/Typst/Parse.hs
@@ -376,7 +376,7 @@
       ident <- try $ pIdentifier <* sym ":"
       KeyValArg ident
         <$> ( (char '#' *> pExpr <* sep)
-                <|> Block . Content <$> mathContent
+                <|> Block . Content <$> (ws *> mathContent)
             )
     mathContent = do
       xs <- maths
diff --git a/src/Typst/Show.hs b/src/Typst/Show.hs
--- a/src/Typst/Show.hs
+++ b/src/Typst/Show.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE LambdaCase #-}
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RankNTypes #-}
 {-# LANGUAGE ScopedTypeVariables #-}
@@ -6,14 +5,13 @@
 
 module Typst.Show (applyShowRules) where
 
-import Control.Monad (foldM)
 import Data.Array ((!))
 import qualified Data.Map as M
 import Data.Sequence (Seq)
 import qualified Data.Sequence as Seq
 import Data.Text (Text)
 import qualified Data.Text as T
-import Text.Parsec (getState, updateState, (<|>))
+import Text.Parsec (getState, updateState)
 import qualified Text.Regex.TDFA as TDFA
 import Typst.Regex (RE (..), makeLiteralRE)
 import Typst.Syntax
@@ -24,20 +22,7 @@
 applyShowRules :: Monad m => Seq Content -> MP m (Seq Content)
 applyShowRules cs = do
   rules <- evalShowRules <$> getState
-  foldM (tryShowRules rules) mempty cs
-
-withoutShowRule :: Monad m => Selector -> MP m a -> MP m a
-withoutShowRule selector pa = do
-  oldShowRules <- evalShowRules <$> getState
-  updateState $ \st ->
-    st
-      { evalShowRules =
-          [ ShowRule sel f | ShowRule sel f <- evalShowRules st, sel /= selector
-          ]
-      }
-  res <- pa
-  updateState $ \st -> st {evalShowRules = oldShowRules}
-  pure res
+  foldMap (tryShowRules rules) cs
 
 -- By experiment, it seems that show rules work this way:
 -- the first (i.e. most recently defined) one to match a given element
@@ -45,55 +30,49 @@
 tryShowRules ::
   Monad m =>
   [ShowRule] ->
-  Seq Content ->
   Content ->
   MP m (Seq Content)
-tryShowRules [] cs c = pure $ cs Seq.|> c
-tryShowRules (ShowRule sel f : rs) cs c = do
-  c' <- case c of
-    Elt name pos fields -> do
-      let applyToVal (VContent cs') =
-            VContent
-              <$> foldMap (tryShowRules [ShowRule sel f] mempty) cs'
-          applyToVal (VArray as) = VArray <$> mapM applyToVal as
-          applyToVal x = pure x
-      fields' <- mapM applyToVal fields
-      pure $ Elt name pos fields'
-    _ -> pure c
-  case (sel, c') of
-    (SelectString s, Txt t) ->
-      ( do
-          re <- makeLiteralRE s
-          withoutShowRule
-            sel
-            ((cs <>) <$> (replaceRegexContent re t f >>= applyShowRules))
-      )
-        <|> tryShowRules rs cs c'
-    (SelectRegex re, Txt t) ->
-      ( withoutShowRule
-          sel
-          ((cs <>) <$> (replaceRegexContent re t f >>= applyShowRules))
-      )
-        <|> tryShowRules rs cs c'
+tryShowRules (r:rest) e@(Elt "text" pos fields) =
+  case M.lookup "body" fields of
+    Just (VContent cs) -> do
+      cs' <- foldMap (tryShowRules (r:rest)) cs
+      pure $ Seq.singleton $
+        Elt "text" pos (M.insert "body" (VContent cs') fields)
+    _ -> applyShowRule r e >>= foldMap (tryShowRules rest)
+tryShowRules rs c =
+  case rs of
+    [] -> pure $ Seq.singleton c
+    (r:rest) -> applyShowRule r c >>= foldMap (tryShowRules rest)
+-- TODO recursive applyShowRules?
+
+withoutShowRule :: Monad m => ShowRule -> MP m a -> MP m a
+withoutShowRule rule pa = do
+  oldShowRules <- evalShowRules <$> getState
+  updateState $ \st ->
+    st { evalShowRules = filter (/= rule) (evalShowRules st) }
+  res <- pa
+  updateState $ \st -> st {evalShowRules = oldShowRules}
+  pure res
+
+applyShowRule :: Monad m => ShowRule -> Content -> MP m (Seq Content)
+applyShowRule rule@(ShowRule _ sel f) c = withoutShowRule rule $ do
+  case (sel, c) of
+    (SelectString s, Txt t) | s `T.isInfixOf` t -> do
+      re <- makeLiteralRE s
+      replaceRegexContent re t f
+    (SelectRegex re@(RE _ re'), Txt t) | not (null (TDFA.matchAll re' t)) -> do
+      replaceRegexContent re t f
     (SelectLabel s, elt@(Elt _ _ fields))
-      | Just (VLabel s') <- M.lookup "label" fields,
-        s' == s ->
-          withoutShowRule sel ((cs <>) <$> (f elt >>= applyShowRules))
+      | Just (VLabel s') <- M.lookup "label" fields
+      , s' == s
+      -> f elt
     (SelectElement name fields, elt@(Elt name' _ fields'))
-      | name == name',
-        fieldsMatch fields fields' ->
-          withoutShowRule sel $ (cs <>) <$> (f elt >>= applyShowRules)
-    (SelectOr _sel1 _sel2, _elt) ->
-      fail "or is not yet implemented for select"
-    (SelectAnd _sel1 _sel2, _elt) ->
-      fail "and is not yet implemented for select"
-    (SelectBefore _sel1 _sel2, _elt) ->
-      fail "before is not yet implemented for select"
-    (SelectAfter _sel1 _sel2, _elt) ->
-      fail "after is not yet implemented for select"
-    _ -> tryShowRules rs cs c'
+      | name == name' && fieldsMatch fields fields'
+      -> f elt
+    (_, cont) -> pure (Seq.singleton cont)
+    -- TODO not implemented: SelectOr, SelectAnd, SelectBefore, SelectAfter
 
-fieldsMatch :: [(Identifier, Val)] -> (M.Map Identifier Val) -> Bool
+fieldsMatch :: [(Identifier, Val)] -> M.Map Identifier Val -> Bool
 fieldsMatch [] _ = True
 fieldsMatch ((k, v) : rest) m =
   ( case M.lookup k m of
diff --git a/src/Typst/Types.hs b/src/Typst/Types.hs
--- a/src/Typst/Types.hs
+++ b/src/Typst/Types.hs
@@ -616,6 +616,7 @@
     evalCounters :: M.Map Counter Integer,
     evalMath :: Bool,
     evalShowRules :: [ShowRule],
+    evalNextShowRuleIdentifier :: Int,
     evalStyles :: M.Map Identifier Arguments,
     evalFlowDirective :: FlowDirective,
     evalPackageRoot :: FilePath,
@@ -631,6 +632,7 @@
       evalCounters = mempty,
       evalMath = False,
       evalShowRules = [],
+      evalNextShowRuleIdentifier = 1,
       evalStyles = mempty,
       evalFlowDirective = FlowNormal,
       evalPackageRoot = mempty,
@@ -662,10 +664,14 @@
   fail = Failure
 
 data ShowRule
-  = ShowRule Selector (forall m. Monad m => Content -> MP m (Seq Content))
+  = ShowRule Int Selector (forall m. Monad m => Content -> MP m (Seq Content))
 
 instance Show ShowRule where
-  show (ShowRule sel _) = "ShowRule " <> show sel <> " <function>"
+  show (ShowRule ident sel _) =
+    "ShowRule " <> show ident <> " " <> show sel <> " <function>"
+
+instance Eq ShowRule where
+  (ShowRule id1 _ _) == (ShowRule id2 _ _) = id1 == id2
 
 type MP m = ParsecT [Markup] (EvalState m) m
 
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -8,7 +8,7 @@
 import qualified Data.Text as T
 import qualified Data.Text.Encoding as TE
 import Data.Text.IO as TIO
-import System.FilePath (replaceExtension, joinPath, splitPath)
+import System.FilePath (replaceExtension)
 import Test.Tasty (TestTree, Timeout (..), defaultMain, localOption, testGroup)
 import Test.Tasty.Golden (findByExtension, goldenVsStringDiff)
 import Text.Show.Pretty (ppShow)
@@ -43,8 +43,7 @@
   goldenVsStringDiff
     input
     (\ref new -> ["diff", "-u", ref, new])
-    -- remove 'typ/':
-    ("out" <> (joinPath . drop 1 . splitPath) (replaceExtension input ".out"))
+    (replaceExtension input ".out")
     (writeTest input)
 
 writeTest :: FilePath -> IO BL.ByteString
diff --git a/test/out/bugs/args-sink-00.out b/test/out/bugs/args-sink-00.out
deleted file mode 100644
--- a/test/out/bugs/args-sink-00.out
+++ /dev/null
@@ -1,79 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/bugs/args-sink-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/bugs/args-sink-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/bugs/args-sink-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/bugs/args-sink-00.typ"
-    ( line 2 , column 2 )
-    (LetFunc
-       (Identifier "foo")
-       [ SinkParam (Just (Identifier "body")) ]
-       (FuncCall
-          (Ident (Identifier "repr"))
-          [ NormalArg
-              (FuncCall
-                 (FieldAccess
-                    (Ident (Identifier "pos")) (Ident (Identifier "body")))
-                 [])
-          ]))
-, SoftBreak
-, Code
-    "test/typ/bugs/args-sink-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "foo"))
-       [ KeyValArg (Identifier "a") (Literal (String "1"))
-       , KeyValArg (Identifier "b") (Literal (String "2"))
-       , NormalArg (Literal (Int 1))
-       , NormalArg (Literal (Int 2))
-       , NormalArg (Literal (Int 3))
-       , NormalArg (Literal (Int 4))
-       , NormalArg (Literal (Int 5))
-       , NormalArg (Literal (Int 6))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [(1, 2, 3, 4, 5, 6)]), 
-                 parbreak() })
diff --git a/test/out/bugs/args-underscore-00.out b/test/out/bugs/args-underscore-00.out
deleted file mode 100644
--- a/test/out/bugs/args-underscore-00.out
+++ /dev/null
@@ -1,69 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/bugs/args-underscore-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/bugs/args-underscore-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/bugs/args-underscore-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/bugs/args-underscore-00.typ"
-    ( line 2 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "len"))
-                 (FuncCall
-                    (FieldAccess
-                       (Ident (Identifier "map"))
-                       (Array
-                          [ Reg (Literal (Int 1))
-                          , Reg (Literal (Int 2))
-                          , Reg (Literal (Int 3))
-                          ]))
-                    [ NormalArg (FuncExpr [ SkipParam ] (Block (CodeBlock []))) ]))
-              [])
-       , NormalArg (Literal (Int 3))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/bugs/columns-1-00.out b/test/out/bugs/columns-1-00.out
deleted file mode 100644
--- a/test/out/bugs/columns-1-00.out
+++ /dev/null
@@ -1,86 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/bugs/columns-1-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/bugs/columns-1-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/bugs/columns-1-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/bugs/columns-1-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 70.0 Pt)) ])
-, ParBreak
-, Text "Hallo"
-, SoftBreak
-, Code
-    "test/typ/bugs/columns-1-00.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "columns"))
-       [ NormalArg (Literal (Int 2))
-       , BlockArg
-           [ SoftBreak
-           , Heading 1 [ Text "A" ]
-           , Text "Text"
-           , SoftBreak
-           , Heading 1 [ Text "B" ]
-           , Text "Text"
-           , ParBreak
-           ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [Hallo
-]), 
-                 columns(body: { text(body: [
-]), 
-                                 heading(body: text(body: [A]), 
-                                         level: 1), 
-                                 text(body: [Text
-]), 
-                                 heading(body: text(body: [B]), 
-                                         level: 1), 
-                                 text(body: [Text]), 
-                                 parbreak() }, 
-                         count: 2), 
-                 parbreak() })
diff --git a/test/out/bugs/flow-1-00.out b/test/out/bugs/flow-1-00.out
deleted file mode 100644
--- a/test/out/bugs/flow-1-00.out
+++ /dev/null
@@ -1,140 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/bugs/flow-1-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/bugs/flow-1-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/bugs/flow-1-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/bugs/flow-1-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 70.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/bugs/flow-1-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "block"))
-       [ BlockArg
-           [ Text "This"
-           , Space
-           , Text "file"
-           , Space
-           , Text "tests"
-           , Space
-           , Text "a"
-           , Space
-           , Text "bug"
-           , Space
-           , Text "where"
-           , Space
-           , Text "an"
-           , Space
-           , Text "almost"
-           , Space
-           , Text "empty"
-           , Space
-           , Text "page"
-           , Space
-           , Text "occurs"
-           , Text "."
-           ]
-       ])
-, SoftBreak
-, Code
-    "test/typ/bugs/flow-1-00.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "block"))
-       [ BlockArg
-           [ SoftBreak
-           , Text "The"
-           , Space
-           , Text "text"
-           , Space
-           , Text "in"
-           , Space
-           , Text "this"
-           , Space
-           , Text "second"
-           , Space
-           , Text "block"
-           , Space
-           , Text "was"
-           , Space
-           , Text "torn"
-           , Space
-           , Text "apart"
-           , Space
-           , Text "and"
-           , Space
-           , Text "split"
-           , Space
-           , Text "up"
-           , Space
-           , Text "for"
-           , SoftBreak
-           , Text "some"
-           , Space
-           , Text "reason"
-           , Space
-           , Text "beyond"
-           , Space
-           , Text "my"
-           , Space
-           , Text "knowledge"
-           , Text "."
-           , ParBreak
-           ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 block(body: text(body: [This file tests a bug where an almost empty page occurs.])), 
-                 text(body: [
-]), 
-                 block(body: { text(body: [
-The text in this second block was torn apart and split up for
-some reason beyond my knowledge.]), 
-                               parbreak() }), 
-                 parbreak() })
diff --git a/test/out/bugs/flow-2-00.out b/test/out/bugs/flow-2-00.out
deleted file mode 100644
--- a/test/out/bugs/flow-2-00.out
+++ /dev/null
@@ -1,113 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/bugs/flow-2-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/bugs/flow-2-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/bugs/flow-2-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/bugs/flow-2-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 60.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/bugs/flow-2-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 19.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/bugs/flow-2-00.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "block"))
-       [ BlockArg
-           [ SoftBreak
-           , Text "But,"
-           , Space
-           , Text "soft!"
-           , Space
-           , Text "what"
-           , Space
-           , Text "light"
-           , Space
-           , Text "through"
-           , Space
-           , Text "yonder"
-           , Space
-           , Text "window"
-           , Space
-           , Text "breaks?"
-           , SoftBreak
-           , Text "It"
-           , Space
-           , Text "is"
-           , Space
-           , Text "the"
-           , Space
-           , Text "east,"
-           , Space
-           , Text "and"
-           , Space
-           , Text "Juliet"
-           , Space
-           , Text "is"
-           , Space
-           , Text "the"
-           , Space
-           , Text "sun"
-           , Text "."
-           , ParBreak
-           ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 v(amount: 19.0pt), 
-                 text(body: [
-]), 
-                 block(body: { text(body: [
-But, soft! what light through yonder window breaks?
-It is the east, and Juliet is the sun.]), 
-                               parbreak() }), 
-                 parbreak() })
diff --git a/test/out/bugs/flow-3-00.out b/test/out/bugs/flow-3-00.out
deleted file mode 100644
--- a/test/out/bugs/flow-3-00.out
+++ /dev/null
@@ -1,111 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/bugs/flow-3-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/bugs/flow-3-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/bugs/flow-3-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/bugs/flow-3-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 60.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/bugs/flow-3-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "rect"))
-       [ KeyValArg (Identifier "inset") (Literal (Numeric 0.0 Pt))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "columns"))
-              [ NormalArg (Literal (Int 2))
-              , BlockArg
-                  [ SoftBreak
-                  , Text "Text"
-                  , SoftBreak
-                  , Code
-                      "test/typ/bugs/flow-3-00.typ"
-                      ( line 5 , column 4 )
-                      (FuncCall
-                         (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 12.0 Pt)) ])
-                  , SoftBreak
-                  , Text "Hi"
-                  , SoftBreak
-                  , Code
-                      "test/typ/bugs/flow-3-00.typ"
-                      ( line 7 , column 4 )
-                      (FuncCall
-                         (Ident (Identifier "v"))
-                         [ NormalArg (Literal (Numeric 10.0 Pt))
-                         , KeyValArg (Identifier "weak") (Literal (Boolean True))
-                         ])
-                  , SoftBreak
-                  , Text "At"
-                  , Space
-                  , Text "column"
-                  , Space
-                  , Text "break"
-                  , Text "."
-                  , ParBreak
-                  ]
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 rect(body: columns(body: { text(body: [
-Text
-]), 
-                                            v(amount: 12.0pt), 
-                                            text(body: [
-Hi
-]), 
-                                            v(amount: 10.0pt, 
-                                              weak: true), 
-                                            text(body: [
-At column break.]), 
-                                            parbreak() }, 
-                                    count: 2), 
-                      inset: 0.0pt), 
-                 parbreak() })
diff --git a/test/out/bugs/flow-4-00.out b/test/out/bugs/flow-4-00.out
deleted file mode 100644
--- a/test/out/bugs/flow-4-00.out
+++ /dev/null
@@ -1,66 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/bugs/flow-4-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/bugs/flow-4-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/bugs/flow-4-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/bugs/flow-4-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 105.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/bugs/flow-4-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "block"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 20)) ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 block(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut]), 
-                 parbreak() })
diff --git a/test/out/bugs/grid-1-00.out b/test/out/bugs/grid-1-00.out
deleted file mode 100644
--- a/test/out/bugs/grid-1-00.out
+++ /dev/null
@@ -1,96 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/bugs/grid-1-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/bugs/grid-1-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/bugs/grid-1-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/bugs/grid-1-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 150.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/bugs/grid-1-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "table"))
-       [ KeyValArg
-           (Identifier "columns")
-           (Array [ Reg (Literal (Numeric 1.5 Cm)) , Reg (Literal Auto) ])
-       , KeyValArg
-           (Identifier "rows")
-           (Array [ Reg (Literal Auto) , Reg (Literal Auto) ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
-              , KeyValArg (Identifier "fill") (Ident (Identifier "red"))
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
-              , KeyValArg (Identifier "fill") (Ident (Identifier "blue"))
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
-              , KeyValArg (Identifier "height") (Literal (Numeric 50.0 Percent))
-              , KeyValArg (Identifier "fill") (Ident (Identifier "green"))
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 table(children: (rect(fill: rgb(100%,25%,21%,100%), 
-                                       width: 100%), 
-                                  rect(fill: rgb(0%,45%,85%,100%), 
-                                       width: 100%), 
-                                  rect(fill: rgb(18%,80%,25%,100%), 
-                                       height: 50%, 
-                                       width: 100%)), 
-                       columns: (1.5cm, auto), 
-                       rows: (auto, auto)), 
-                 parbreak() })
diff --git a/test/out/bugs/grid-1-01.out b/test/out/bugs/grid-1-01.out
deleted file mode 100644
--- a/test/out/bugs/grid-1-01.out
+++ /dev/null
@@ -1,87 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/bugs/grid-1-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/bugs/grid-1-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/bugs/grid-1-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/bugs/grid-1-01.typ"
-    ( line 2 , column 2 )
-    (FuncCall
-       (Ident (Identifier "rect"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
-       , KeyValArg (Identifier "height") (Literal (Numeric 1.0 Em))
-       ])
-, SoftBreak
-, BulletListItem
-    [ Code
-        "test/typ/bugs/grid-1-01.typ"
-        ( line 3 , column 4 )
-        (FuncCall
-           (Ident (Identifier "rect"))
-           [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
-           , KeyValArg (Identifier "height") (Literal (Numeric 1.0 Em))
-           ])
-    , SoftBreak
-    , BulletListItem
-        [ Code
-            "test/typ/bugs/grid-1-01.typ"
-            ( line 4 , column 6 )
-            (FuncCall
-               (Ident (Identifier "rect"))
-               [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
-               , KeyValArg (Identifier "height") (Literal (Numeric 1.0 Em))
-               ])
-        , ParBreak
-        ]
-    ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 rect(height: 1.0em, 
-                      width: 100%), 
-                 text(body: [
-]), 
-                 list(children: ({ rect(height: 1.0em, 
-                                        width: 100%), 
-                                   text(body: [
-]), 
-                                   list(children: ({ rect(height: 1.0em, 
-                                                          width: 100%), 
-                                                     parbreak() })) })) })
diff --git a/test/out/bugs/grid-2-00.out b/test/out/bugs/grid-2-00.out
deleted file mode 100644
--- a/test/out/bugs/grid-2-00.out
+++ /dev/null
@@ -1,167 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/bugs/grid-2-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/bugs/grid-2-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/bugs/grid-2-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/bugs/grid-2-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 100.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/bugs/grid-2-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "grid"))
-       [ KeyValArg
-           (Identifier "columns")
-           (Array [ Reg (Literal (Numeric 2.0 Cm)) , Reg (Literal Auto) ])
-       , KeyValArg
-           (Identifier "rows")
-           (Array [ Reg (Literal Auto) , Reg (Literal Auto) ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
-              , KeyValArg (Identifier "fill") (Ident (Identifier "red"))
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
-              , KeyValArg (Identifier "fill") (Ident (Identifier "blue"))
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
-              , KeyValArg (Identifier "height") (Literal (Numeric 80.0 Percent))
-              , KeyValArg (Identifier "fill") (Ident (Identifier "green"))
-              ])
-       , NormalArg
-           (Block
-              (Content
-                 [ Text "hello"
-                 , Space
-                 , HardBreak
-                 , Text "darkness"
-                 , Space
-                 , Code
-                     "test/typ/bugs/grid-2-00.typ"
-                     ( line 9 , column 22 )
-                     (Ident (Identifier "parbreak"))
-                 , Space
-                 , Text "my"
-                 , Space
-                 , HardBreak
-                 , Text "old"
-                 , Space
-                 , HardBreak
-                 , Text "friend"
-                 , Space
-                 , HardBreak
-                 , Text "I"
-                 ]))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
-              , KeyValArg (Identifier "height") (Literal (Numeric 20.0 Percent))
-              , KeyValArg (Identifier "fill") (Ident (Identifier "blue"))
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "polygon"))
-              [ KeyValArg (Identifier "fill") (Ident (Identifier "red"))
-              , NormalArg
-                  (Array
-                     [ Reg (Literal (Numeric 0.0 Percent))
-                     , Reg (Literal (Numeric 0.0 Percent))
-                     ])
-              , NormalArg
-                  (Array
-                     [ Reg (Literal (Numeric 100.0 Percent))
-                     , Reg (Literal (Numeric 0.0 Percent))
-                     ])
-              , NormalArg
-                  (Array
-                     [ Reg (Literal (Numeric 100.0 Percent))
-                     , Reg (Literal (Numeric 20.0 Percent))
-                     ])
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 grid(children: (rect(fill: rgb(100%,25%,21%,100%), 
-                                      width: 100%), 
-                                 rect(fill: rgb(0%,45%,85%,100%), 
-                                      width: 100%), 
-                                 rect(fill: rgb(18%,80%,25%,100%), 
-                                      height: 80%, 
-                                      width: 100%), 
-                                 { text(body: [hello ]), 
-                                   linebreak(), 
-                                   text(body: [darkness ]), 
-                                   text(body: [ my ]), 
-                                   linebreak(), 
-                                   text(body: [old ]), 
-                                   linebreak(), 
-                                   text(body: [friend ]), 
-                                   linebreak(), 
-                                   text(body: [I]) }, 
-                                 rect(fill: rgb(0%,45%,85%,100%), 
-                                      height: 20%, 
-                                      width: 100%), 
-                                 polygon(fill: rgb(100%,25%,21%,100%), 
-                                         vertices: ((0%, 
-                                                     0%), 
-                                                    (100%, 
-                                                     0%), 
-                                                    (100%, 
-                                                     20%)))), 
-                      columns: (2.0cm, auto), 
-                      rows: (auto, auto)), 
-                 parbreak() })
diff --git a/test/out/bugs/grid-2-01.out b/test/out/bugs/grid-2-01.out
deleted file mode 100644
--- a/test/out/bugs/grid-2-01.out
+++ /dev/null
@@ -1,73 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/bugs/grid-2-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/bugs/grid-2-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/bugs/grid-2-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/bugs/grid-2-01.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 60.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/bugs/grid-2-01.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 5)) ])
-, SoftBreak
-, BulletListItem
-    [ Code
-        "test/typ/bugs/grid-2-01.typ"
-        ( line 4 , column 4 )
-        (FuncCall
-           (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 5)) ])
-    , ParBreak
-    ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [Lorem ipsum dolor sit amet,]), 
-                 text(body: [
-]), 
-                 list(children: ({ text(body: [Lorem ipsum dolor sit amet,]), 
-                                   parbreak() })) })
diff --git a/test/out/bugs/grid-3-00.out b/test/out/bugs/grid-3-00.out
deleted file mode 100644
--- a/test/out/bugs/grid-3-00.out
+++ /dev/null
@@ -1,75 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/bugs/grid-3-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/bugs/grid-3-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/bugs/grid-3-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/bugs/grid-3-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 70.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/bugs/grid-3-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 40.0 Pt)) ])
-, SoftBreak
-, Text "The"
-, Space
-, Text "following"
-, Text ":"
-, SoftBreak
-, EnumListItem Nothing [ Text "A" ]
-, SoftBreak
-, EnumListItem Nothing [ Text "B" , ParBreak ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 v(amount: 40.0pt), 
-                 text(body: [
-The following:
-]), 
-                 enum(children: (text(body: [A]), 
-                                 { text(body: [B]), 
-                                   parbreak() })) })
diff --git a/test/out/bugs/math-realize-00.out b/test/out/bugs/math-realize-00.out
deleted file mode 100644
--- a/test/out/bugs/math-realize-00.out
+++ /dev/null
@@ -1,240 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/bugs/math-realize-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/bugs/math-realize-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/bugs/math-realize-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/bugs/math-realize-00.typ"
-    ( line 2 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "my")))
-       (Block
-          (Content
-             [ Equation
-                 False
-                 [ Code
-                     "test/typ/bugs/math-realize-00.typ"
-                     ( line 2 , column 12 )
-                     (Ident (Identifier "pi"))
-                 ]
-             ])))
-, SoftBreak
-, Code
-    "test/typ/bugs/math-realize-00.typ"
-    ( line 3 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "f1")))
-       (FuncCall
-          (Ident (Identifier "box"))
-          [ KeyValArg (Identifier "baseline") (Literal (Numeric 10.0 Pt))
-          , NormalArg (Block (Content [ Text "f" ]))
-          ]))
-, SoftBreak
-, Code
-    "test/typ/bugs/math-realize-00.typ"
-    ( line 4 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "f2")))
-       (FuncCall
-          (Ident (Identifier "style"))
-          [ NormalArg
-              (FuncExpr
-                 [ NormalParam (Identifier "sty") ] (Ident (Identifier "f1")))
-          ]))
-, SoftBreak
-, Code
-    "test/typ/bugs/math-realize-00.typ"
-    ( line 5 , column 2 )
-    (Show
-       (Just
-          (FieldAccess
-             (Ident (Identifier "vec")) (Ident (Identifier "math"))))
-       (Block (Content [ Text "nope" ])))
-, ParBreak
-, Equation
-    True
-    [ Code
-        "test/typ/bugs/math-realize-00.typ"
-        ( line 7 , column 3 )
-        (Ident (Identifier "pi"))
-    , Text "a"
-    ]
-, SoftBreak
-, Equation
-    True
-    [ Code
-        "test/typ/bugs/math-realize-00.typ"
-        ( line 8 , column 3 )
-        (Ident (Identifier "my"))
-    , Text "a"
-    ]
-, SoftBreak
-, Equation
-    True
-    [ Text "1"
-    , Text "+"
-    , Code
-        "test/typ/bugs/math-realize-00.typ"
-        ( line 9 , column 7 )
-        (FuncCall
-           (Ident (Identifier "sqrt"))
-           [ BlockArg [ MFrac (Text "x") (Text "2") ] ])
-    , Text "+"
-    , Code
-        "test/typ/bugs/math-realize-00.typ"
-        ( line 9 , column 19 )
-        (FuncCall
-           (Ident (Identifier "sqrt"))
-           [ NormalArg
-               (FuncCall
-                  (Ident (Identifier "hide"))
-                  [ NormalArg
-                      (Block
-                         (Content [ Equation False [ MFrac (Text "x") (Text "2") ] ]))
-                  ])
-           ])
-    ]
-, SoftBreak
-, Equation
-    True
-    [ Text "a"
-    , Text "x"
-    , Code
-        "test/typ/bugs/math-realize-00.typ"
-        ( line 10 , column 8 )
-        (FuncCall
-           (Ident (Identifier "link"))
-           [ NormalArg (Literal (String "url"))
-           , NormalArg
-               (Block (Content [ Equation False [ Text "+" , Text "b" ] ]))
-           ])
-    ]
-, SoftBreak
-, Equation
-    True
-    [ Text "f"
-    , Code
-        "test/typ/bugs/math-realize-00.typ"
-        ( line 11 , column 5 )
-        (Ident (Identifier "f1"))
-    , Code
-        "test/typ/bugs/math-realize-00.typ"
-        ( line 11 , column 8 )
-        (Ident (Identifier "f2"))
-    ]
-, SoftBreak
-, Equation
-    True
-    [ Code
-        "test/typ/bugs/math-realize-00.typ"
-        ( line 12 , column 3 )
-        (FuncCall
-           (Ident (Identifier "vec"))
-           [ BlockArg [ Text "1" ] , BlockArg [ Text "2" ] ])
-    , Code
-        "test/typ/bugs/math-realize-00.typ"
-        ( line 12 , column 12 )
-        (Ident (Identifier "convolve"))
-    , Text "2"
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 math.equation(block: true, 
-                               body: { text(body: [π]), 
-                                       text(body: [a]) }, 
-                               numbering: none), 
-                 text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { math.equation(block: false, 
-                                                     body: text(body: [π]), 
-                                                     numbering: none), 
-                                       text(body: [a]) }, 
-                               numbering: none), 
-                 text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [1]), 
-                                       text(body: [+]), 
-                                       math.sqrt(radicand: math.frac(denom: text(body: [2]), 
-                                                                     num: text(body: [x]))), 
-                                       text(body: [+]), 
-                                       math.sqrt(radicand: hide(body: math.equation(block: false, 
-                                                                                    body: math.frac(denom: text(body: [2]), 
-                                                                                                    num: text(body: [x])), 
-                                                                                    numbering: none))) }, 
-                               numbering: none), 
-                 text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [a]), 
-                                       text(body: [x]), 
-                                       link(body: math.equation(block: false, 
-                                                                body: { text(body: [+]), 
-                                                                        text(body: [b]) }, 
-                                                                numbering: none), 
-                                            dest: "url") }, 
-                               numbering: none), 
-                 text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [f]), 
-                                       box(baseline: 10.0pt, 
-                                           body: text(body: [f])), 
-                                       box(baseline: 10.0pt, 
-                                           body: text(body: [f])) }, 
-                               numbering: none), 
-                 text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [nope]), 
-                                       text(body: [∗]), 
-                                       text(body: [2]) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/bugs/math-realize-01.out b/test/out/bugs/math-realize-01.out
deleted file mode 100644
--- a/test/out/bugs/math-realize-01.out
+++ /dev/null
@@ -1,152 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/bugs/math-realize-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/bugs/math-realize-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/bugs/math-realize-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Equation
-    True
-    [ MAttach Nothing (Just (Text "2")) (Text "x")
-    , Code
-        "test/typ/bugs/math-realize-01.typ"
-        ( line 2 , column 8 )
-        (FuncCall
-           (Ident (Identifier "hide"))
-           [ BlockArg
-               [ Equation
-                   False
-                   [ MGroup
-                       (Just "(")
-                       (Just ")")
-                       [ Code
-                           "test/typ/bugs/math-realize-01.typ"
-                           ( line 2 , column 15 )
-                           (FieldAccess (Ident (Identifier "eq")) (Ident (Identifier "gt")))
-                       , Code
-                           "test/typ/bugs/math-realize-01.typ"
-                           ( line 2 , column 18 )
-                           (FieldAccess (Ident (Identifier "alt")) (Ident (Identifier "phi")))
-                       ]
-                   , Code
-                       "test/typ/bugs/math-realize-01.typ"
-                       ( line 2 , column 27 )
-                       (Ident (Identifier "union"))
-                   , MAttach Nothing (Just (Text "2")) (Text "y")
-                   , Text "0"
-                   ]
-               ]
-           ])
-    , MAttach Nothing (Just (Text "2")) (Text "z")
-    ]
-, SoftBreak
-, Text "Hello"
-, Space
-, Code
-    "test/typ/bugs/math-realize-01.typ"
-    ( line 3 , column 8 )
-    (FuncCall
-       (Ident (Identifier "hide"))
-       [ BlockArg [ Text "there" , Space , Equation False [ Text "x" ] ]
-       ])
-, SoftBreak
-, Text "and"
-, Space
-, Code
-    "test/typ/bugs/math-realize-01.typ"
-    ( line 4 , column 6 )
-    (FuncCall
-       (Ident (Identifier "hide"))
-       [ BlockArg
-           [ Equation
-               True
-               [ MGroup
-                   Nothing
-                   Nothing
-                   [ Text "f" , MGroup (Just "(") (Just ")") [ Text "x" ] ]
-               , Code
-                   "test/typ/bugs/math-realize-01.typ"
-                   ( line 4 , column 18 )
-                   (FieldAccess
-                      (Ident (Identifier "eq")) (Ident (Identifier "colon")))
-               , MAttach Nothing (Just (Text "2")) (Text "x")
-               ]
-           ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { math.attach(b: none, 
-                                                   base: text(body: [x]), 
-                                                   t: text(body: [2])), 
-                                       hide(body: math.equation(block: false, 
-                                                                body: { math.lr(body: ({ [(], 
-                                                                                         text(body: [≥]), 
-                                                                                         text(body: [ϕ]), 
-                                                                                         [)] })), 
-                                                                        text(body: [∪]), 
-                                                                        math.attach(b: none, 
-                                                                                    base: text(body: [y]), 
-                                                                                    t: text(body: [2])), 
-                                                                        text(body: [0]) }, 
-                                                                numbering: none)), 
-                                       math.attach(b: none, 
-                                                   base: text(body: [z]), 
-                                                   t: text(body: [2])) }, 
-                               numbering: none), 
-                 text(body: [
-Hello ]), 
-                 hide(body: { text(body: [there ]), 
-                              math.equation(block: false, 
-                                            body: text(body: [x]), 
-                                            numbering: none) }), 
-                 text(body: [
-and ]), 
-                 hide(body: math.equation(block: true, 
-                                          body: { text(body: [f]), 
-                                                  math.lr(body: ({ [(], 
-                                                                   text(body: [x]), 
-                                                                   [)] })), 
-                                                  text(body: [≔]), 
-                                                  math.attach(b: none, 
-                                                              base: text(body: [x]), 
-                                                              t: text(body: [2])) }, 
-                                          numbering: none)), 
-                 parbreak() })
diff --git a/test/out/bugs/math-realize-02.out b/test/out/bugs/math-realize-02.out
deleted file mode 100644
--- a/test/out/bugs/math-realize-02.out
+++ /dev/null
@@ -1,455 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/bugs/math-realize-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/bugs/math-realize-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/bugs/math-realize-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/bugs/math-realize-02.typ"
-    ( line 3 , column 2 )
-    (LetFunc
-       (Identifier "foo")
-       [ NormalParam (Identifier "v1") , NormalParam (Identifier "v2") ]
-       (Block
-          (CodeBlock
-             [ Block
-                 (Content
-                    [ Equation
-                        False
-                        [ Code
-                            "test/typ/bugs/math-realize-02.typ"
-                            ( line 6 , column 4 )
-                            (Ident (Identifier "v1"))
-                        , MAttach
-                            Nothing
-                            (Just (Text "2"))
-                            (Code
-                               "test/typ/bugs/math-realize-02.typ"
-                               ( line 6 , column 7 )
-                               (Ident (Identifier "v2")))
-                        ]
-                    ])
-             ])))
-, SoftBreak
-, Code
-    "test/typ/bugs/math-realize-02.typ"
-    ( line 8 , column 2 )
-    (LetFunc
-       (Identifier "bar")
-       [ NormalParam (Identifier "v1") , NormalParam (Identifier "v2") ]
-       (Block
-          (CodeBlock
-             [ Block
-                 (Content
-                    [ Equation
-                        True
-                        [ Code
-                            "test/typ/bugs/math-realize-02.typ"
-                            ( line 11 , column 5 )
-                            (Ident (Identifier "v1"))
-                        , MAttach
-                            Nothing
-                            (Just (Text "2"))
-                            (Code
-                               "test/typ/bugs/math-realize-02.typ"
-                               ( line 11 , column 8 )
-                               (Ident (Identifier "v2")))
-                        ]
-                    ])
-             ])))
-, SoftBreak
-, Code
-    "test/typ/bugs/math-realize-02.typ"
-    ( line 13 , column 2 )
-    (LetFunc
-       (Identifier "baz")
-       [ SinkParam (Just (Identifier "sink")) ]
-       (Block
-          (CodeBlock
-             [ FuncCall
-                 (FieldAccess
-                    (Ident (Identifier "join"))
-                    (FuncCall
-                       (FieldAccess
-                          (Ident (Identifier "map"))
-                          (FuncCall
-                             (FieldAccess
-                                (Ident (Identifier "pos")) (Ident (Identifier "sink")))
-                             []))
-                       [ NormalArg
-                           (FuncExpr
-                              [ NormalParam (Identifier "x") ]
-                              (Block
-                                 (Content
-                                    [ Equation
-                                        False
-                                        [ Code
-                                            "test/typ/bugs/math-realize-02.typ"
-                                            ( line 15 , column 24 )
-                                            (FuncCall
-                                               (Ident (Identifier "hat"))
-                                               [ NormalArg (Ident (Identifier "x")) ])
-                                        ]
-                                    ])))
-                       ]))
-                 [ NormalArg
-                     (FieldAccess (Ident (Identifier "and")) (Ident (Identifier "sym")))
-                 ]
-             ])))
-, ParBreak
-, Text "Inline"
-, Space
-, Equation
-    False
-    [ Text "2"
-    , Code
-        "test/typ/bugs/math-realize-02.typ"
-        ( line 18 , column 11 )
-        (FuncCall
-           (Ident (Identifier "foo"))
-           [ BlockArg
-               [ Code
-                   "test/typ/bugs/math-realize-02.typ"
-                   ( line 18 , column 15 )
-                   (Ident (Identifier "alpha"))
-               ]
-           , BlockArg
-               [ MGroup
-                   (Just "(")
-                   (Just ")")
-                   [ Text "M"
-                   , Text "+"
-                   , Code
-                       "test/typ/bugs/math-realize-02.typ"
-                       ( line 18 , column 25 )
-                       (FuncCall
-                          (Ident (Identifier "foo"))
-                          [ BlockArg [ Text "a" ] , BlockArg [ Text "b" ] ])
-                   ]
-               ]
-           ])
-    ]
-, Text "."
-, ParBreak
-, Text "Inline"
-, Space
-, Equation
-    False
-    [ Text "2"
-    , Code
-        "test/typ/bugs/math-realize-02.typ"
-        ( line 20 , column 11 )
-        (FuncCall
-           (Ident (Identifier "bar"))
-           [ BlockArg
-               [ Code
-                   "test/typ/bugs/math-realize-02.typ"
-                   ( line 20 , column 15 )
-                   (Ident (Identifier "alpha"))
-               ]
-           , BlockArg
-               [ MGroup
-                   (Just "(")
-                   (Just ")")
-                   [ Text "M"
-                   , Text "+"
-                   , Code
-                       "test/typ/bugs/math-realize-02.typ"
-                       ( line 20 , column 25 )
-                       (FuncCall
-                          (Ident (Identifier "foo"))
-                          [ BlockArg [ Text "a" ] , BlockArg [ Text "b" ] ])
-                   ]
-               ]
-           ])
-    ]
-, Text "."
-, ParBreak
-, Text "Inline"
-, Space
-, Equation
-    False
-    [ Text "2"
-    , Code
-        "test/typ/bugs/math-realize-02.typ"
-        ( line 22 , column 11 )
-        (FuncCall
-           (Ident (Identifier "baz"))
-           [ BlockArg [ Text "x" ]
-           , BlockArg [ Text "y" ]
-           , BlockArg
-               [ Code
-                   "test/typ/bugs/math-realize-02.typ"
-                   ( line 22 , column 19 )
-                   (FuncCall
-                      (Ident (Identifier "baz"))
-                      [ BlockArg [ Text "u" ] , BlockArg [ Text "v" ] ])
-               ]
-           ])
-    ]
-, Text "."
-, ParBreak
-, Equation
-    True
-    [ Text "2"
-    , Code
-        "test/typ/bugs/math-realize-02.typ"
-        ( line 24 , column 5 )
-        (FuncCall
-           (Ident (Identifier "foo"))
-           [ BlockArg
-               [ Code
-                   "test/typ/bugs/math-realize-02.typ"
-                   ( line 24 , column 9 )
-                   (Ident (Identifier "alpha"))
-               ]
-           , BlockArg
-               [ MGroup
-                   (Just "(")
-                   (Just ")")
-                   [ Text "M"
-                   , Text "+"
-                   , Code
-                       "test/typ/bugs/math-realize-02.typ"
-                       ( line 24 , column 19 )
-                       (FuncCall
-                          (Ident (Identifier "foo"))
-                          [ BlockArg [ Text "a" ] , BlockArg [ Text "b" ] ])
-                   ]
-               ]
-           ])
-    ]
-, SoftBreak
-, Equation
-    True
-    [ Text "2"
-    , Code
-        "test/typ/bugs/math-realize-02.typ"
-        ( line 25 , column 5 )
-        (FuncCall
-           (Ident (Identifier "bar"))
-           [ BlockArg
-               [ Code
-                   "test/typ/bugs/math-realize-02.typ"
-                   ( line 25 , column 9 )
-                   (Ident (Identifier "alpha"))
-               ]
-           , BlockArg
-               [ MGroup
-                   (Just "(")
-                   (Just ")")
-                   [ Text "M"
-                   , Text "+"
-                   , Code
-                       "test/typ/bugs/math-realize-02.typ"
-                       ( line 25 , column 19 )
-                       (FuncCall
-                          (Ident (Identifier "foo"))
-                          [ BlockArg [ Text "a" ] , BlockArg [ Text "b" ] ])
-                   ]
-               ]
-           ])
-    ]
-, SoftBreak
-, Equation
-    True
-    [ Text "2"
-    , Code
-        "test/typ/bugs/math-realize-02.typ"
-        ( line 26 , column 5 )
-        (FuncCall
-           (Ident (Identifier "baz"))
-           [ BlockArg [ Text "x" ]
-           , BlockArg [ Text "y" ]
-           , BlockArg
-               [ Code
-                   "test/typ/bugs/math-realize-02.typ"
-                   ( line 26 , column 13 )
-                   (FuncCall
-                      (Ident (Identifier "baz"))
-                      [ BlockArg [ Text "u" ] , BlockArg [ Text "v" ] ])
-               ]
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [Inline ]), 
-                 math.equation(block: false, 
-                               body: { text(body: [2]), 
-                                       math.equation(block: false, 
-                                                     body: { text(body: [α]), 
-                                                             math.attach(b: none, 
-                                                                         base: math.lr(body: ({ [(], 
-                                                                                                text(body: [M]), 
-                                                                                                text(body: [+]), 
-                                                                                                math.equation(block: false, 
-                                                                                                              body: { text(body: [a]), 
-                                                                                                                      math.attach(b: none, 
-                                                                                                                                  base: text(body: [b]), 
-                                                                                                                                  t: text(body: [2])) }, 
-                                                                                                              numbering: none), 
-                                                                                                [)] })), 
-                                                                         t: text(body: [2])) }, 
-                                                     numbering: none) }, 
-                               numbering: none), 
-                 text(body: [.]), 
-                 parbreak(), 
-                 text(body: [Inline ]), 
-                 math.equation(block: false, 
-                               body: { text(body: [2]), 
-                                       math.equation(block: true, 
-                                                     body: { text(body: [α]), 
-                                                             math.attach(b: none, 
-                                                                         base: math.lr(body: ({ [(], 
-                                                                                                text(body: [M]), 
-                                                                                                text(body: [+]), 
-                                                                                                math.equation(block: false, 
-                                                                                                              body: { text(body: [a]), 
-                                                                                                                      math.attach(b: none, 
-                                                                                                                                  base: text(body: [b]), 
-                                                                                                                                  t: text(body: [2])) }, 
-                                                                                                              numbering: none), 
-                                                                                                [)] })), 
-                                                                         t: text(body: [2])) }, 
-                                                     numbering: none) }, 
-                               numbering: none), 
-                 text(body: [.]), 
-                 parbreak(), 
-                 text(body: [Inline ]), 
-                 math.equation(block: false, 
-                               body: { text(body: [2]), 
-                                       math.equation(block: false, 
-                                                     body: math.accent(accent: ^, 
-                                                                       base: text(body: [x])), 
-                                                     numbering: none), 
-                                       text(body: [∧]), 
-                                       math.equation(block: false, 
-                                                     body: math.accent(accent: ^, 
-                                                                       base: text(body: [y])), 
-                                                     numbering: none), 
-                                       text(body: [∧]), 
-                                       math.equation(block: false, 
-                                                     body: math.accent(accent: ^, 
-                                                                       base: { math.equation(block: false, 
-                                                                                             body: math.accent(accent: ^, 
-                                                                                                               base: text(body: [u])), 
-                                                                                             numbering: none), 
-                                                                               text(body: [∧]), 
-                                                                               math.equation(block: false, 
-                                                                                             body: math.accent(accent: ^, 
-                                                                                                               base: text(body: [v])), 
-                                                                                             numbering: none) }), 
-                                                     numbering: none) }, 
-                               numbering: none), 
-                 text(body: [.]), 
-                 parbreak(), 
-                 math.equation(block: true, 
-                               body: { text(body: [2]), 
-                                       math.equation(block: false, 
-                                                     body: { text(body: [α]), 
-                                                             math.attach(b: none, 
-                                                                         base: math.lr(body: ({ [(], 
-                                                                                                text(body: [M]), 
-                                                                                                text(body: [+]), 
-                                                                                                math.equation(block: false, 
-                                                                                                              body: { text(body: [a]), 
-                                                                                                                      math.attach(b: none, 
-                                                                                                                                  base: text(body: [b]), 
-                                                                                                                                  t: text(body: [2])) }, 
-                                                                                                              numbering: none), 
-                                                                                                [)] })), 
-                                                                         t: text(body: [2])) }, 
-                                                     numbering: none) }, 
-                               numbering: none), 
-                 text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [2]), 
-                                       math.equation(block: true, 
-                                                     body: { text(body: [α]), 
-                                                             math.attach(b: none, 
-                                                                         base: math.lr(body: ({ [(], 
-                                                                                                text(body: [M]), 
-                                                                                                text(body: [+]), 
-                                                                                                math.equation(block: false, 
-                                                                                                              body: { text(body: [a]), 
-                                                                                                                      math.attach(b: none, 
-                                                                                                                                  base: text(body: [b]), 
-                                                                                                                                  t: text(body: [2])) }, 
-                                                                                                              numbering: none), 
-                                                                                                [)] })), 
-                                                                         t: text(body: [2])) }, 
-                                                     numbering: none) }, 
-                               numbering: none), 
-                 text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [2]), 
-                                       math.equation(block: false, 
-                                                     body: math.accent(accent: ^, 
-                                                                       base: text(body: [x])), 
-                                                     numbering: none), 
-                                       text(body: [∧]), 
-                                       math.equation(block: false, 
-                                                     body: math.accent(accent: ^, 
-                                                                       base: text(body: [y])), 
-                                                     numbering: none), 
-                                       text(body: [∧]), 
-                                       math.equation(block: false, 
-                                                     body: math.accent(accent: ^, 
-                                                                       base: { math.equation(block: false, 
-                                                                                             body: math.accent(accent: ^, 
-                                                                                                               base: text(body: [u])), 
-                                                                                             numbering: none), 
-                                                                               text(body: [∧]), 
-                                                                               math.equation(block: false, 
-                                                                                             body: math.accent(accent: ^, 
-                                                                                                               base: text(body: [v])), 
-                                                                                             numbering: none) }), 
-                                                     numbering: none) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/bugs/parameter-pattern-00.out b/test/out/bugs/parameter-pattern-00.out
deleted file mode 100644
--- a/test/out/bugs/parameter-pattern-00.out
+++ /dev/null
@@ -1,86 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/bugs/parameter-pattern-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/bugs/parameter-pattern-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/bugs/parameter-pattern-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/bugs/parameter-pattern-00.typ"
-    ( line 2 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "map"))
-                 (FuncCall
-                    (FieldAccess
-                       (Ident (Identifier "zip"))
-                       (Array
-                          [ Reg (Literal (Int 1))
-                          , Reg (Literal (Int 2))
-                          , Reg (Literal (Int 3))
-                          ]))
-                    [ NormalArg
-                        (Array
-                           [ Reg (Literal (Int 1))
-                           , Reg (Literal (Int 2))
-                           , Reg (Literal (Int 3))
-                           ])
-                    ]))
-              [ NormalArg
-                  (FuncExpr
-                     [ DestructuringParam
-                         [ Simple Nothing , Simple (Just (Identifier "x")) ]
-                     ]
-                     (Ident (Identifier "x")))
-              ])
-       , NormalArg
-           (Array
-              [ Reg (Literal (Int 1))
-              , Reg (Literal (Int 2))
-              , Reg (Literal (Int 3))
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/bugs/place-base-00.out b/test/out/bugs/place-base-00.out
deleted file mode 100644
--- a/test/out/bugs/place-base-00.out
+++ /dev/null
@@ -1,108 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/bugs/place-base-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/bugs/place-base-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/bugs/place-base-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/bugs/place-base-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 80.0 Pt))
-       , KeyValArg (Identifier "margin") (Literal (Numeric 0.0 Pt))
-       ])
-, SoftBreak
-, Code
-    "test/typ/bugs/place-base-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "place"))
-       [ NormalArg (Ident (Identifier "right"))
-       , KeyValArg
-           (Identifier "dx") (Negated (Literal (Numeric 70.0 Percent)))
-       , KeyValArg (Identifier "dy") (Literal (Numeric 20.0 Percent))
-       , NormalArg (Block (Content [ Text "First" ]))
-       ])
-, SoftBreak
-, Code
-    "test/typ/bugs/place-base-00.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "place"))
-       [ NormalArg (Ident (Identifier "left"))
-       , KeyValArg (Identifier "dx") (Literal (Numeric 20.0 Percent))
-       , KeyValArg (Identifier "dy") (Literal (Numeric 60.0 Percent))
-       , NormalArg (Block (Content [ Text "Second" ]))
-       ])
-, SoftBreak
-, Code
-    "test/typ/bugs/place-base-00.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "place"))
-       [ NormalArg
-           (Plus (Ident (Identifier "center")) (Ident (Identifier "horizon")))
-       , KeyValArg (Identifier "dx") (Literal (Numeric 25.0 Percent))
-       , KeyValArg (Identifier "dy") (Literal (Numeric 25.0 Percent))
-       , NormalArg (Block (Content [ Text "Third" ]))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 place(alignment: right, 
-                       body: text(body: [First]), 
-                       dx: -70%, 
-                       dy: 20%), 
-                 text(body: [
-]), 
-                 place(alignment: left, 
-                       body: text(body: [Second]), 
-                       dx: 20%, 
-                       dy: 60%), 
-                 text(body: [
-]), 
-                 place(alignment: Axes(center, horizon), 
-                       body: text(body: [Third]), 
-                       dx: 25%, 
-                       dy: 25%), 
-                 parbreak() })
diff --git a/test/out/bugs/smartquotes-in-outline-00.out b/test/out/bugs/smartquotes-in-outline-00.out
deleted file mode 100644
--- a/test/out/bugs/smartquotes-in-outline-00.out
+++ /dev/null
@@ -1,81 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/bugs/smartquotes-in-outline-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/bugs/smartquotes-in-outline-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/bugs/smartquotes-in-outline-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/bugs/smartquotes-in-outline-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 15.0 Em)) ])
-, SoftBreak
-, Code
-    "test/typ/bugs/smartquotes-in-outline-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall (Ident (Identifier "outline")) [])
-, ParBreak
-, Heading
-    1
-    [ Quote '"'
-    , Text "This"
-    , Quote '"'
-    , Space
-    , Quote '"'
-    , Text "is"
-    , Quote '"'
-    , Space
-    , Quote '"'
-    , Text "a"
-    , Quote '"'
-    , Space
-    , Quote '"'
-    , Text "test"
-    , Quote '"'
-    ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 outline(), 
-                 parbreak(), 
-                 heading(body: text(body: [“This” “is” “a” “test”]), 
-                         level: 1) })
diff --git a/test/out/bugs/square-base-00.out b/test/out/bugs/square-base-00.out
deleted file mode 100644
--- a/test/out/bugs/square-base-00.out
+++ /dev/null
@@ -1,72 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/bugs/square-base-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/bugs/square-base-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/bugs/square-base-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/bugs/square-base-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 80.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/bugs/square-base-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "square"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 40.0 Percent))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg (Identifier "width") (Literal (Numeric 60.0 Percent))
-              , KeyValArg (Identifier "height") (Literal (Numeric 80.0 Percent))
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 square(body: rect(height: 80%, 
-                                   width: 60%), 
-                        width: 40%), 
-                 parbreak() })
diff --git a/test/out/coma-00.out b/test/out/coma-00.out
deleted file mode 100644
--- a/test/out/coma-00.out
+++ /dev/null
@@ -1,414 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/coma-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/coma-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/coma-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/coma-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 450.0 Pt))
-       , KeyValArg (Identifier "margin") (Literal (Numeric 1.0 Cm))
-       ])
-, ParBreak
-, Strong
-    [ Text "Technische"
-    , Space
-    , Text "Universit\228t"
-    , Space
-    , Text "Berlin"
-    ]
-, Space
-, Code
-    "test/typ/coma-00.typ"
-    ( line 4 , column 34 )
-    (FuncCall
-       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 1.0 Fr)) ])
-, Space
-, Strong
-    [ Text "WiSe" , Space , Text "2019" , Text "/" , Text "2020" ]
-, Space
-, HardBreak
-, Strong
-    [ Text "Fakult\228t"
-    , Space
-    , Text "II,"
-    , Space
-    , Text "Institut"
-    , Space
-    , Text "for"
-    , Space
-    , Text "Mathematik"
-    ]
-, Space
-, Code
-    "test/typ/coma-00.typ"
-    ( line 5 , column 41 )
-    (FuncCall
-       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 1.0 Fr)) ])
-, Space
-, Text "Woche"
-, Space
-, Text "3"
-, Space
-, HardBreak
-, Text "Sekretariat"
-, Space
-, Text "MA"
-, Space
-, HardBreak
-, Text "Dr"
-, Text "."
-, Space
-, Text "Max"
-, Space
-, Text "Mustermann"
-, Space
-, HardBreak
-, Text "Ola"
-, Space
-, Text "Nordmann,"
-, Space
-, Text "John"
-, Space
-, Text "Doe"
-, ParBreak
-, Code
-    "test/typ/coma-00.typ"
-    ( line 10 , column 2 )
-    (FuncCall
-       (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 3.0 Mm)) ])
-, SoftBreak
-, Code
-    "test/typ/coma-00.typ"
-    ( line 11 , column 2 )
-    (FuncCall
-       (Ident (Identifier "align"))
-       [ NormalArg (Ident (Identifier "center"))
-       , BlockArg
-           [ SoftBreak
-           , Code
-               "test/typ/coma-00.typ"
-               ( line 12 , column 4 )
-               (Set
-                  (Ident (Identifier "par"))
-                  [ KeyValArg (Identifier "leading") (Literal (Numeric 3.0 Mm)) ])
-           , SoftBreak
-           , Code
-               "test/typ/coma-00.typ"
-               ( line 13 , column 4 )
-               (FuncCall
-                  (Ident (Identifier "text"))
-                  [ NormalArg (Literal (Numeric 1.2 Em))
-                  , BlockArg
-                      [ Strong
-                          [ Text "3"
-                          , Text "."
-                          , Space
-                          , Text "\220bungsblatt"
-                          , Space
-                          , Text "Computerorientierte"
-                          , Space
-                          , Text "Mathematik"
-                          , Space
-                          , Text "II"
-                          ]
-                      ]
-                  ])
-           , Space
-           , HardBreak
-           , Strong
-               [ Text "Abgabe"
-               , Text ":"
-               , Space
-               , Text "03"
-               , Text "."
-               , Text "05"
-               , Text "."
-               , Text "2019"
-               ]
-           , Space
-           , Text "("
-           , Text "bis"
-           , Space
-           , Text "10"
-           , Text ":"
-           , Text "10"
-           , Space
-           , Text "Uhr"
-           , Space
-           , Text "in"
-           , Space
-           , Text "MA"
-           , Space
-           , Text "001)"
-           , Space
-           , HardBreak
-           , Strong
-               [ Text "Alle"
-               , Space
-               , Text "Antworten"
-               , Space
-               , Text "sind"
-               , Space
-               , Text "zu"
-               , Space
-               , Text "beweisen"
-               , Text "."
-               ]
-           , ParBreak
-           ]
-       ])
-, ParBreak
-, Strong [ Text "1" , Text "." , Space , Text "Aufgabe" ]
-, Space
-, Code
-    "test/typ/coma-00.typ"
-    ( line 18 , column 15 )
-    (FuncCall
-       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 1.0 Fr)) ])
-, Space
-, Text "("
-, Text "1"
-, Space
-, Text "+"
-, Space
-, Text "1"
-, Space
-, Text "+"
-, Space
-, Text "2"
-, Space
-, Text "Punkte)"
-, ParBreak
-, Text "Ein"
-, Space
-, Emph [ Text "Bin\228rbaum" ]
-, Space
-, Text "ist"
-, Space
-, Text "ein"
-, Space
-, Text "Wurzelbaum,"
-, Space
-, Text "in"
-, Space
-, Text "dem"
-, Space
-, Text "jeder"
-, Space
-, Text "Knoten"
-, Space
-, Text "\8804"
-, Space
-, Text "2"
-, Space
-, Text "Kinder"
-, Space
-, Text "hat"
-, Text "."
-, SoftBreak
-, Text "Die"
-, Space
-, Text "Tiefe"
-, Space
-, Text "eines"
-, Space
-, Text "Knotens"
-, Space
-, Emph [ Text "v" ]
-, Space
-, Text "ist"
-, Space
-, Text "die"
-, Space
-, Text "L\228nge"
-, Space
-, Text "des"
-, Space
-, Text "eindeutigen"
-, Space
-, Text "Weges"
-, Space
-, Text "von"
-, Space
-, Text "der"
-, Space
-, Text "Wurzel"
-, SoftBreak
-, Text "zu"
-, Space
-, Emph [ Text "v" ]
-, Text ","
-, Space
-, Text "und"
-, Space
-, Text "die"
-, Space
-, Text "H\246he"
-, Space
-, Text "von"
-, Space
-, Emph [ Text "v" ]
-, Space
-, Text "ist"
-, Space
-, Text "die"
-, Space
-, Text "L\228nge"
-, Space
-, Text "eines"
-, Space
-, Text "l\228ngsten"
-, Space
-, Text "("
-, Text "absteigenden)"
-, Space
-, Text "Weges"
-, SoftBreak
-, Text "von"
-, Space
-, Emph [ Text "v" ]
-, Space
-, Text "zu"
-, Space
-, Text "einem"
-, Space
-, Text "Blatt"
-, Text "."
-, Space
-, Text "Die"
-, Space
-, Text "H\246he"
-, Space
-, Text "des"
-, Space
-, Text "Baumes"
-, Space
-, Text "ist"
-, Space
-, Text "die"
-, Space
-, Text "H\246he"
-, Space
-, Text "der"
-, Space
-, Text "Wurzel"
-, Text "."
-, ParBreak
-, Code
-    "test/typ/coma-00.typ"
-    ( line 25 , column 2 )
-    (FuncCall
-       (Ident (Identifier "align"))
-       [ NormalArg (Ident (Identifier "center"))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "image"))
-              [ NormalArg (Literal (String "/graph.png"))
-              , KeyValArg (Identifier "width") (Literal (Numeric 75.0 Percent))
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 strong(body: text(body: [Technische Universität Berlin])), 
-                 text(body: [ ]), 
-                 h(amount: 1.0fr), 
-                 text(body: [ ]), 
-                 strong(body: text(body: [WiSe 2019/2020])), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 strong(body: text(body: [Fakultät II, Institut for Mathematik])), 
-                 text(body: [ ]), 
-                 h(amount: 1.0fr), 
-                 text(body: [ Woche 3 ]), 
-                 linebreak(), 
-                 text(body: [Sekretariat MA ]), 
-                 linebreak(), 
-                 text(body: [Dr. Max Mustermann ]), 
-                 linebreak(), 
-                 text(body: [Ola Nordmann, John Doe]), 
-                 parbreak(), 
-                 v(amount: 3.0mm), 
-                 text(body: [
-]), 
-                 align(alignment: center, 
-                       body: { text(body: [
-]), 
-                               text(body: [
-]), 
-                               text(body: strong(body: text(body: [3. Übungsblatt Computerorientierte Mathematik II])), 
-                                    size: 1.2em), 
-                               text(body: [ ]), 
-                               linebreak(), 
-                               strong(body: text(body: [Abgabe: 03.05.2019])), 
-                               text(body: [ (bis 10:10 Uhr in MA 001) ]), 
-                               linebreak(), 
-                               strong(body: text(body: [Alle Antworten sind zu beweisen.])), 
-                               parbreak() }), 
-                 parbreak(), 
-                 strong(body: text(body: [1. Aufgabe])), 
-                 text(body: [ ]), 
-                 h(amount: 1.0fr), 
-                 text(body: [ (1 + 1 + 2 Punkte)]), 
-                 parbreak(), 
-                 text(body: [Ein ]), 
-                 emph(body: text(body: [Binärbaum])), 
-                 text(body: [ ist ein Wurzelbaum, in dem jeder Knoten ≤ 2 Kinder hat.
-Die Tiefe eines Knotens ]), 
-                 emph(body: text(body: [v])), 
-                 text(body: [ ist die Länge des eindeutigen Weges von der Wurzel
-zu ]), 
-                 emph(body: text(body: [v])), 
-                 text(body: [, und die Höhe von ]), 
-                 emph(body: text(body: [v])), 
-                 text(body: [ ist die Länge eines längsten (absteigenden) Weges
-von ]), 
-                 emph(body: text(body: [v])), 
-                 text(body: [ zu einem Blatt. Die Höhe des Baumes ist die Höhe der Wurzel.]), 
-                 parbreak(), 
-                 align(alignment: center, 
-                       body: image(path: "/graph.png", 
-                                   width: 75%)), 
-                 parbreak() })
diff --git a/test/out/compiler/array-00.out b/test/out/compiler/array-00.out
deleted file mode 100644
--- a/test/out/compiler/array-00.out
+++ /dev/null
@@ -1,101 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/array-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/array-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/array-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, SoftBreak
-, Code
-    "test/typ/compiler/array-00.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 150.0 Pt)) ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/array-00.typ" ( line 7 , column 2 ) (Array [])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/array-00.typ"
-    ( line 10 , column 2 )
-    (Literal (Int 1))
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/array-00.typ"
-    ( line 13 , column 2 )
-    (Array [ Reg (Negated (Literal (Int 1))) ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/array-00.typ"
-    ( line 16 , column 2 )
-    (Array
-       [ Reg (Literal (Boolean True)) , Reg (Literal (Boolean False)) ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/array-00.typ"
-    ( line 19 , column 2 )
-    (Array
-       [ Reg (Literal (String "1"))
-       , Reg
-           (FuncCall
-              (Ident (Identifier "rgb")) [ NormalArg (Literal (String "002")) ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [()]), 
-                 parbreak(), 
-                 text(body: [1]), 
-                 parbreak(), 
-                 text(body: [(-1)]), 
-                 parbreak(), 
-                 text(body: [(true, false)]), 
-                 parbreak(), 
-                 text(body: [("1", rgb(0%,0%,0%,100%))]), 
-                 parbreak() })
diff --git a/test/out/compiler/array-01.out b/test/out/compiler/array-01.out
deleted file mode 100644
--- a/test/out/compiler/array-01.out
+++ /dev/null
@@ -1,79 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/array-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/array-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/array-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/array-01.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall (FieldAccess (Ident (Identifier "len")) (Array [])) [])
-       , NormalArg (Literal (Int 0))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/array-01.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "len"))
-                 (Array
-                    [ Reg (Literal (String "A"))
-                    , Reg (Literal (String "B"))
-                    , Reg (Literal (String "C"))
-                    ]))
-              [])
-       , NormalArg (Literal (Int 3))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/array-02.out b/test/out/compiler/array-02.out
deleted file mode 100644
--- a/test/out/compiler/array-02.out
+++ /dev/null
@@ -1,80 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/array-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/array-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/array-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/array-02.typ"
-    ( line 3 , column 2 )
-    (Block
-       (CodeBlock
-          [ Let
-              (BasicBind (Just (Identifier "array")))
-              (Array [ Reg (Literal (Int 1)) , Reg (Literal (Int 2)) ])
-          , Assign
-              (FuncCall
-                 (FieldAccess
-                    (Ident (Identifier "at")) (Ident (Identifier "array")))
-                 [ NormalArg (Literal (Int 1)) ])
-              (Plus
-                 (FuncCall
-                    (FieldAccess
-                       (Ident (Identifier "at")) (Ident (Identifier "array")))
-                    [ NormalArg (Literal (Int 1)) ])
-                 (Plus
-                    (Literal (Int 5))
-                    (FuncCall
-                       (FieldAccess
-                          (Ident (Identifier "at")) (Ident (Identifier "array")))
-                       [ NormalArg (Literal (Int 0)) ])))
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg (Ident (Identifier "array"))
-              , NormalArg
-                  (Array [ Reg (Literal (Int 1)) , Reg (Literal (Int 8)) ])
-              ]
-          ]))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/array-03.out b/test/out/compiler/array-03.out
deleted file mode 100644
--- a/test/out/compiler/array-03.out
+++ /dev/null
@@ -1,89 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/array-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/array-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/array-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/array-03.typ"
-    ( line 3 , column 2 )
-    (Block
-       (CodeBlock
-          [ Let
-              (BasicBind (Just (Identifier "array")))
-              (Array
-                 [ Reg (Literal (Int 1))
-                 , Reg (Literal (Int 2))
-                 , Reg (Literal (Int 3))
-                 ])
-          , Assign
-              (FuncCall
-                 (FieldAccess
-                    (Ident (Identifier "first")) (Ident (Identifier "array")))
-                 [])
-              (Literal (Int 7))
-          , Assign
-              (FuncCall
-                 (FieldAccess
-                    (Ident (Identifier "at")) (Ident (Identifier "array")))
-                 [ NormalArg (Literal (Int 1)) ])
-              (Times
-                 (FuncCall
-                    (FieldAccess
-                       (Ident (Identifier "at")) (Ident (Identifier "array")))
-                    [ NormalArg (Literal (Int 1)) ])
-                 (Literal (Int 8)))
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg (Ident (Identifier "array"))
-              , NormalArg
-                  (Array
-                     [ Reg (Literal (Int 7))
-                     , Reg (Literal (Int 16))
-                     , Reg (Literal (Int 3))
-                     ])
-              ]
-          ]))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/array-04.out b/test/out/compiler/array-04.out
deleted file mode 100644
--- a/test/out/compiler/array-04.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/array-05.out b/test/out/compiler/array-05.out
deleted file mode 100644
--- a/test/out/compiler/array-05.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/array-06.out b/test/out/compiler/array-06.out
deleted file mode 100644
--- a/test/out/compiler/array-06.out
+++ /dev/null
@@ -1,91 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/array-06.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/array-06.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/array-06.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/array-06.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "at"))
-                 (Array
-                    [ Reg (Literal (Int 1))
-                    , Reg (Literal (Int 2))
-                    , Reg (Literal (Int 3))
-                    ]))
-              [ NormalArg (Literal (Int 2))
-              , KeyValArg (Identifier "default") (Literal (Int 5))
-              ])
-       , NormalArg (Literal (Int 3))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/array-06.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "at"))
-                 (Array
-                    [ Reg (Literal (Int 1))
-                    , Reg (Literal (Int 2))
-                    , Reg (Literal (Int 3))
-                    ]))
-              [ NormalArg (Literal (Int 3))
-              , KeyValArg (Identifier "default") (Literal (Int 5))
-              ])
-       , NormalArg (Literal (Int 5))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/array-07.out b/test/out/compiler/array-07.out
deleted file mode 100644
--- a/test/out/compiler/array-07.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/array-08.out b/test/out/compiler/array-08.out
deleted file mode 100644
--- a/test/out/compiler/array-08.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/array-09.out b/test/out/compiler/array-09.out
deleted file mode 100644
--- a/test/out/compiler/array-09.out
+++ /dev/null
@@ -1,112 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/array-09.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/array-09.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/array-09.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/array-09.typ"
-    ( line 3 , column 2 )
-    (Block
-       (CodeBlock
-          [ Let
-              (BasicBind (Just (Identifier "array")))
-              (Array
-                 [ Reg (Literal (Int 1))
-                 , Reg (Literal (Int 2))
-                 , Reg (Literal (Int 3))
-                 , Reg (Literal (Int 4))
-                 ])
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg
-                  (FuncCall
-                     (FieldAccess
-                        (Ident (Identifier "at")) (Ident (Identifier "array")))
-                     [ NormalArg (Literal (Int 0)) ])
-              , NormalArg (Literal (Int 1))
-              ]
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg
-                  (FuncCall
-                     (FieldAccess
-                        (Ident (Identifier "at")) (Ident (Identifier "array")))
-                     [ NormalArg (Negated (Literal (Int 1))) ])
-              , NormalArg (Literal (Int 4))
-              ]
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg
-                  (FuncCall
-                     (FieldAccess
-                        (Ident (Identifier "at")) (Ident (Identifier "array")))
-                     [ NormalArg (Negated (Literal (Int 2))) ])
-              , NormalArg (Literal (Int 3))
-              ]
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg
-                  (FuncCall
-                     (FieldAccess
-                        (Ident (Identifier "at")) (Ident (Identifier "array")))
-                     [ NormalArg (Negated (Literal (Int 3))) ])
-              , NormalArg (Literal (Int 2))
-              ]
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg
-                  (FuncCall
-                     (FieldAccess
-                        (Ident (Identifier "at")) (Ident (Identifier "array")))
-                     [ NormalArg (Negated (Literal (Int 4))) ])
-              , NormalArg (Literal (Int 1))
-              ]
-          ]))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/array-10.out b/test/out/compiler/array-10.out
deleted file mode 100644
--- a/test/out/compiler/array-10.out
+++ /dev/null
@@ -1,119 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/array-10.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/array-10.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/array-10.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/array-10.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "first")) (Array [ Reg (Literal (Int 1)) ]))
-              [])
-       , NormalArg (Literal (Int 1))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/array-10.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "last")) (Array [ Reg (Literal (Int 2)) ]))
-              [])
-       , NormalArg (Literal (Int 2))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/array-10.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "first"))
-                 (Array
-                    [ Reg (Literal (Int 1))
-                    , Reg (Literal (Int 2))
-                    , Reg (Literal (Int 3))
-                    ]))
-              [])
-       , NormalArg (Literal (Int 1))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/array-10.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "last"))
-                 (Array
-                    [ Reg (Literal (Int 1))
-                    , Reg (Literal (Int 2))
-                    , Reg (Literal (Int 3))
-                    ]))
-              [])
-       , NormalArg (Literal (Int 3))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/array-11.out b/test/out/compiler/array-11.out
deleted file mode 100644
--- a/test/out/compiler/array-11.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/array-12.out b/test/out/compiler/array-12.out
deleted file mode 100644
--- a/test/out/compiler/array-12.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/array-13.out b/test/out/compiler/array-13.out
deleted file mode 100644
--- a/test/out/compiler/array-13.out
+++ /dev/null
@@ -1,118 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/array-13.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/array-13.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/array-13.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/array-13.typ"
-    ( line 3 , column 2 )
-    (Block
-       (CodeBlock
-          [ Let
-              (BasicBind (Just (Identifier "tasks")))
-              (Dict
-                 [ Reg
-                     ( Ident (Identifier "a")
-                     , Array
-                         [ Reg (Literal (Int 1))
-                         , Reg (Literal (Int 2))
-                         , Reg (Literal (Int 3))
-                         ]
-                     )
-                 , Reg
-                     ( Ident (Identifier "b")
-                     , Array
-                         [ Reg (Literal (Int 4))
-                         , Reg (Literal (Int 5))
-                         , Reg (Literal (Int 6))
-                         ]
-                     )
-                 ])
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg
-                  (FuncCall
-                     (FieldAccess
-                        (Ident (Identifier "pop"))
-                        (FuncCall
-                           (FieldAccess
-                              (Ident (Identifier "at")) (Ident (Identifier "tasks")))
-                           [ NormalArg (Literal (String "a")) ]))
-                     [])
-              , NormalArg (Literal (Int 3))
-              ]
-          , FuncCall
-              (FieldAccess
-                 (Ident (Identifier "push"))
-                 (FieldAccess
-                    (Ident (Identifier "b")) (Ident (Identifier "tasks"))))
-              [ NormalArg (Literal (Int 7)) ]
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg
-                  (FieldAccess (Ident (Identifier "a")) (Ident (Identifier "tasks")))
-              , NormalArg
-                  (Array [ Reg (Literal (Int 1)) , Reg (Literal (Int 2)) ])
-              ]
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg
-                  (FuncCall
-                     (FieldAccess
-                        (Ident (Identifier "at")) (Ident (Identifier "tasks")))
-                     [ NormalArg (Literal (String "b")) ])
-              , NormalArg
-                  (Array
-                     [ Reg (Literal (Int 4))
-                     , Reg (Literal (Int 5))
-                     , Reg (Literal (Int 6))
-                     , Reg (Literal (Int 7))
-                     ])
-              ]
-          ]))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/array-14.out b/test/out/compiler/array-14.out
deleted file mode 100644
--- a/test/out/compiler/array-14.out
+++ /dev/null
@@ -1,93 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/array-14.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/array-14.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/array-14.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/array-14.typ"
-    ( line 3 , column 2 )
-    (Block
-       (CodeBlock
-          [ Let
-              (BasicBind (Just (Identifier "array")))
-              (Array
-                 [ Reg (Literal (Int 0))
-                 , Reg (Literal (Int 1))
-                 , Reg (Literal (Int 2))
-                 , Reg (Literal (Int 4))
-                 , Reg (Literal (Int 5))
-                 ])
-          , FuncCall
-              (FieldAccess
-                 (Ident (Identifier "insert")) (Ident (Identifier "array")))
-              [ NormalArg (Literal (Int 3)) , NormalArg (Literal (Int 3)) ]
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg (Ident (Identifier "array"))
-              , NormalArg
-                  (FuncCall
-                     (Ident (Identifier "range")) [ NormalArg (Literal (Int 6)) ])
-              ]
-          , FuncCall
-              (FieldAccess
-                 (Ident (Identifier "remove")) (Ident (Identifier "array")))
-              [ NormalArg (Literal (Int 1)) ]
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg (Ident (Identifier "array"))
-              , NormalArg
-                  (Array
-                     [ Reg (Literal (Int 0))
-                     , Reg (Literal (Int 2))
-                     , Reg (Literal (Int 3))
-                     , Reg (Literal (Int 4))
-                     , Reg (Literal (Int 5))
-                     ])
-              ]
-          ]))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [1]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/array-15.out b/test/out/compiler/array-15.out
deleted file mode 100644
--- a/test/out/compiler/array-15.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/array-16.out b/test/out/compiler/array-16.out
deleted file mode 100644
--- a/test/out/compiler/array-16.out
+++ /dev/null
@@ -1,234 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/array-16.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/array-16.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/array-16.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/array-16.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "slice"))
-                 (Array
-                    [ Reg (Literal (Int 1))
-                    , Reg (Literal (Int 2))
-                    , Reg (Literal (Int 3))
-                    , Reg (Literal (Int 4))
-                    ]))
-              [ NormalArg (Literal (Int 2)) ])
-       , NormalArg
-           (Array [ Reg (Literal (Int 3)) , Reg (Literal (Int 4)) ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/array-16.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "slice"))
-                 (FuncCall
-                    (Ident (Identifier "range")) [ NormalArg (Literal (Int 10)) ]))
-              [ NormalArg (Literal (Int 2)) , NormalArg (Literal (Int 6)) ])
-       , NormalArg
-           (Array
-              [ Reg (Literal (Int 2))
-              , Reg (Literal (Int 3))
-              , Reg (Literal (Int 4))
-              , Reg (Literal (Int 5))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/array-16.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "slice"))
-                 (FuncCall
-                    (Ident (Identifier "range")) [ NormalArg (Literal (Int 10)) ]))
-              [ NormalArg (Literal (Int 4))
-              , KeyValArg (Identifier "count") (Literal (Int 3))
-              ])
-       , NormalArg
-           (Array
-              [ Reg (Literal (Int 4))
-              , Reg (Literal (Int 5))
-              , Reg (Literal (Int 6))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/array-16.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "slice"))
-                 (FuncCall
-                    (Ident (Identifier "range")) [ NormalArg (Literal (Int 10)) ]))
-              [ NormalArg (Negated (Literal (Int 5)))
-              , KeyValArg (Identifier "count") (Literal (Int 2))
-              ])
-       , NormalArg
-           (Array [ Reg (Literal (Int 5)) , Reg (Literal (Int 6)) ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/array-16.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "slice"))
-                 (Array
-                    [ Reg (Literal (Int 1))
-                    , Reg (Literal (Int 2))
-                    , Reg (Literal (Int 3))
-                    ]))
-              [ NormalArg (Literal (Int 2))
-              , NormalArg (Negated (Literal (Int 2)))
-              ])
-       , NormalArg (Array [])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/array-16.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "slice"))
-                 (Array
-                    [ Reg (Literal (Int 1))
-                    , Reg (Literal (Int 2))
-                    , Reg (Literal (Int 3))
-                    ]))
-              [ NormalArg (Negated (Literal (Int 2)))
-              , NormalArg (Literal (Int 2))
-              ])
-       , NormalArg (Array [ Reg (Literal (Int 2)) ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/array-16.typ"
-    ( line 9 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "slice"))
-                 (Array
-                    [ Reg (Literal (Int 1))
-                    , Reg (Literal (Int 2))
-                    , Reg (Literal (Int 3))
-                    ]))
-              [ NormalArg (Negated (Literal (Int 3)))
-              , NormalArg (Literal (Int 2))
-              ])
-       , NormalArg
-           (Array [ Reg (Literal (Int 1)) , Reg (Literal (Int 2)) ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/array-16.typ"
-    ( line 10 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "join"))
-                 (FuncCall
-                    (FieldAccess
-                       (Ident (Identifier "slice"))
-                       (FuncCall
-                          (FieldAccess
-                             (Ident (Identifier "split")) (Literal (String "ABCD")))
-                          [ NormalArg (Literal (String "")) ]))
-                    [ NormalArg (Literal (Int 1))
-                    , NormalArg (Negated (Literal (Int 1)))
-                    ]))
-              [ NormalArg (Literal (String "-")) ])
-       , NormalArg (Literal (String "A-B-C-D"))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/array-17.out b/test/out/compiler/array-17.out
deleted file mode 100644
--- a/test/out/compiler/array-17.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/array-18.out b/test/out/compiler/array-18.out
deleted file mode 100644
--- a/test/out/compiler/array-18.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/array-19.out b/test/out/compiler/array-19.out
deleted file mode 100644
--- a/test/out/compiler/array-19.out
+++ /dev/null
@@ -1,127 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/array-19.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/array-19.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/array-19.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/array-19.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "position"))
-                 (Array
-                    [ Reg (Literal (String "Hi"))
-                    , Reg (Literal (String "\10084\65039"))
-                    , Reg (Literal (String "Love"))
-                    ]))
-              [ NormalArg
-                  (FuncExpr
-                     [ NormalParam (Identifier "s") ]
-                     (Equals
-                        (Ident (Identifier "s")) (Literal (String "\10084\65039"))))
-              ])
-       , NormalArg (Literal (Int 1))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/array-19.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "position"))
-                 (Array
-                    [ Reg (Literal (String "Bye"))
-                    , Reg (Literal (String "\128152"))
-                    , Reg (Literal (String "Apart"))
-                    ]))
-              [ NormalArg
-                  (FuncExpr
-                     [ NormalParam (Identifier "s") ]
-                     (Equals
-                        (Ident (Identifier "s")) (Literal (String "\10084\65039"))))
-              ])
-       , NormalArg (Literal None)
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/array-19.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "position"))
-                 (Array
-                    [ Reg (Literal (String "A"))
-                    , Reg (Literal (String "B"))
-                    , Reg (Literal (String "CDEF"))
-                    , Reg (Literal (String "G"))
-                    ]))
-              [ NormalArg
-                  (FuncExpr
-                     [ NormalParam (Identifier "v") ]
-                     (GreaterThan
-                        (FuncCall
-                           (FieldAccess (Ident (Identifier "len")) (Ident (Identifier "v")))
-                           [])
-                        (Literal (Int 2))))
-              ])
-       , NormalArg (Literal (Int 2))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/array-20.out b/test/out/compiler/array-20.out
deleted file mode 100644
--- a/test/out/compiler/array-20.out
+++ /dev/null
@@ -1,121 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/array-20.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/array-20.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/array-20.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/array-20.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess (Ident (Identifier "filter")) (Array []))
-              [ NormalArg
-                  (FieldAccess
-                     (Ident (Identifier "even")) (Ident (Identifier "calc")))
-              ])
-       , NormalArg (Array [])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/array-20.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "filter"))
-                 (Array
-                    [ Reg (Literal (Int 1))
-                    , Reg (Literal (Int 2))
-                    , Reg (Literal (Int 3))
-                    , Reg (Literal (Int 4))
-                    ]))
-              [ NormalArg
-                  (FieldAccess
-                     (Ident (Identifier "even")) (Ident (Identifier "calc")))
-              ])
-       , NormalArg
-           (Array [ Reg (Literal (Int 2)) , Reg (Literal (Int 4)) ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/array-20.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "filter"))
-                 (Array
-                    [ Reg (Literal (Int 7))
-                    , Reg (Literal (Int 3))
-                    , Reg (Literal (Int 2))
-                    , Reg (Literal (Int 5))
-                    , Reg (Literal (Int 1))
-                    ]))
-              [ NormalArg
-                  (FuncExpr
-                     [ NormalParam (Identifier "x") ]
-                     (LessThan (Ident (Identifier "x")) (Literal (Int 5))))
-              ])
-       , NormalArg
-           (Array
-              [ Reg (Literal (Int 3))
-              , Reg (Literal (Int 2))
-              , Reg (Literal (Int 1))
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/array-21.out b/test/out/compiler/array-21.out
deleted file mode 100644
--- a/test/out/compiler/array-21.out
+++ /dev/null
@@ -1,86 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/array-21.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/array-21.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/array-21.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/array-21.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess (Ident (Identifier "map")) (Array []))
-              [ NormalArg
-                  (FuncExpr
-                     [ NormalParam (Identifier "x") ]
-                     (Times (Ident (Identifier "x")) (Literal (Int 2))))
-              ])
-       , NormalArg (Array [])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/array-21.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "map"))
-                 (Array [ Reg (Literal (Int 2)) , Reg (Literal (Int 3)) ]))
-              [ NormalArg
-                  (FuncExpr
-                     [ NormalParam (Identifier "x") ]
-                     (Times (Ident (Identifier "x")) (Literal (Int 2))))
-              ])
-       , NormalArg
-           (Array [ Reg (Literal (Int 4)) , Reg (Literal (Int 6)) ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/array-22.out b/test/out/compiler/array-22.out
deleted file mode 100644
--- a/test/out/compiler/array-22.out
+++ /dev/null
@@ -1,89 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/array-22.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/array-22.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/array-22.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/array-22.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess (Ident (Identifier "fold")) (Array []))
-              [ NormalArg (Literal (String "hi"))
-              , NormalArg (Ident (Identifier "grid"))
-              ])
-       , NormalArg (Literal (String "hi"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/array-22.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "fold"))
-                 (Array
-                    [ Reg (Literal (Int 1))
-                    , Reg (Literal (Int 2))
-                    , Reg (Literal (Int 3))
-                    , Reg (Literal (Int 4))
-                    ]))
-              [ NormalArg (Literal (Int 0))
-              , NormalArg
-                  (FuncExpr
-                     [ NormalParam (Identifier "s") , NormalParam (Identifier "x") ]
-                     (Plus (Ident (Identifier "s")) (Ident (Identifier "x"))))
-              ])
-       , NormalArg (Literal (Int 10))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/array-23.out b/test/out/compiler/array-23.out
deleted file mode 100644
--- a/test/out/compiler/array-23.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/array-24.out b/test/out/compiler/array-24.out
deleted file mode 100644
--- a/test/out/compiler/array-24.out
+++ /dev/null
@@ -1,96 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/array-24.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/array-24.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/array-24.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/array-24.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess (Ident (Identifier "sum")) (Array []))
-              [ KeyValArg (Identifier "default") (Literal (Int 0)) ])
-       , NormalArg (Literal (Int 0))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/array-24.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess (Ident (Identifier "sum")) (Array []))
-              [ KeyValArg (Identifier "default") (Block (Content [])) ])
-       , NormalArg (Block (Content []))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/array-24.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "sum"))
-                 (Array
-                    [ Reg (Literal (Int 1))
-                    , Reg (Literal (Int 2))
-                    , Reg (Literal (Int 3))
-                    ]))
-              [])
-       , NormalArg (Literal (Int 6))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/array-25.out b/test/out/compiler/array-25.out
deleted file mode 100644
--- a/test/out/compiler/array-25.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/array-26.out b/test/out/compiler/array-26.out
deleted file mode 100644
--- a/test/out/compiler/array-26.out
+++ /dev/null
@@ -1,115 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/array-26.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/array-26.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/array-26.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/array-26.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess (Ident (Identifier "product")) (Array []))
-              [ KeyValArg (Identifier "default") (Literal (Int 0)) ])
-       , NormalArg (Literal (Int 0))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/array-26.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess (Ident (Identifier "product")) (Array []))
-              [ KeyValArg (Identifier "default") (Block (Content [])) ])
-       , NormalArg (Block (Content []))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/array-26.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "product"))
-                 (Array
-                    [ Reg (Block (Content [ Text "ab" ])) , Reg (Literal (Int 3)) ]))
-              [])
-       , NormalArg
-           (Times (Block (Content [ Text "ab" ])) (Literal (Int 3)))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/array-26.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "product"))
-                 (Array
-                    [ Reg (Literal (Int 1))
-                    , Reg (Literal (Int 2))
-                    , Reg (Literal (Int 3))
-                    ]))
-              [])
-       , NormalArg (Literal (Int 6))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/array-27.out b/test/out/compiler/array-27.out
deleted file mode 100644
--- a/test/out/compiler/array-27.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/array-28.out b/test/out/compiler/array-28.out
deleted file mode 100644
--- a/test/out/compiler/array-28.out
+++ /dev/null
@@ -1,68 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/array-28.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/array-28.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/array-28.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/array-28.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "rev"))
-                 (FuncCall
-                    (Ident (Identifier "range")) [ NormalArg (Literal (Int 3)) ]))
-              [])
-       , NormalArg
-           (Array
-              [ Reg (Literal (Int 2))
-              , Reg (Literal (Int 1))
-              , Reg (Literal (Int 0))
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/array-29.out b/test/out/compiler/array-29.out
deleted file mode 100644
--- a/test/out/compiler/array-29.out
+++ /dev/null
@@ -1,120 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/array-29.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/array-29.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/array-29.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/array-29.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall (FieldAccess (Ident (Identifier "join")) (Array [])) [])
-       , NormalArg (Literal None)
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/array-29.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "join")) (Array [ Reg (Literal (Int 1)) ]))
-              [])
-       , NormalArg (Literal (Int 1))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/array-29.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "join"))
-                 (Array
-                    [ Reg (Literal (String "a"))
-                    , Reg (Literal (String "b"))
-                    , Reg (Literal (String "c"))
-                    ]))
-              [])
-       , NormalArg (Literal (String "abc"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/array-29.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (Plus
-              (Plus
-                 (Literal (String "("))
-                 (FuncCall
-                    (FieldAccess
-                       (Ident (Identifier "join"))
-                       (Array
-                          [ Reg (Literal (String "a"))
-                          , Reg (Literal (String "b"))
-                          , Reg (Literal (String "c"))
-                          ]))
-                    [ NormalArg (Literal (String ", ")) ]))
-              (Literal (String ")")))
-       , NormalArg (Literal (String "(a, b, c)"))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/array-30.out b/test/out/compiler/array-30.out
deleted file mode 100644
--- a/test/out/compiler/array-30.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/array-31.out b/test/out/compiler/array-31.out
deleted file mode 100644
--- a/test/out/compiler/array-31.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/array-32.out b/test/out/compiler/array-32.out
deleted file mode 100644
--- a/test/out/compiler/array-32.out
+++ /dev/null
@@ -1,72 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/array-32.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/array-32.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/array-32.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/compiler/array-32.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (FieldAccess
-          (Ident (Identifier "join"))
-          (Array
-             [ Reg (Block (Content [ Text "One" ]))
-             , Reg (Block (Content [ Text "Two" ]))
-             , Reg (Block (Content [ Text "Three" ]))
-             ]))
-       [ NormalArg (Block (Content [ Text "," , Space ]))
-       , KeyValArg
-           (Identifier "last")
-           (Block (Content [ Space , Text "and" , Space ]))
-       ])
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [One]), 
-                 text(body: [, ]), 
-                 text(body: [Two]), 
-                 text(body: [ and ]), 
-                 text(body: [Three]), 
-                 text(body: [.]), 
-                 parbreak() })
diff --git a/test/out/compiler/array-33.out b/test/out/compiler/array-33.out
deleted file mode 100644
--- a/test/out/compiler/array-33.out
+++ /dev/null
@@ -1,321 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/array-33.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/array-33.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/array-33.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/array-33.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess (Ident (Identifier "sorted")) (Array [])) [])
-       , NormalArg (Array [])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/array-33.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess (Ident (Identifier "sorted")) (Array []))
-              [ KeyValArg
-                  (Identifier "key")
-                  (FuncExpr
-                     [ NormalParam (Identifier "x") ] (Ident (Identifier "x")))
-              ])
-       , NormalArg (Array [])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/array-33.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "sorted"))
-                 (Times
-                    (Array
-                       [ Reg (Literal (Boolean True)) , Reg (Literal (Boolean False)) ])
-                    (Literal (Int 10))))
-              [])
-       , NormalArg
-           (Plus
-              (Times
-                 (Array [ Reg (Literal (Boolean False)) ]) (Literal (Int 10)))
-              (Times
-                 (Array [ Reg (Literal (Boolean True)) ]) (Literal (Int 10))))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/array-33.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "sorted"))
-                 (Array
-                    [ Reg (Literal (String "it"))
-                    , Reg (Literal (String "the"))
-                    , Reg (Literal (String "hi"))
-                    , Reg (Literal (String "text"))
-                    ]))
-              [])
-       , NormalArg
-           (Array
-              [ Reg (Literal (String "hi"))
-              , Reg (Literal (String "it"))
-              , Reg (Literal (String "text"))
-              , Reg (Literal (String "the"))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/array-33.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "sorted"))
-                 (Array
-                    [ Reg (Literal (String "I"))
-                    , Reg (Literal (String "the"))
-                    , Reg (Literal (String "hi"))
-                    , Reg (Literal (String "text"))
-                    ]))
-              [ KeyValArg
-                  (Identifier "key")
-                  (FuncExpr
-                     [ NormalParam (Identifier "x") ] (Ident (Identifier "x")))
-              ])
-       , NormalArg
-           (Array
-              [ Reg (Literal (String "I"))
-              , Reg (Literal (String "hi"))
-              , Reg (Literal (String "text"))
-              , Reg (Literal (String "the"))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/array-33.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "sorted"))
-                 (Array
-                    [ Reg (Literal (String "I"))
-                    , Reg (Literal (String "the"))
-                    , Reg (Literal (String "hi"))
-                    , Reg (Literal (String "text"))
-                    ]))
-              [ KeyValArg
-                  (Identifier "key")
-                  (FuncExpr
-                     [ NormalParam (Identifier "x") ]
-                     (FuncCall
-                        (FieldAccess (Ident (Identifier "len")) (Ident (Identifier "x")))
-                        []))
-              ])
-       , NormalArg
-           (Array
-              [ Reg (Literal (String "I"))
-              , Reg (Literal (String "hi"))
-              , Reg (Literal (String "the"))
-              , Reg (Literal (String "text"))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/array-33.typ"
-    ( line 9 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "sorted"))
-                 (Array
-                    [ Reg (Literal (Int 2))
-                    , Reg (Literal (Int 1))
-                    , Reg (Literal (Int 3))
-                    , Reg (Literal (Int 10))
-                    , Reg (Literal (Int 5))
-                    , Reg (Literal (Int 8))
-                    , Reg (Literal (Int 6))
-                    , Reg (Negated (Literal (Int 7)))
-                    , Reg (Literal (Int 2))
-                    ]))
-              [])
-       , NormalArg
-           (Array
-              [ Reg (Negated (Literal (Int 7)))
-              , Reg (Literal (Int 1))
-              , Reg (Literal (Int 2))
-              , Reg (Literal (Int 2))
-              , Reg (Literal (Int 3))
-              , Reg (Literal (Int 5))
-              , Reg (Literal (Int 6))
-              , Reg (Literal (Int 8))
-              , Reg (Literal (Int 10))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/array-33.typ"
-    ( line 10 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "sorted"))
-                 (Array
-                    [ Reg (Literal (Int 2))
-                    , Reg (Literal (Int 1))
-                    , Reg (Literal (Int 3))
-                    , Reg (Negated (Literal (Int 10)))
-                    , Reg (Negated (Literal (Int 5)))
-                    , Reg (Literal (Int 8))
-                    , Reg (Literal (Int 6))
-                    , Reg (Negated (Literal (Int 7)))
-                    , Reg (Literal (Int 2))
-                    ]))
-              [ KeyValArg
-                  (Identifier "key")
-                  (FuncExpr
-                     [ NormalParam (Identifier "x") ] (Ident (Identifier "x")))
-              ])
-       , NormalArg
-           (Array
-              [ Reg (Negated (Literal (Int 10)))
-              , Reg (Negated (Literal (Int 7)))
-              , Reg (Negated (Literal (Int 5)))
-              , Reg (Literal (Int 1))
-              , Reg (Literal (Int 2))
-              , Reg (Literal (Int 2))
-              , Reg (Literal (Int 3))
-              , Reg (Literal (Int 6))
-              , Reg (Literal (Int 8))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/array-33.typ"
-    ( line 11 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "sorted"))
-                 (Array
-                    [ Reg (Literal (Int 2))
-                    , Reg (Literal (Int 1))
-                    , Reg (Literal (Int 3))
-                    , Reg (Negated (Literal (Int 10)))
-                    , Reg (Negated (Literal (Int 5)))
-                    , Reg (Literal (Int 8))
-                    , Reg (Literal (Int 6))
-                    , Reg (Negated (Literal (Int 7)))
-                    , Reg (Literal (Int 2))
-                    ]))
-              [ KeyValArg
-                  (Identifier "key")
-                  (FuncExpr
-                     [ NormalParam (Identifier "x") ]
-                     (Times (Ident (Identifier "x")) (Ident (Identifier "x"))))
-              ])
-       , NormalArg
-           (Array
-              [ Reg (Literal (Int 1))
-              , Reg (Literal (Int 2))
-              , Reg (Literal (Int 2))
-              , Reg (Literal (Int 3))
-              , Reg (Negated (Literal (Int 5)))
-              , Reg (Literal (Int 6))
-              , Reg (Negated (Literal (Int 7)))
-              , Reg (Literal (Int 8))
-              , Reg (Negated (Literal (Int 10)))
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/array-34.out b/test/out/compiler/array-34.out
deleted file mode 100644
--- a/test/out/compiler/array-34.out
+++ /dev/null
@@ -1,202 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/array-34.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/array-34.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/array-34.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/array-34.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess (Ident (Identifier "zip")) (Array []))
-              [ NormalArg (Array []) ])
-       , NormalArg (Array [])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/array-34.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "zip")) (Array [ Reg (Literal (Int 1)) ]))
-              [ NormalArg (Array []) ])
-       , NormalArg (Array [])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/array-34.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "zip")) (Array [ Reg (Literal (Int 1)) ]))
-              [ NormalArg (Array [ Reg (Literal (Int 2)) ]) ])
-       , NormalArg
-           (Array
-              [ Reg (Array [ Reg (Literal (Int 1)) , Reg (Literal (Int 2)) ]) ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/array-34.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "zip"))
-                 (Array [ Reg (Literal (Int 1)) , Reg (Literal (Int 2)) ]))
-              [ NormalArg
-                  (Array [ Reg (Literal (Int 3)) , Reg (Literal (Int 4)) ])
-              ])
-       , NormalArg
-           (Array
-              [ Reg (Array [ Reg (Literal (Int 1)) , Reg (Literal (Int 3)) ])
-              , Reg (Array [ Reg (Literal (Int 2)) , Reg (Literal (Int 4)) ])
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/array-34.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "zip"))
-                 (Array
-                    [ Reg (Literal (Int 1))
-                    , Reg (Literal (Int 2))
-                    , Reg (Literal (Int 3))
-                    , Reg (Literal (Int 4))
-                    ]))
-              [ NormalArg
-                  (Array [ Reg (Literal (Int 5)) , Reg (Literal (Int 6)) ])
-              ])
-       , NormalArg
-           (Array
-              [ Reg (Array [ Reg (Literal (Int 1)) , Reg (Literal (Int 5)) ])
-              , Reg (Array [ Reg (Literal (Int 2)) , Reg (Literal (Int 6)) ])
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/array-34.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "zip"))
-                 (Array
-                    [ Reg (Array [ Reg (Literal (Int 1)) , Reg (Literal (Int 2)) ])
-                    , Reg (Literal (Int 3))
-                    ]))
-              [ NormalArg
-                  (Array [ Reg (Literal (Int 4)) , Reg (Literal (Int 5)) ])
-              ])
-       , NormalArg
-           (Array
-              [ Reg
-                  (Array
-                     [ Reg (Array [ Reg (Literal (Int 1)) , Reg (Literal (Int 2)) ])
-                     , Reg (Literal (Int 4))
-                     ])
-              , Reg (Array [ Reg (Literal (Int 3)) , Reg (Literal (Int 5)) ])
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/array-34.typ"
-    ( line 9 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "zip"))
-                 (Array [ Reg (Literal (Int 1)) , Reg (Literal (String "hi")) ]))
-              [ NormalArg
-                  (Array
-                     [ Reg (Literal (Boolean True)) , Reg (Literal (Boolean False)) ])
-              ])
-       , NormalArg
-           (Array
-              [ Reg
-                  (Array [ Reg (Literal (Int 1)) , Reg (Literal (Boolean True)) ])
-              , Reg
-                  (Array
-                     [ Reg (Literal (String "hi")) , Reg (Literal (Boolean False)) ])
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/array-35.out b/test/out/compiler/array-35.out
deleted file mode 100644
--- a/test/out/compiler/array-35.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/array-36.out b/test/out/compiler/array-36.out
deleted file mode 100644
--- a/test/out/compiler/array-36.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/array-37.out b/test/out/compiler/array-37.out
deleted file mode 100644
--- a/test/out/compiler/array-37.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/array-38.out b/test/out/compiler/array-38.out
deleted file mode 100644
--- a/test/out/compiler/array-38.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/bench-00.out b/test/out/compiler/bench-00.out
deleted file mode 100644
--- a/test/out/compiler/bench-00.out
+++ /dev/null
@@ -1,476 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/bench-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/bench-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/bench-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/bench-00.typ"
-    ( line 5 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 450.0 Pt))
-       , KeyValArg (Identifier "margin") (Literal (Numeric 1.0 Cm))
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/bench-00.typ"
-    ( line 8 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "city"))) (Literal (String "Berlin")))
-, ParBreak
-, Comment
-, Comment
-, Comment
-, Code
-    "test/typ/compiler/bench-00.typ"
-    ( line 13 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "university")))
-       (Block
-          (Content
-             [ Strong
-                 [ Text "Technische"
-                 , Space
-                 , Text "Universit\228t"
-                 , Space
-                 , Code
-                     "test/typ/compiler/bench-00.typ"
-                     ( line 13 , column 45 )
-                     (Ident (Identifier "city"))
-                 ]
-             ])))
-, SoftBreak
-, Code
-    "test/typ/compiler/bench-00.typ"
-    ( line 14 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "faculty")))
-       (Block
-          (Content
-             [ Strong
-                 [ Text "Fakult\228t"
-                 , Space
-                 , Text "II,"
-                 , Space
-                 , Text "Institut"
-                 , Space
-                 , Text "for"
-                 , Space
-                 , Text "Mathematik"
-                 ]
-             ])))
-, ParBreak
-, Comment
-, Comment
-, Comment
-, Code
-    "test/typ/compiler/bench-00.typ"
-    ( line 19 , column 2 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ BlockArg
-           [ SoftBreak
-           , Comment
-           , Space
-           , Code
-               "test/typ/compiler/bench-00.typ"
-               ( line 21 , column 4 )
-               (Ident (Identifier "university"))
-           , Space
-           , HardBreak
-           , Code
-               "test/typ/compiler/bench-00.typ"
-               ( line 22 , column 4 )
-               (Ident (Identifier "faculty"))
-           , Space
-           , HardBreak
-           , Text "Sekretariat"
-           , Space
-           , Text "MA"
-           , Space
-           , HardBreak
-           , Text "Dr"
-           , Text "."
-           , Space
-           , Text "Max"
-           , Space
-           , Text "Mustermann"
-           , Space
-           , HardBreak
-           , Text "Ola"
-           , Space
-           , Text "Nordmann,"
-           , Space
-           , Text "John"
-           , Space
-           , Text "Doe"
-           , ParBreak
-           ]
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/bench-00.typ"
-    ( line 27 , column 2 )
-    (FuncCall
-       (Ident (Identifier "align"))
-       [ NormalArg (Ident (Identifier "right"))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "box"))
-              [ BlockArg
-                  [ Strong
-                      [ Text "WiSe" , Space , Text "2019" , Text "/" , Text "2020" ]
-                  , Space
-                  , HardBreak
-                  , Text "Woche"
-                  , Space
-                  , Text "3"
-                  ]
-              ])
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/bench-00.typ"
-    ( line 30 , column 2 )
-    (FuncCall
-       (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 6.0 Mm)) ])
-, ParBreak
-, Comment
-, Comment
-, Code
-    "test/typ/compiler/bench-00.typ"
-    ( line 34 , column 2 )
-    (FuncCall
-       (Ident (Identifier "align"))
-       [ NormalArg (Ident (Identifier "center"))
-       , BlockArg
-           [ SoftBreak
-           , Comment
-           , Space
-           , Heading
-               4
-               [ Text "3"
-               , Text "."
-               , Space
-               , Text "\220bungsblatt"
-               , Space
-               , Text "Computerorientierte"
-               , Space
-               , Text "Mathematik"
-               , Space
-               , Text "II"
-               , Space
-               , Code
-                   "test/typ/compiler/bench-00.typ"
-                   ( line 36 , column 58 )
-                   (FuncCall
-                      (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 4.0 Mm)) ])
-               ]
-           , Strong
-               [ Text "Abgabe"
-               , Text ":"
-               , Space
-               , Text "03"
-               , Text "."
-               , Text "05"
-               , Text "."
-               , Text "2019"
-               ]
-           , Space
-           , Text "("
-           , Text "bis"
-           , Space
-           , Text "10"
-           , Text ":"
-           , Text "10"
-           , Space
-           , Text "Uhr"
-           , Space
-           , Text "in"
-           , Space
-           , Text "MA"
-           , Space
-           , Text "001)"
-           , Space
-           , Code
-               "test/typ/compiler/bench-00.typ"
-               ( line 37 , column 51 )
-               (FuncCall
-                  (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 4.0 Mm)) ])
-           , SoftBreak
-           , Strong
-               [ Text "Alle"
-               , Space
-               , Text "Antworten"
-               , Space
-               , Text "sind"
-               , Space
-               , Text "zu"
-               , Space
-               , Text "beweisen"
-               , Text "."
-               ]
-           , ParBreak
-           ]
-       ])
-, ParBreak
-, Strong [ Text "1" , Text "." , Space , Text "Aufgabe" ]
-, Space
-, Code
-    "test/typ/compiler/bench-00.typ"
-    ( line 41 , column 15 )
-    (FuncCall
-       (Ident (Identifier "align"))
-       [ NormalArg (Ident (Identifier "right"))
-       , BlockArg
-           [ Text "("
-           , Text "1"
-           , Space
-           , Text "+"
-           , Space
-           , Text "1"
-           , Space
-           , Text "+"
-           , Space
-           , Text "2"
-           , Space
-           , Text "Punkte)"
-           ]
-       ])
-, ParBreak
-, Text "Ein"
-, Space
-, Emph [ Text "Bin\228rbaum" ]
-, Space
-, Text "ist"
-, Space
-, Text "ein"
-, Space
-, Text "Wurzelbaum,"
-, Space
-, Text "in"
-, Space
-, Text "dem"
-, Space
-, Text "jeder"
-, Space
-, Text "Knoten"
-, Space
-, Text "\8804"
-, Space
-, Text "2"
-, Space
-, Text "Kinder"
-, Space
-, Text "hat"
-, Text "."
-, SoftBreak
-, Text "Die"
-, Space
-, Text "Tiefe"
-, Space
-, Text "eines"
-, Space
-, Text "Knotens"
-, Space
-, Emph [ Text "v" ]
-, Space
-, Text "ist"
-, Space
-, Text "die"
-, Space
-, Text "L\228nge"
-, Space
-, Text "des"
-, Space
-, Text "eindeutigen"
-, Space
-, Text "Weges"
-, Space
-, Text "von"
-, Space
-, Text "der"
-, Space
-, Text "Wurzel"
-, SoftBreak
-, Text "zu"
-, Space
-, Emph [ Text "v" ]
-, Text ","
-, Space
-, Text "und"
-, Space
-, Text "die"
-, Space
-, Text "H\246he"
-, Space
-, Text "von"
-, Space
-, Emph [ Text "v" ]
-, Space
-, Text "ist"
-, Space
-, Text "die"
-, Space
-, Text "L\228nge"
-, Space
-, Text "eines"
-, Space
-, Text "l\228ngsten"
-, Space
-, Text "("
-, Text "absteigenden)"
-, Space
-, Text "Weges"
-, SoftBreak
-, Text "von"
-, Space
-, Emph [ Text "v" ]
-, Space
-, Text "zu"
-, Space
-, Text "einem"
-, Space
-, Text "Blatt"
-, Text "."
-, Space
-, Text "Die"
-, Space
-, Text "H\246he"
-, Space
-, Text "des"
-, Space
-, Text "Baumes"
-, Space
-, Text "ist"
-, Space
-, Text "die"
-, Space
-, Text "H\246he"
-, Space
-, Text "der"
-, Space
-, Text "Wurzel"
-, Text "."
-, ParBreak
-, Code
-    "test/typ/compiler/bench-00.typ"
-    ( line 48 , column 2 )
-    (FuncCall
-       (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 6.0 Mm)) ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 box(body: { text(body: [
-]), 
-                             text(body: [ ]), 
-                             strong(body: { text(body: [Technische Universität ]), 
-                                            text(body: [Berlin]) }), 
-                             text(body: [ ]), 
-                             linebreak(), 
-                             strong(body: text(body: [Fakultät II, Institut for Mathematik])), 
-                             text(body: [ ]), 
-                             linebreak(), 
-                             text(body: [Sekretariat MA ]), 
-                             linebreak(), 
-                             text(body: [Dr. Max Mustermann ]), 
-                             linebreak(), 
-                             text(body: [Ola Nordmann, John Doe]), 
-                             parbreak() }), 
-                 text(body: [
-]), 
-                 align(alignment: right, 
-                       body: box(body: { strong(body: text(body: [WiSe 2019/2020])), 
-                                         text(body: [ ]), 
-                                         linebreak(), 
-                                         text(body: [Woche 3]) })), 
-                 parbreak(), 
-                 v(amount: 6.0mm), 
-                 parbreak(), 
-                 align(alignment: center, 
-                       body: { text(body: [
-]), 
-                               text(body: [ ]), 
-                               heading(body: { text(body: [3. Übungsblatt Computerorientierte Mathematik II ]), 
-                                               v(amount: 4.0mm) }, 
-                                       level: 4), 
-                               strong(body: text(body: [Abgabe: 03.05.2019])), 
-                               text(body: [ (bis 10:10 Uhr in MA 001) ]), 
-                               v(amount: 4.0mm), 
-                               text(body: [
-]), 
-                               strong(body: text(body: [Alle Antworten sind zu beweisen.])), 
-                               parbreak() }), 
-                 parbreak(), 
-                 strong(body: text(body: [1. Aufgabe])), 
-                 text(body: [ ]), 
-                 align(alignment: right, 
-                       body: text(body: [(1 + 1 + 2 Punkte)])), 
-                 parbreak(), 
-                 text(body: [Ein ]), 
-                 emph(body: text(body: [Binärbaum])), 
-                 text(body: [ ist ein Wurzelbaum, in dem jeder Knoten ≤ 2 Kinder hat.
-Die Tiefe eines Knotens ]), 
-                 emph(body: text(body: [v])), 
-                 text(body: [ ist die Länge des eindeutigen Weges von der Wurzel
-zu ]), 
-                 emph(body: text(body: [v])), 
-                 text(body: [, und die Höhe von ]), 
-                 emph(body: text(body: [v])), 
-                 text(body: [ ist die Länge eines längsten (absteigenden) Weges
-von ]), 
-                 emph(body: text(body: [v])), 
-                 text(body: [ zu einem Blatt. Die Höhe des Baumes ist die Höhe der Wurzel.]), 
-                 parbreak(), 
-                 v(amount: 6.0mm), 
-                 parbreak() })
diff --git a/test/out/compiler/block-00.out b/test/out/compiler/block-00.out
deleted file mode 100644
--- a/test/out/compiler/block-00.out
+++ /dev/null
@@ -1,102 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/block-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/block-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/block-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/block-00.typ"
-    ( line 5 , column 2 )
-    (Block
-       (CodeBlock
-          [ Let
-              (BasicBind (Just (Identifier "parts")))
-              (Array
-                 [ Reg (Literal (String "my fri"))
-                 , Reg (Literal (String "end."))
-                 ])
-          , Block (Content [ Text "Hello," , Space ])
-          , For
-              (BasicBind (Just (Identifier "s")))
-              (Ident (Identifier "parts"))
-              (Block
-                 (Content
-                    [ Code
-                        "test/typ/compiler/block-00.typ"
-                        ( line 8 , column 20 )
-                        (Ident (Identifier "s"))
-                    ]))
-          ]))
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/block-00.typ"
-    ( line 12 , column 2 )
-    (Block
-       (CodeBlock
-          [ Block (Content [ Text "How" ])
-          , If
-              [ ( Literal (Boolean True)
-                , Block (CodeBlock [ Literal (String " are") ])
-                )
-              ]
-          , Block (Content [ Space ])
-          , If
-              [ ( Literal (Boolean False) , Block (Content [ Text "Nope" ]) ) ]
-          , Plus (Block (Content [ Text "you" ])) (Literal (String "?"))
-          ]))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [Hello, ]), 
-                 text(body: [my fri]), 
-                 text(body: [end.]), 
-                 parbreak(), 
-                 text(body: [How]), 
-                 text(body: [ are]), 
-                 text(body: [ ]), 
-                 text(body: [you]), 
-                 text(body: [?]), 
-                 parbreak() })
diff --git a/test/out/compiler/block-01.out b/test/out/compiler/block-01.out
deleted file mode 100644
--- a/test/out/compiler/block-01.out
+++ /dev/null
@@ -1,135 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/block-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/block-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/block-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/block-01.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Block (CodeBlock [])) , NormalArg (Literal None) ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/block-01.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (Block
-              (CodeBlock
-                 [ Let (BasicBind (Just (Identifier "v"))) (Literal (Int 0)) ]))
-       , NormalArg (Literal None)
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/block-01.typ"
-    ( line 9 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Block (CodeBlock [ Literal (String "hello") ]))
-       , NormalArg (Literal (String "hello"))
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/block-01.typ"
-    ( line 12 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (Block
-              (CodeBlock
-                 [ Let (BasicBind (Just (Identifier "x"))) (Literal (String "m"))
-                 , Plus (Ident (Identifier "x")) (Literal (String "y"))
-                 ]))
-       , NormalArg (Literal (String "my"))
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/block-01.typ"
-    ( line 15 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (Block
-              (CodeBlock
-                 [ Let (BasicBind (Just (Identifier "x"))) (Literal (Int 1))
-                 , Let (BasicBind (Just (Identifier "y"))) (Literal (Int 2))
-                 , Plus (Ident (Identifier "x")) (Ident (Identifier "y"))
-                 ]))
-       , NormalArg (Literal (Int 3))
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/block-01.typ"
-    ( line 22 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (Block
-              (CodeBlock
-                 [ FuncCall
-                     (Ident (Identifier "type")) [ NormalArg (Literal (String "")) ]
-                 , Literal None
-                 ]))
-       , NormalArg (Literal (String "string"))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak(), 
-                 text(body: [✅]), 
-                 parbreak(), 
-                 text(body: [✅]), 
-                 parbreak(), 
-                 text(body: [✅]), 
-                 parbreak(), 
-                 text(body: [✅]), 
-                 parbreak(), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/block-02.out b/test/out/compiler/block-02.out
deleted file mode 100644
--- a/test/out/compiler/block-02.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/block-03.out b/test/out/compiler/block-03.out
deleted file mode 100644
--- a/test/out/compiler/block-03.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/block-04.out b/test/out/compiler/block-04.out
deleted file mode 100644
--- a/test/out/compiler/block-04.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/block-05.out b/test/out/compiler/block-05.out
deleted file mode 100644
--- a/test/out/compiler/block-05.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/block-06.out b/test/out/compiler/block-06.out
deleted file mode 100644
--- a/test/out/compiler/block-06.out
+++ /dev/null
@@ -1,87 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/block-06.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/block-06.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/block-06.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/block-06.typ"
-    ( line 3 , column 2 )
-    (Block
-       (CodeBlock
-          [ Let (BasicBind (Just (Identifier "a"))) (Literal (String "a1"))
-          , Block
-              (CodeBlock
-                 [ Let (BasicBind (Just (Identifier "a"))) (Literal (String "a2"))
-                 , Block
-                     (CodeBlock
-                        [ FuncCall
-                            (Ident (Identifier "test"))
-                            [ NormalArg (Ident (Identifier "a"))
-                            , NormalArg (Literal (String "a2"))
-                            ]
-                        , Let (BasicBind (Just (Identifier "a"))) (Literal (String "a3"))
-                        , FuncCall
-                            (Ident (Identifier "test"))
-                            [ NormalArg (Ident (Identifier "a"))
-                            , NormalArg (Literal (String "a3"))
-                            ]
-                        ])
-                 , FuncCall
-                     (Ident (Identifier "test"))
-                     [ NormalArg (Ident (Identifier "a"))
-                     , NormalArg (Literal (String "a2"))
-                     ]
-                 ])
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg (Ident (Identifier "a"))
-              , NormalArg (Literal (String "a1"))
-              ]
-          ]))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/block-07.out b/test/out/compiler/block-07.out
deleted file mode 100644
--- a/test/out/compiler/block-07.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/block-08.out b/test/out/compiler/block-08.out
deleted file mode 100644
--- a/test/out/compiler/block-08.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/block-09.out b/test/out/compiler/block-09.out
deleted file mode 100644
--- a/test/out/compiler/block-09.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/block-10.out b/test/out/compiler/block-10.out
deleted file mode 100644
--- a/test/out/compiler/block-10.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/break-continue-00.out b/test/out/compiler/break-continue-00.out
deleted file mode 100644
--- a/test/out/compiler/break-continue-00.out
+++ /dev/null
@@ -1,110 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/break-continue-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/break-continue-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/break-continue-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, SoftBreak
-, Code
-    "test/typ/compiler/break-continue-00.typ"
-    ( line 4 , column 2 )
-    (Let (BasicBind (Just (Identifier "var"))) (Literal (Int 0)))
-, SoftBreak
-, Code
-    "test/typ/compiler/break-continue-00.typ"
-    ( line 5 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "error"))) (Literal (Boolean False)))
-, ParBreak
-, Code
-    "test/typ/compiler/break-continue-00.typ"
-    ( line 7 , column 2 )
-    (For
-       (BasicBind (Just (Identifier "i")))
-       (FuncCall
-          (Ident (Identifier "range")) [ NormalArg (Literal (Int 10)) ])
-       (Block
-          (CodeBlock
-             [ Assign
-                 (Ident (Identifier "var"))
-                 (Plus (Ident (Identifier "var")) (Ident (Identifier "i")))
-             , If
-                 [ ( GreaterThan (Ident (Identifier "i")) (Literal (Int 5))
-                   , Block
-                       (CodeBlock
-                          [ Break
-                          , Assign (Ident (Identifier "error")) (Literal (Boolean True))
-                          ])
-                   )
-                 ]
-             ])))
-, ParBreak
-, Code
-    "test/typ/compiler/break-continue-00.typ"
-    ( line 15 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "var"))
-       , NormalArg (Literal (Int 21))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/break-continue-00.typ"
-    ( line 16 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "error"))
-       , NormalArg (Literal (Boolean False))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 parbreak(), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/break-continue-01.out b/test/out/compiler/break-continue-01.out
deleted file mode 100644
--- a/test/out/compiler/break-continue-01.out
+++ /dev/null
@@ -1,89 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/break-continue-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/break-continue-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/break-continue-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, SoftBreak
-, Code
-    "test/typ/compiler/break-continue-01.typ"
-    ( line 4 , column 2 )
-    (Let (BasicBind (Just (Identifier "i"))) (Literal (Int 0)))
-, SoftBreak
-, Code
-    "test/typ/compiler/break-continue-01.typ"
-    ( line 5 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "x")))
-       (While
-          (Literal (Boolean True))
-          (Block
-             (CodeBlock
-                [ Assign
-                    (Ident (Identifier "i"))
-                    (Plus (Ident (Identifier "i")) (Literal (Int 1)))
-                , FuncCall
-                    (Ident (Identifier "str")) [ NormalArg (Ident (Identifier "i")) ]
-                , If
-                    [ ( GreaterThanOrEqual (Ident (Identifier "i")) (Literal (Int 5))
-                      , Block (CodeBlock [ Literal (String ".") , Break ])
-                      )
-                    ]
-                ]))))
-, ParBreak
-, Code
-    "test/typ/compiler/break-continue-01.typ"
-    ( line 14 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "x"))
-       , NormalArg (Literal (String "12345."))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/break-continue-02.out b/test/out/compiler/break-continue-02.out
deleted file mode 100644
--- a/test/out/compiler/break-continue-02.out
+++ /dev/null
@@ -1,102 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/break-continue-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/break-continue-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/break-continue-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, SoftBreak
-, Code
-    "test/typ/compiler/break-continue-02.typ"
-    ( line 4 , column 2 )
-    (Let (BasicBind (Just (Identifier "i"))) (Literal (Int 0)))
-, SoftBreak
-, Code
-    "test/typ/compiler/break-continue-02.typ"
-    ( line 5 , column 2 )
-    (Let (BasicBind (Just (Identifier "x"))) (Literal (Int 0)))
-, ParBreak
-, Code
-    "test/typ/compiler/break-continue-02.typ"
-    ( line 7 , column 2 )
-    (While
-       (LessThan (Ident (Identifier "x")) (Literal (Int 8)))
-       (Block
-          (CodeBlock
-             [ Assign
-                 (Ident (Identifier "i"))
-                 (Plus (Ident (Identifier "i")) (Literal (Int 1)))
-             , If
-                 [ ( Equals
-                       (FuncCall
-                          (FieldAccess
-                             (Ident (Identifier "rem")) (Ident (Identifier "calc")))
-                          [ NormalArg (Ident (Identifier "i"))
-                          , NormalArg (Literal (Int 3))
-                          ])
-                       (Literal (Int 0))
-                   , Block (CodeBlock [ Continue ])
-                   )
-                 ]
-             , Assign
-                 (Ident (Identifier "x"))
-                 (Plus (Ident (Identifier "x")) (Ident (Identifier "i")))
-             ])))
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/break-continue-02.typ"
-    ( line 16 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "x"))
-       , NormalArg (Literal (Int 12))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 parbreak(), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/break-continue-03.out b/test/out/compiler/break-continue-03.out
deleted file mode 100644
--- a/test/out/compiler/break-continue-03.out
+++ /dev/null
@@ -1,89 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/break-continue-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/break-continue-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/break-continue-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, SoftBreak
-, Code
-    "test/typ/compiler/break-continue-03.typ"
-    ( line 4 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "x")))
-       (For
-          (BasicBind (Just (Identifier "i")))
-          (FuncCall
-             (Ident (Identifier "range")) [ NormalArg (Literal (Int 5)) ])
-          (Block
-             (CodeBlock
-                [ Literal (String "a")
-                , If
-                    [ ( Equals
-                          (FuncCall
-                             (FieldAccess
-                                (Ident (Identifier "rem")) (Ident (Identifier "calc")))
-                             [ NormalArg (Ident (Identifier "i"))
-                             , NormalArg (Literal (Int 3))
-                             ])
-                          (Literal (Int 0))
-                      , Block (CodeBlock [ Literal (String "_") , Continue ])
-                      )
-                    ]
-                , FuncCall
-                    (Ident (Identifier "str")) [ NormalArg (Ident (Identifier "i")) ]
-                ]))))
-, ParBreak
-, Code
-    "test/typ/compiler/break-continue-03.typ"
-    ( line 13 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "x"))
-       , NormalArg (Literal (String "a_a1a2a_a4"))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/break-continue-04.out b/test/out/compiler/break-continue-04.out
deleted file mode 100644
--- a/test/out/compiler/break-continue-04.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/break-continue-05.out b/test/out/compiler/break-continue-05.out
deleted file mode 100644
--- a/test/out/compiler/break-continue-05.out
+++ /dev/null
@@ -1,86 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/break-continue-05.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/break-continue-05.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/break-continue-05.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/break-continue-05.typ"
-    ( line 3 , column 2 )
-    (LetFunc
-       (Identifier "identity")
-       [ NormalParam (Identifier "x") ]
-       (Ident (Identifier "x")))
-, SoftBreak
-, Code
-    "test/typ/compiler/break-continue-05.typ"
-    ( line 4 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "out")))
-       (For
-          (BasicBind (Just (Identifier "i")))
-          (FuncCall
-             (Ident (Identifier "range")) [ NormalArg (Literal (Int 5)) ])
-          (Block
-             (CodeBlock
-                [ Literal (String "A")
-                , FuncCall
-                    (Ident (Identifier "identity"))
-                    [ NormalArg (Block (CodeBlock [ Literal (String "B") , Break ])) ]
-                , Literal (String "C")
-                ]))))
-, ParBreak
-, Code
-    "test/typ/compiler/break-continue-05.typ"
-    ( line 13 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "out"))
-       , NormalArg (Literal (String "AB"))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/break-continue-06.out b/test/out/compiler/break-continue-06.out
deleted file mode 100644
--- a/test/out/compiler/break-continue-06.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/break-continue-07.out b/test/out/compiler/break-continue-07.out
deleted file mode 100644
--- a/test/out/compiler/break-continue-07.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/break-continue-08.out b/test/out/compiler/break-continue-08.out
deleted file mode 100644
--- a/test/out/compiler/break-continue-08.out
+++ /dev/null
@@ -1,72 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/break-continue-08.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/break-continue-08.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/break-continue-08.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/compiler/break-continue-08.typ"
-    ( line 4 , column 2 )
-    (For
-       (BasicBind Nothing)
-       (FuncCall
-          (Ident (Identifier "range")) [ NormalArg (Literal (Int 10)) ])
-       (Block
-          (CodeBlock
-             [ Block (Content [ Text "Hello" , Space ])
-             , Block
-                 (Content
-                    [ Text "World"
-                    , Space
-                    , Code
-                        "test/typ/compiler/break-continue-08.typ"
-                        ( line 6 , column 11 )
-                        (Block (CodeBlock [ Block (Content [ Text "\127758" ]) , Break ]))
-                    ])
-             ])))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [Hello ]), 
-                 text(body: [World ]), 
-                 text(body: [🌎]), 
-                 parbreak() })
diff --git a/test/out/compiler/break-continue-09.out b/test/out/compiler/break-continue-09.out
deleted file mode 100644
--- a/test/out/compiler/break-continue-09.out
+++ /dev/null
@@ -1,160 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/break-continue-09.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/break-continue-09.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/break-continue-09.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Comment
-, Code
-    "test/typ/compiler/break-continue-09.typ"
-    ( line 5 , column 2 )
-    (For
-       (BasicBind (Just (Identifier "color")))
-       (Array
-          [ Reg (Ident (Identifier "red"))
-          , Reg (Ident (Identifier "blue"))
-          , Reg (Ident (Identifier "green"))
-          , Reg (Ident (Identifier "yellow"))
-          ])
-       (Block
-          (Content
-             [ SoftBreak
-             , Code
-                 "test/typ/compiler/break-continue-09.typ"
-                 ( line 6 , column 4 )
-                 (Set
-                    (Ident (Identifier "text"))
-                    [ KeyValArg (Identifier "font") (Literal (String "Roboto")) ])
-             , SoftBreak
-             , Code
-                 "test/typ/compiler/break-continue-09.typ"
-                 ( line 7 , column 4 )
-                 (Show
-                    Nothing
-                    (FuncExpr
-                       [ NormalParam (Identifier "it") ]
-                       (FuncCall
-                          (Ident (Identifier "text"))
-                          [ KeyValArg (Identifier "fill") (Ident (Identifier "color"))
-                          , NormalArg (Ident (Identifier "it"))
-                          ])))
-             , SoftBreak
-             , Code
-                 "test/typ/compiler/break-continue-09.typ"
-                 ( line 8 , column 4 )
-                 (FuncCall
-                    (Ident (Identifier "smallcaps"))
-                    [ NormalArg
-                        (If
-                           [ ( Not
-                                 (Equals (Ident (Identifier "color")) (Ident (Identifier "green")))
-                             , Block (Content [ SoftBreak , Text "Some" , ParBreak ])
-                             )
-                           , ( Literal (Boolean True)
-                             , Block
-                                 (Content
-                                    [ SoftBreak
-                                    , Text "Last"
-                                    , SoftBreak
-                                    , Code
-                                        "test/typ/compiler/break-continue-09.typ"
-                                        ( line 12 , column 6 )
-                                        Break
-                                    , ParBreak
-                                    ])
-                             )
-                           ])
-                    ])
-             , ParBreak
-             ])))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-], 
-                      font: "Roboto"), 
-                 text(body: { text(body: [
-], 
-                                   font: "Roboto"), 
-                              smallcaps(body: { text(body: [
-Some], 
-                                                     font: "Roboto"), 
-                                                parbreak() }), 
-                              parbreak() }, 
-                      fill: rgb(100%,25%,21%,100%), 
-                      font: "Roboto"), 
-                 text(body: [
-], 
-                      font: "Roboto"), 
-                 text(body: [
-], 
-                      font: "Roboto"), 
-                 text(body: { text(body: [
-], 
-                                   font: "Roboto"), 
-                              smallcaps(body: { text(body: [
-Some], 
-                                                     font: "Roboto"), 
-                                                parbreak() }), 
-                              parbreak() }, 
-                      fill: rgb(0%,45%,85%,100%), 
-                      font: "Roboto"), 
-                 text(body: [
-], 
-                      font: "Roboto"), 
-                 text(body: [
-], 
-                      font: "Roboto"), 
-                 text(body: { text(body: [
-], 
-                                   font: "Roboto"), 
-                              smallcaps(body: { text(body: [
-Last
-], 
-                                                     font: "Roboto"), 
-                                                parbreak() }), 
-                              parbreak() }, 
-                      fill: rgb(18%,80%,25%,100%), 
-                      font: "Roboto"), 
-                 parbreak() })
diff --git a/test/out/compiler/break-continue-10.out b/test/out/compiler/break-continue-10.out
deleted file mode 100644
--- a/test/out/compiler/break-continue-10.out
+++ /dev/null
@@ -1,66 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/break-continue-10.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/break-continue-10.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/break-continue-10.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Comment
-, Code
-    "test/typ/compiler/break-continue-10.typ"
-    ( line 5 , column 2 )
-    (For
-       (BasicBind (Just (Identifier "i")))
-       (FuncCall
-          (Ident (Identifier "range")) [ NormalArg (Literal (Int 10)) ])
-       (Block
-          (CodeBlock
-             [ Block (Content [ Text "Hello" ])
-             , Set
-                 (Ident (Identifier "text"))
-                 [ NormalArg (Ident (Identifier "blue")) , SpreadArg Break ]
-             , Block (Content [ Text "Not" , Space , Text "happening" ])
-             ])))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [Hello]), 
-                 parbreak() })
diff --git a/test/out/compiler/break-continue-11.out b/test/out/compiler/break-continue-11.out
deleted file mode 100644
--- a/test/out/compiler/break-continue-11.out
+++ /dev/null
@@ -1,113 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/break-continue-11.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/break-continue-11.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/break-continue-11.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, SoftBreak
-, Code
-    "test/typ/compiler/break-continue-11.typ"
-    ( line 5 , column 2 )
-    (For
-       (BasicBind (Just (Identifier "i")))
-       (FuncCall
-          (Ident (Identifier "range")) [ NormalArg (Literal (Int 10)) ])
-       (Block
-          (CodeBlock
-             [ FuncCall
-                 (Ident (Identifier "table"))
-                 [ NormalArg
-                     (Block (CodeBlock [ Block (Content [ Text "A" ]) , Break ]))
-                 , NormalArg
-                     (For
-                        (BasicBind Nothing)
-                        (FuncCall
-                           (Ident (Identifier "range")) [ NormalArg (Literal (Int 3)) ])
-                        (Block (Content [ Text "B" ])))
-                 ]
-             ])))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 table(children: (text(body: [A]), 
-                                  { text(body: [B]), 
-                                    text(body: [B]), 
-                                    text(body: [B]) })), 
-                 table(children: (text(body: [A]), 
-                                  { text(body: [B]), 
-                                    text(body: [B]), 
-                                    text(body: [B]) })), 
-                 table(children: (text(body: [A]), 
-                                  { text(body: [B]), 
-                                    text(body: [B]), 
-                                    text(body: [B]) })), 
-                 table(children: (text(body: [A]), 
-                                  { text(body: [B]), 
-                                    text(body: [B]), 
-                                    text(body: [B]) })), 
-                 table(children: (text(body: [A]), 
-                                  { text(body: [B]), 
-                                    text(body: [B]), 
-                                    text(body: [B]) })), 
-                 table(children: (text(body: [A]), 
-                                  { text(body: [B]), 
-                                    text(body: [B]), 
-                                    text(body: [B]) })), 
-                 table(children: (text(body: [A]), 
-                                  { text(body: [B]), 
-                                    text(body: [B]), 
-                                    text(body: [B]) })), 
-                 table(children: (text(body: [A]), 
-                                  { text(body: [B]), 
-                                    text(body: [B]), 
-                                    text(body: [B]) })), 
-                 table(children: (text(body: [A]), 
-                                  { text(body: [B]), 
-                                    text(body: [B]), 
-                                    text(body: [B]) })), 
-                 table(children: (text(body: [A]), 
-                                  { text(body: [B]), 
-                                    text(body: [B]), 
-                                    text(body: [B]) })), 
-                 parbreak() })
diff --git a/test/out/compiler/call-00.out b/test/out/compiler/call-00.out
deleted file mode 100644
--- a/test/out/compiler/call-00.out
+++ /dev/null
@@ -1,203 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/call-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/call-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/call-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/call-00.typ"
-    ( line 5 , column 2 )
-    (LetFunc (Identifier "f") [] (Block (CodeBlock [])))
-, SoftBreak
-, Code
-    "test/typ/compiler/call-00.typ"
-    ( line 6 , column 2 )
-    (Block
-       (Content
-          [ Code
-              "test/typ/compiler/call-00.typ"
-              ( line 6 , column 4 )
-              (FuncCall (Ident (Identifier "f")) [])
-          , Strong [ Text "Bold" ]
-          ]))
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/call-00.typ"
-    ( line 9 , column 2 )
-    (LetFunc
-       (Identifier "f")
-       [ NormalParam (Identifier "x") , NormalParam (Identifier "body") ]
-       (FuncExpr
-          [ NormalParam (Identifier "y") ]
-          (Plus
-             (Plus
-                (Block
-                   (Content
-                      [ Code
-                          "test/typ/compiler/call-00.typ"
-                          ( line 9 , column 28 )
-                          (Ident (Identifier "x"))
-                      ]))
-                (Ident (Identifier "body")))
-             (Block
-                (Content
-                   [ Code
-                       "test/typ/compiler/call-00.typ"
-                       ( line 9 , column 42 )
-                       (Ident (Identifier "y"))
-                   ])))))
-, SoftBreak
-, Code
-    "test/typ/compiler/call-00.typ"
-    ( line 10 , column 2 )
-    (FuncCall
-       (FuncCall
-          (Ident (Identifier "f"))
-          [ NormalArg (Literal (Int 1)) , BlockArg [ Text "2" ] ])
-       [ NormalArg (Literal (Int 3)) ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/call-00.typ"
-    ( line 13 , column 2 )
-    (Ident (Identifier "test"))
-, Space
-, Text "("
-, Text "it)"
-, ParBreak
-, Code
-    "test/typ/compiler/call-00.typ"
-    ( line 15 , column 2 )
-    (LetFunc
-       (Identifier "f")
-       [ NormalParam (Identifier "body") ]
-       (Ident (Identifier "body")))
-, SoftBreak
-, Code
-    "test/typ/compiler/call-00.typ"
-    ( line 16 , column 2 )
-    (FuncCall (Ident (Identifier "f")) [ BlockArg [ Text "A" ] ])
-, SoftBreak
-, Code
-    "test/typ/compiler/call-00.typ"
-    ( line 17 , column 2 )
-    (FuncCall (Ident (Identifier "f")) [ BlockArg [ Text "A" ] ])
-, SoftBreak
-, Code
-    "test/typ/compiler/call-00.typ"
-    ( line 18 , column 2 )
-    (FuncCall
-       (Ident (Identifier "f"))
-       [ NormalArg (Block (Content [ Text "A" ])) ])
-, ParBreak
-, Code
-    "test/typ/compiler/call-00.typ"
-    ( line 20 , column 2 )
-    (LetFunc
-       (Identifier "g")
-       [ NormalParam (Identifier "a") , NormalParam (Identifier "b") ]
-       (Plus (Ident (Identifier "a")) (Ident (Identifier "b"))))
-, SoftBreak
-, Code
-    "test/typ/compiler/call-00.typ"
-    ( line 21 , column 2 )
-    (FuncCall
-       (Ident (Identifier "g"))
-       [ BlockArg [ Text "A" ] , BlockArg [ Text "B" ] ])
-, SoftBreak
-, Code
-    "test/typ/compiler/call-00.typ"
-    ( line 22 , column 2 )
-    (FuncCall
-       (Ident (Identifier "g"))
-       [ NormalArg (Block (Content [ Text "A" ]))
-       , NormalArg (Block (Content [ Text "B" ]))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/call-00.typ"
-    ( line 23 , column 2 )
-    (FuncCall
-       (Ident (Identifier "g"))
-       [ BlockArg [ Text "A" ] , BlockArg [ Text "B" ] ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 strong(body: text(body: [Bold])), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 text(body: [1]), 
-                 text(body: [2]), 
-                 text(body: [3]), 
-                 parbreak(), 
-                 text(body: [ (it)]), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 text(body: [A]), 
-                 text(body: [
-]), 
-                 text(body: [A]), 
-                 text(body: [
-]), 
-                 text(body: [A]), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 text(body: [A]), 
-                 text(body: [B]), 
-                 text(body: [
-]), 
-                 text(body: [A]), 
-                 text(body: [B]), 
-                 text(body: [
-]), 
-                 text(body: [A]), 
-                 text(body: [B]), 
-                 parbreak() })
diff --git a/test/out/compiler/call-01.out b/test/out/compiler/call-01.out
deleted file mode 100644
--- a/test/out/compiler/call-01.out
+++ /dev/null
@@ -1,114 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/call-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/call-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/call-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/call-01.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Plus (Literal (Int 1)) (Literal (Int 1)))
-       , NormalArg (Literal (Int 2))
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/call-01.typ"
-    ( line 6 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "alias")))
-       (Ident (Identifier "type")))
-, SoftBreak
-, Code
-    "test/typ/compiler/call-01.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "alias"))
-              [ NormalArg (Ident (Identifier "alias")) ])
-       , NormalArg (Literal (String "function"))
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/call-01.typ"
-    ( line 10 , column 2 )
-    (Block
-       (CodeBlock
-          [ FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "type")) [ NormalArg (Literal (String "hi")) ])
-              , NormalArg (Literal (String "string"))
-              ]
-          , LetFunc
-              (Identifier "adder")
-              [ NormalParam (Identifier "dx") ]
-              (FuncExpr
-                 [ NormalParam (Identifier "x") ]
-                 (Plus (Ident (Identifier "x")) (Ident (Identifier "dx"))))
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg
-                  (FuncCall
-                     (FuncCall
-                        (Ident (Identifier "adder")) [ NormalArg (Literal (Int 2)) ])
-                     [ NormalArg (Literal (Int 5)) ])
-              , NormalArg (Literal (Int 7))
-              ]
-          ]))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak(), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/call-02.out b/test/out/compiler/call-02.out
deleted file mode 100644
--- a/test/out/compiler/call-02.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/call-03.out b/test/out/compiler/call-03.out
deleted file mode 100644
--- a/test/out/compiler/call-03.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/call-04.out b/test/out/compiler/call-04.out
deleted file mode 100644
--- a/test/out/compiler/call-04.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/call-05.out b/test/out/compiler/call-05.out
deleted file mode 100644
--- a/test/out/compiler/call-05.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/call-06.out b/test/out/compiler/call-06.out
deleted file mode 100644
--- a/test/out/compiler/call-06.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/call-07.out b/test/out/compiler/call-07.out
deleted file mode 100644
--- a/test/out/compiler/call-07.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/call-08.out b/test/out/compiler/call-08.out
deleted file mode 100644
--- a/test/out/compiler/call-08.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/call-09.out b/test/out/compiler/call-09.out
deleted file mode 100644
--- a/test/out/compiler/call-09.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/call-10.out b/test/out/compiler/call-10.out
deleted file mode 100644
--- a/test/out/compiler/call-10.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/closure-00.out b/test/out/compiler/closure-00.out
deleted file mode 100644
--- a/test/out/compiler/closure-00.out
+++ /dev/null
@@ -1,64 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/closure-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/closure-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/closure-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, SoftBreak
-, Code
-    "test/typ/compiler/closure-00.typ"
-    ( line 5 , column 2 )
-    (Let (BasicBind (Just (Identifier "x"))) (Literal (String "x")))
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/closure-00.typ"
-    ( line 8 , column 2 )
-    (FuncExpr
-       [ NormalParam (Identifier "x") ] (Ident (Identifier "y")))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 parbreak() })
diff --git a/test/out/compiler/closure-01.out b/test/out/compiler/closure-01.out
deleted file mode 100644
--- a/test/out/compiler/closure-01.out
+++ /dev/null
@@ -1,68 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/closure-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/closure-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/closure-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/closure-01.typ"
-    ( line 3 , column 2 )
-    (Block
-       (CodeBlock
-          [ Let
-              (BasicBind (Just (Identifier "adder")))
-              (FuncExpr
-                 [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-                 (Plus (Ident (Identifier "x")) (Ident (Identifier "y"))))
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "adder"))
-                     [ NormalArg (Literal (Int 2)) , NormalArg (Literal (Int 3)) ])
-              , NormalArg (Literal (Int 5))
-              ]
-          ]))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/closure-02.out b/test/out/compiler/closure-02.out
deleted file mode 100644
--- a/test/out/compiler/closure-02.out
+++ /dev/null
@@ -1,91 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/closure-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/closure-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/closure-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/compiler/closure-02.typ"
-    ( line 4 , column 2 )
-    (Block
-       (CodeBlock
-          [ Let
-              (BasicBind (Just (Identifier "chain")))
-              (FuncExpr
-                 [ NormalParam (Identifier "f") , NormalParam (Identifier "g") ]
-                 (FuncExpr
-                    [ NormalParam (Identifier "x") ]
-                    (FuncCall
-                       (Ident (Identifier "f"))
-                       [ NormalArg
-                           (FuncCall
-                              (Ident (Identifier "g")) [ NormalArg (Ident (Identifier "x")) ])
-                       ])))
-          , Let
-              (BasicBind (Just (Identifier "f")))
-              (FuncExpr
-                 [ NormalParam (Identifier "x") ]
-                 (Plus (Ident (Identifier "x")) (Literal (Int 1))))
-          , Let
-              (BasicBind (Just (Identifier "g")))
-              (FuncExpr
-                 [ NormalParam (Identifier "x") ]
-                 (Times (Literal (Int 2)) (Ident (Identifier "x"))))
-          , Let
-              (BasicBind (Just (Identifier "h")))
-              (FuncCall
-                 (Ident (Identifier "chain"))
-                 [ NormalArg (Ident (Identifier "f"))
-                 , NormalArg (Ident (Identifier "g"))
-                 ])
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg
-                  (FuncCall (Ident (Identifier "h")) [ NormalArg (Literal (Int 2)) ])
-              , NormalArg (Literal (Int 5))
-              ]
-          ]))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/closure-03.out b/test/out/compiler/closure-03.out
deleted file mode 100644
--- a/test/out/compiler/closure-03.out
+++ /dev/null
@@ -1,90 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/closure-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/closure-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/closure-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/closure-03.typ"
-    ( line 3 , column 2 )
-    (Block
-       (CodeBlock
-          [ Let (BasicBind (Just (Identifier "mark"))) (Literal (String "!"))
-          , Let
-              (BasicBind (Just (Identifier "greet")))
-              (Block
-                 (CodeBlock
-                    [ Let (BasicBind (Just (Identifier "hi"))) (Literal (String "Hi"))
-                    , FuncExpr
-                        [ NormalParam (Identifier "name") ]
-                        (Block
-                           (CodeBlock
-                              [ Plus
-                                  (Plus
-                                     (Plus (Ident (Identifier "hi")) (Literal (String ", ")))
-                                     (Ident (Identifier "name")))
-                                  (Ident (Identifier "mark"))
-                              ]))
-                    ]))
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "greet"))
-                     [ NormalArg (Literal (String "Typst")) ])
-              , NormalArg (Literal (String "Hi, Typst!"))
-              ]
-          , Assign (Ident (Identifier "mark")) (Literal (String "?"))
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "greet"))
-                     [ NormalArg (Literal (String "Typst")) ])
-              , NormalArg (Literal (String "Hi, Typst!"))
-              ]
-          ]))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/closure-04.out b/test/out/compiler/closure-04.out
deleted file mode 100644
--- a/test/out/compiler/closure-04.out
+++ /dev/null
@@ -1,71 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/closure-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/closure-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/closure-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/closure-04.typ"
-    ( line 3 , column 2 )
-    (Block
-       (CodeBlock
-          [ Let (BasicBind (Just (Identifier "x"))) (Literal (Int 1))
-          , LetFunc
-              (Identifier "f")
-              []
-              (Block
-                 (CodeBlock
-                    [ Let
-                        (BasicBind (Just (Identifier "x")))
-                        (Plus (Ident (Identifier "x")) (Literal (Int 2)))
-                    , Ident (Identifier "x")
-                    ]))
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg (FuncCall (Ident (Identifier "f")) [])
-              , NormalArg (Literal (Int 3))
-              ]
-          ]))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/closure-05.out b/test/out/compiler/closure-05.out
deleted file mode 100644
--- a/test/out/compiler/closure-05.out
+++ /dev/null
@@ -1,72 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/closure-05.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/closure-05.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/closure-05.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/closure-05.typ"
-    ( line 3 , column 2 )
-    (Block
-       (CodeBlock
-          [ Let
-              (BasicBind (Just (Identifier "b"))) (Literal (String "module.typ"))
-          , LetFunc
-              (Identifier "f")
-              []
-              (Block
-                 (CodeBlock
-                    [ Import
-                        (Ident (Identifier "b"))
-                        (SomeIdentifiers [ ( Identifier "b" , Nothing ) ])
-                    , Ident (Identifier "b")
-                    ]))
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg (FuncCall (Ident (Identifier "f")) [])
-              , NormalArg (Literal (Int 1))
-              ]
-          ]))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/closure-06.out b/test/out/compiler/closure-06.out
deleted file mode 100644
--- a/test/out/compiler/closure-06.out
+++ /dev/null
@@ -1,84 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/closure-06.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/closure-06.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/closure-06.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/closure-06.typ"
-    ( line 3 , column 2 )
-    (Block
-       (CodeBlock
-          [ Let
-              (BasicBind (Just (Identifier "v")))
-              (Array
-                 [ Reg (Literal (Int 1))
-                 , Reg (Literal (Int 2))
-                 , Reg (Literal (Int 3))
-                 ])
-          , LetFunc
-              (Identifier "f")
-              []
-              (Block
-                 (CodeBlock
-                    [ Let (BasicBind (Just (Identifier "s"))) (Literal (Int 0))
-                    , For
-                        (BasicBind (Just (Identifier "v")))
-                        (Ident (Identifier "v"))
-                        (Block
-                           (CodeBlock
-                              [ Assign
-                                  (Ident (Identifier "s"))
-                                  (Plus (Ident (Identifier "s")) (Ident (Identifier "v")))
-                              ]))
-                    , Ident (Identifier "s")
-                    ]))
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg (FuncCall (Ident (Identifier "f")) [])
-              , NormalArg (Literal (Int 6))
-              ]
-          ]))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/closure-07.out b/test/out/compiler/closure-07.out
deleted file mode 100644
--- a/test/out/compiler/closure-07.out
+++ /dev/null
@@ -1,69 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/closure-07.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/closure-07.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/closure-07.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/closure-07.typ"
-    ( line 3 , column 2 )
-    (Block
-       (CodeBlock
-          [ Let (BasicBind (Just (Identifier "g"))) (Literal (String "hi"))
-          , LetFunc
-              (Identifier "f")
-              []
-              (Block
-                 (CodeBlock
-                    [ LetFunc (Identifier "g") [] (Literal (String "bye"))
-                    , FuncCall (Ident (Identifier "g")) []
-                    ]))
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg (FuncCall (Ident (Identifier "f")) [])
-              , NormalArg (Literal (String "bye"))
-              ]
-          ]))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/closure-08.out b/test/out/compiler/closure-08.out
deleted file mode 100644
--- a/test/out/compiler/closure-08.out
+++ /dev/null
@@ -1,81 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/closure-08.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/closure-08.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/closure-08.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/closure-08.typ"
-    ( line 3 , column 2 )
-    (Block
-       (CodeBlock
-          [ Let (BasicBind (Just (Identifier "x"))) (Literal (Int 5))
-          , LetFunc
-              (Identifier "g")
-              []
-              (Block
-                 (CodeBlock
-                    [ LetFunc
-                        (Identifier "f")
-                        [ NormalParam (Identifier "x")
-                        , DefaultParam (Identifier "y") (Ident (Identifier "x"))
-                        ]
-                        (Plus (Ident (Identifier "x")) (Ident (Identifier "y")))
-                    , Ident (Identifier "f")
-                    ]))
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg
-                  (FuncCall
-                     (FuncCall (Ident (Identifier "g")) [])
-                     [ NormalArg (Literal (Int 8)) ])
-              , NormalArg (Literal (Int 13))
-              ]
-          ]))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [❌(]), 
-                 text(body: [16]), 
-                 text(body: [ /= ]), 
-                 text(body: [13]), 
-                 text(body: [)]), 
-                 parbreak() })
diff --git a/test/out/compiler/closure-09.out b/test/out/compiler/closure-09.out
deleted file mode 100644
--- a/test/out/compiler/closure-09.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/closure-10.out b/test/out/compiler/closure-10.out
deleted file mode 100644
--- a/test/out/compiler/closure-10.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/closure-11.out b/test/out/compiler/closure-11.out
deleted file mode 100644
--- a/test/out/compiler/closure-11.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/closure-12.out b/test/out/compiler/closure-12.out
deleted file mode 100644
--- a/test/out/compiler/closure-12.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/closure-13.out b/test/out/compiler/closure-13.out
deleted file mode 100644
--- a/test/out/compiler/closure-13.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/closure-14.out b/test/out/compiler/closure-14.out
deleted file mode 100644
--- a/test/out/compiler/closure-14.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/closure-15.out b/test/out/compiler/closure-15.out
deleted file mode 100644
--- a/test/out/compiler/closure-15.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/closure-16.out b/test/out/compiler/closure-16.out
deleted file mode 100644
--- a/test/out/compiler/closure-16.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/closure-17.out b/test/out/compiler/closure-17.out
deleted file mode 100644
--- a/test/out/compiler/closure-17.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/closure-18.out b/test/out/compiler/closure-18.out
deleted file mode 100644
--- a/test/out/compiler/closure-18.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/closure-19.out b/test/out/compiler/closure-19.out
deleted file mode 100644
--- a/test/out/compiler/closure-19.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/closure-20.out b/test/out/compiler/closure-20.out
deleted file mode 100644
--- a/test/out/compiler/closure-20.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/color-00.out b/test/out/compiler/color-00.out
deleted file mode 100644
--- a/test/out/compiler/color-00.out
+++ /dev/null
@@ -1,213 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/color-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/color-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/color-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/color-00.typ"
-    ( line 3 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "c")))
-       (FuncCall
-          (Ident (Identifier "cmyk"))
-          [ NormalArg (Literal (Numeric 50.0 Percent))
-          , NormalArg (Literal (Numeric 64.0 Percent))
-          , NormalArg (Literal (Numeric 16.0 Percent))
-          , NormalArg (Literal (Numeric 17.0 Percent))
-          ]))
-, SoftBreak
-, Code
-    "test/typ/compiler/color-00.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "stack"))
-       [ KeyValArg (Identifier "dir") (Ident (Identifier "ltr"))
-       , KeyValArg (Identifier "spacing") (Literal (Numeric 1.0 Fr))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg (Identifier "width") (Literal (Numeric 1.0 Cm))
-              , KeyValArg
-                  (Identifier "fill")
-                  (FuncCall
-                     (Ident (Identifier "cmyk"))
-                     [ NormalArg (Literal (Numeric 69.0 Percent))
-                     , NormalArg (Literal (Numeric 11.0 Percent))
-                     , NormalArg (Literal (Numeric 69.0 Percent))
-                     , NormalArg (Literal (Numeric 41.0 Percent))
-                     ])
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg (Identifier "width") (Literal (Numeric 1.0 Cm))
-              , KeyValArg (Identifier "fill") (Ident (Identifier "c"))
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg (Identifier "width") (Literal (Numeric 1.0 Cm))
-              , KeyValArg
-                  (Identifier "fill")
-                  (FuncCall
-                     (FieldAccess
-                        (Ident (Identifier "negate")) (Ident (Identifier "c")))
-                     [])
-              ])
-       ])
-, ParBreak
-, Code
-    "test/typ/compiler/color-00.typ"
-    ( line 12 , column 2 )
-    (For
-       (BasicBind (Just (Identifier "x")))
-       (FuncCall
-          (Ident (Identifier "range"))
-          [ NormalArg (Literal (Int 0)) , NormalArg (Literal (Int 11)) ])
-       (Block
-          (CodeBlock
-             [ FuncCall
-                 (Ident (Identifier "box"))
-                 [ NormalArg
-                     (FuncCall
-                        (Ident (Identifier "square"))
-                        [ KeyValArg (Identifier "size") (Literal (Numeric 9.0 Pt))
-                        , KeyValArg
-                            (Identifier "fill")
-                            (FuncCall
-                               (FieldAccess
-                                  (Ident (Identifier "lighten")) (Ident (Identifier "c")))
-                               [ NormalArg
-                                   (Times (Ident (Identifier "x")) (Literal (Numeric 10.0 Percent)))
-                               ])
-                        ])
-                 ]
-             ])))
-, SoftBreak
-, Code
-    "test/typ/compiler/color-00.typ"
-    ( line 15 , column 2 )
-    (For
-       (BasicBind (Just (Identifier "x")))
-       (FuncCall
-          (Ident (Identifier "range"))
-          [ NormalArg (Literal (Int 0)) , NormalArg (Literal (Int 11)) ])
-       (Block
-          (CodeBlock
-             [ FuncCall
-                 (Ident (Identifier "box"))
-                 [ NormalArg
-                     (FuncCall
-                        (Ident (Identifier "square"))
-                        [ KeyValArg (Identifier "size") (Literal (Numeric 9.0 Pt))
-                        , KeyValArg
-                            (Identifier "fill")
-                            (FuncCall
-                               (FieldAccess
-                                  (Ident (Identifier "darken")) (Ident (Identifier "c")))
-                               [ NormalArg
-                                   (Times (Ident (Identifier "x")) (Literal (Numeric 10.0 Percent)))
-                               ])
-                        ])
-                 ]
-             ])))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 stack(children: (rect(fill: cmyk(69%,11%,69%,41%), 
-                                       width: 1.0cm), 
-                                  rect(fill: cmyk(50%,64%,16%,17%), 
-                                       width: 1.0cm), 
-                                  rect(fill: cmyk(50%,36%,84%,17%), 
-                                       width: 1.0cm)), 
-                       dir: ltr, 
-                       spacing: 1.0fr), 
-                 parbreak(), 
-                 box(body: square(fill: cmyk(50%,64%,16%,17%), 
-                                  size: 9.0pt)), 
-                 box(body: square(fill: cmyk(55%,67%,24%,25%), 
-                                  size: 9.0pt)), 
-                 box(body: square(fill: cmyk(60%,71%,32%,33%), 
-                                  size: 9.0pt)), 
-                 box(body: square(fill: cmyk(65%,74%,41%,41%), 
-                                  size: 9.0pt)), 
-                 box(body: square(fill: cmyk(70%,78%,49%,50%), 
-                                  size: 9.0pt)), 
-                 box(body: square(fill: cmyk(75%,82%,58%,58%), 
-                                  size: 9.0pt)), 
-                 box(body: square(fill: cmyk(80%,85%,66%,66%), 
-                                  size: 9.0pt)), 
-                 box(body: square(fill: cmyk(85%,89%,74%,75%), 
-                                  size: 9.0pt)), 
-                 box(body: square(fill: cmyk(90%,92%,83%,83%), 
-                                  size: 9.0pt)), 
-                 box(body: square(fill: cmyk(95%,96%,91%,91%), 
-                                  size: 9.0pt)), 
-                 box(body: square(fill: cmyk(100%,100%,100%,100%), 
-                                  size: 9.0pt)), 
-                 text(body: [
-]), 
-                 box(body: square(fill: cmyk(50%,64%,16%,17%), 
-                                  size: 9.0pt)), 
-                 box(body: square(fill: cmyk(45%,57%,14%,15%), 
-                                  size: 9.0pt)), 
-                 box(body: square(fill: cmyk(40%,51%,12%,13%), 
-                                  size: 9.0pt)), 
-                 box(body: square(fill: cmyk(35%,44%,11%,11%), 
-                                  size: 9.0pt)), 
-                 box(body: square(fill: cmyk(30%,38%,9%,10%), 
-                                  size: 9.0pt)), 
-                 box(body: square(fill: cmyk(25%,32%,8%,8%), 
-                                  size: 9.0pt)), 
-                 box(body: square(fill: cmyk(20%,25%,6%,6%), 
-                                  size: 9.0pt)), 
-                 box(body: square(fill: cmyk(15%,19%,4%,5%), 
-                                  size: 9.0pt)), 
-                 box(body: square(fill: cmyk(10%,12%,3%,3%), 
-                                  size: 9.0pt)), 
-                 box(body: square(fill: cmyk(5%,6%,1%,1%), 
-                                  size: 9.0pt)), 
-                 box(body: square(fill: cmyk(0%,0%,0%,0%), 
-                                  size: 9.0pt)), 
-                 parbreak() })
diff --git a/test/out/compiler/color-01.out b/test/out/compiler/color-01.out
deleted file mode 100644
--- a/test/out/compiler/color-01.out
+++ /dev/null
@@ -1,116 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/color-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/color-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/color-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/compiler/color-01.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "lighten"))
-                 (FuncCall
-                    (Ident (Identifier "luma"))
-                    [ NormalArg (Literal (Numeric 20.0 Percent)) ]))
-              [ NormalArg (Literal (Numeric 50.0 Percent)) ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "luma"))
-              [ NormalArg (Literal (Numeric 60.0 Percent)) ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/color-01.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "darken"))
-                 (FuncCall
-                    (Ident (Identifier "luma"))
-                    [ NormalArg (Literal (Numeric 80.0 Percent)) ]))
-              [ NormalArg (Literal (Numeric 20.0 Percent)) ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "luma"))
-              [ NormalArg (Literal (Numeric 63.9 Percent)) ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/color-01.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "negate"))
-                 (FuncCall
-                    (Ident (Identifier "luma"))
-                    [ NormalArg (Literal (Numeric 80.0 Percent)) ]))
-              [])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "luma"))
-              [ NormalArg (Literal (Numeric 20.0 Percent)) ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [❌(]), 
-                 text(body: [luma(64%)]), 
-                 text(body: [ /= ]), 
-                 text(body: [luma(63%)]), 
-                 text(body: [)]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/comment-00.out b/test/out/compiler/comment-00.out
deleted file mode 100644
--- a/test/out/compiler/comment-00.out
+++ /dev/null
@@ -1,88 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/comment-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/comment-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/comment-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "A"
-, Comment
-, Text "B"
-, ParBreak
-, Comment
-, Text "C"
-, Comment
-, Text "D"
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/comment-00.typ"
-    ( line 12 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "type")) [ NormalArg (Literal (Int 1)) ])
-       , NormalArg (Literal (String "integer"))
-       ])
-, ParBreak
-, Comment
-, Comment
-, SoftBreak
-, Comment
-, Comment
-, ParBreak
-, Text "E"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [A]), 
-                 text(body: [B]), 
-                 parbreak(), 
-                 text(body: [C]), 
-                 text(body: [D]), 
-                 parbreak(), 
-                 text(body: [✅]), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [E]), 
-                 parbreak() })
diff --git a/test/out/compiler/comment-01.out b/test/out/compiler/comment-01.out
deleted file mode 100644
--- a/test/out/compiler/comment-01.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/construct-00.out b/test/out/compiler/construct-00.out
deleted file mode 100644
--- a/test/out/compiler/construct-00.out
+++ /dev/null
@@ -1,74 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/construct-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/construct-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/construct-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/compiler/construct-00.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "par"))
-       [ KeyValArg (Identifier "leading") (Literal (Numeric 2.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/compiler/construct-00.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "list"))
-       [ KeyValArg (Identifier "body-indent") (Literal (Numeric 20.0 Pt))
-       , NormalArg (Block (Content [ Text "First" ]))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "list"))
-              [ BlockArg [ Text "A" ] , BlockArg [ Text "B" ] ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 list(body-indent: 20.0pt, 
-                      children: (text(body: [First]), 
-                                 list(children: (text(body: [A]), 
-                                                 text(body: [B]))))), 
-                 parbreak() })
diff --git a/test/out/compiler/construct-01.out b/test/out/compiler/construct-01.out
deleted file mode 100644
--- a/test/out/compiler/construct-01.out
+++ /dev/null
@@ -1,90 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/construct-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/construct-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/construct-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Comment
-, Code
-    "test/typ/compiler/construct-01.typ"
-    ( line 5 , column 2 )
-    (Set
-       (Ident (Identifier "list"))
-       [ KeyValArg (Identifier "marker") (Block (Content [ Text ">" ])) ])
-, SoftBreak
-, Code
-    "test/typ/compiler/construct-01.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "list"))
-       [ KeyValArg (Identifier "marker") (Block (Content [ EnDash ]))
-       , BlockArg
-           [ SoftBreak
-           , Code
-               "test/typ/compiler/construct-01.typ"
-               ( line 7 , column 4 )
-               (FuncCall
-                  (Ident (Identifier "rect"))
-                  [ KeyValArg (Identifier "width") (Literal (Numeric 2.0 Cm))
-                  , KeyValArg (Identifier "fill") (Ident (Identifier "green"))
-                  , KeyValArg (Identifier "inset") (Literal (Numeric 4.0 Pt))
-                  , NormalArg
-                      (FuncCall (Ident (Identifier "list")) [ BlockArg [ Text "A" ] ])
-                  ])
-           , ParBreak
-           ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 list(children: ({ text(body: [
-]), 
-                                   rect(body: list(children: (text(body: [A])), 
-                                                   marker: text(body: [>])), 
-                                        fill: rgb(18%,80%,25%,100%), 
-                                        inset: 4.0pt, 
-                                        width: 2.0cm), 
-                                   parbreak() }), 
-                      marker: text(body: [–])), 
-                 parbreak() })
diff --git a/test/out/compiler/construct-02.out b/test/out/compiler/construct-02.out
deleted file mode 100644
--- a/test/out/compiler/construct-02.out
+++ /dev/null
@@ -1,78 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/construct-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/construct-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/construct-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/compiler/construct-02.typ"
-    ( line 4 , column 2 )
-    (Block
-       (Content
-          [ Code
-              "test/typ/compiler/construct-02.typ"
-              ( line 4 , column 4 )
-              (Set
-                 (Ident (Identifier "rect"))
-                 [ KeyValArg (Identifier "fill") (Ident (Identifier "yellow")) ])
-          , Code
-              "test/typ/compiler/construct-02.typ"
-              ( line 4 , column 28 )
-              (FuncCall
-                 (Ident (Identifier "text"))
-                 [ NormalArg (Literal (Numeric 1.0 Em))
-                 , NormalArg
-                     (FuncCall
-                        (Ident (Identifier "rect"))
-                        [ KeyValArg (Identifier "inset") (Literal (Numeric 5.0 Pt))
-                        , NormalArg (FuncCall (Ident (Identifier "rect")) [])
-                        ])
-                 ])
-          ]))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: rect(body: rect(fill: rgb(100%,86%,0%,100%)), 
-                                 fill: rgb(100%,86%,0%,100%), 
-                                 inset: 5.0pt), 
-                      size: 1.0em), 
-                 parbreak() })
diff --git a/test/out/compiler/construct-03.out b/test/out/compiler/construct-03.out
deleted file mode 100644
--- a/test/out/compiler/construct-03.out
+++ /dev/null
@@ -1,70 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/construct-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/construct-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/construct-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "A"
-, Space
-, Code
-    "test/typ/compiler/construct-03.typ"
-    ( line 3 , column 4 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg (Identifier "fill") (Ident (Identifier "yellow"))
-              , KeyValArg (Identifier "inset") (Literal (Numeric 5.0 Pt))
-              , NormalArg (FuncCall (Ident (Identifier "rect")) [])
-              ])
-       ])
-, Space
-, Text "B"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [A ]), 
-                 box(body: rect(body: rect(), 
-                                fill: rgb(100%,86%,0%,100%), 
-                                inset: 5.0pt)), 
-                 text(body: [ B]), 
-                 parbreak() })
diff --git a/test/out/compiler/construct-04.out b/test/out/compiler/construct-04.out
deleted file mode 100644
--- a/test/out/compiler/construct-04.out
+++ /dev/null
@@ -1,73 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/construct-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/construct-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/construct-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/compiler/construct-04.typ"
-    ( line 4 , column 2 )
-    (Show
-       (Just (Ident (Identifier "enum")))
-       (Set
-          (Ident (Identifier "text"))
-          [ NormalArg (Ident (Identifier "blue")) ]))
-, SoftBreak
-, Code
-    "test/typ/compiler/construct-04.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "enum"))
-       [ KeyValArg (Identifier "numbering") (Literal (String "(a)"))
-       , NormalArg (Block (Content [ Text "A" ]))
-       , NormalArg
-           (FuncCall (Ident (Identifier "enum")) [ BlockArg [ Text "B" ] ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 enum(children: (text(body: [A]), 
-                                 enum(children: (text(body: [B])))), 
-                      numbering: "(a)"), 
-                 parbreak() })
diff --git a/test/out/compiler/content-field-00.out b/test/out/compiler/content-field-00.out
deleted file mode 100644
--- a/test/out/compiler/content-field-00.out
+++ /dev/null
@@ -1,330 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/content-field-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/content-field-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/content-field-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, SoftBreak
-, Code
-    "test/typ/compiler/content-field-00.typ"
-    ( line 4 , column 2 )
-    (LetFunc
-       (Identifier "compute")
-       [ NormalParam (Identifier "equation")
-       , SinkParam (Just (Identifier "vars"))
-       ]
-       (Block
-          (CodeBlock
-             [ Let
-                 (BasicBind (Just (Identifier "vars")))
-                 (FuncCall
-                    (FieldAccess
-                       (Ident (Identifier "named")) (Ident (Identifier "vars")))
-                    [])
-             , LetFunc
-                 (Identifier "f")
-                 [ NormalParam (Identifier "elem") ]
-                 (Block
-                    (CodeBlock
-                       [ Let
-                           (BasicBind (Just (Identifier "func")))
-                           (FuncCall
-                              (FieldAccess
-                                 (Ident (Identifier "func")) (Ident (Identifier "elem")))
-                              [])
-                       , If
-                           [ ( Equals (Ident (Identifier "func")) (Ident (Identifier "text"))
-                             , Block
-                                 (CodeBlock
-                                    [ Let
-                                        (BasicBind (Just (Identifier "text")))
-                                        (FieldAccess
-                                           (Ident (Identifier "text")) (Ident (Identifier "elem")))
-                                    , If
-                                        [ ( InCollection
-                                              (FuncCall
-                                                 (Ident (Identifier "regex"))
-                                                 [ NormalArg (Literal (String "^\\d+$")) ])
-                                              (Ident (Identifier "text"))
-                                          , Block
-                                              (CodeBlock
-                                                 [ FuncCall
-                                                     (Ident (Identifier "int"))
-                                                     [ NormalArg (Ident (Identifier "text")) ]
-                                                 ])
-                                          )
-                                        , ( InCollection
-                                              (Ident (Identifier "text"))
-                                              (Ident (Identifier "vars"))
-                                          , Block
-                                              (CodeBlock
-                                                 [ FuncCall
-                                                     (Ident (Identifier "int"))
-                                                     [ NormalArg
-                                                         (FuncCall
-                                                            (FieldAccess
-                                                               (Ident (Identifier "at"))
-                                                               (Ident (Identifier "vars")))
-                                                            [ NormalArg (Ident (Identifier "text"))
-                                                            ])
-                                                     ]
-                                                 ])
-                                          )
-                                        , ( Literal (Boolean True)
-                                          , Block
-                                              (CodeBlock
-                                                 [ FuncCall
-                                                     (Ident (Identifier "panic"))
-                                                     [ NormalArg
-                                                         (Plus
-                                                            (Literal
-                                                               (String "unknown math variable: "))
-                                                            (Ident (Identifier "text")))
-                                                     ]
-                                                 ])
-                                          )
-                                        ]
-                                    ])
-                             )
-                           , ( Equals
-                                 (Ident (Identifier "func"))
-                                 (FieldAccess
-                                    (Ident (Identifier "attach")) (Ident (Identifier "math")))
-                             , Block
-                                 (CodeBlock
-                                    [ Let
-                                        (BasicBind (Just (Identifier "value")))
-                                        (FuncCall
-                                           (Ident (Identifier "f"))
-                                           [ NormalArg
-                                               (FieldAccess
-                                                  (Ident (Identifier "base"))
-                                                  (Ident (Identifier "elem")))
-                                           ])
-                                    , If
-                                        [ ( FuncCall
-                                              (FieldAccess
-                                                 (Ident (Identifier "has"))
-                                                 (Ident (Identifier "elem")))
-                                              [ NormalArg (Literal (String "t")) ]
-                                          , Block
-                                              (CodeBlock
-                                                 [ Assign
-                                                     (Ident (Identifier "value"))
-                                                     (FuncCall
-                                                        (FieldAccess
-                                                           (Ident (Identifier "pow"))
-                                                           (Ident (Identifier "calc")))
-                                                        [ NormalArg (Ident (Identifier "value"))
-                                                        , NormalArg
-                                                            (FuncCall
-                                                               (Ident (Identifier "f"))
-                                                               [ NormalArg
-                                                                   (FieldAccess
-                                                                      (Ident (Identifier "t"))
-                                                                      (Ident (Identifier "elem")))
-                                                               ])
-                                                        ])
-                                                 ])
-                                          )
-                                        ]
-                                    , Ident (Identifier "value")
-                                    ])
-                             )
-                           , ( FuncCall
-                                 (FieldAccess
-                                    (Ident (Identifier "has")) (Ident (Identifier "elem")))
-                                 [ NormalArg (Literal (String "children")) ]
-                             , Block
-                                 (CodeBlock
-                                    [ FuncCall
-                                        (FieldAccess
-                                           (Ident (Identifier "fold"))
-                                           (FuncCall
-                                              (FieldAccess
-                                                 (Ident (Identifier "map"))
-                                                 (FuncCall
-                                                    (FieldAccess
-                                                       (Ident (Identifier "split"))
-                                                       (FuncCall
-                                                          (FieldAccess
-                                                             (Ident (Identifier "filter"))
-                                                             (FieldAccess
-                                                                (Ident (Identifier "children"))
-                                                                (Ident (Identifier "elem"))))
-                                                          [ NormalArg
-                                                              (FuncExpr
-                                                                 [ NormalParam (Identifier "v") ]
-                                                                 (Not
-                                                                    (Equals
-                                                                       (Ident (Identifier "v"))
-                                                                       (Block
-                                                                          (Content [ Space ])))))
-                                                          ]))
-                                                    [ BlockArg [ EnumListItem Nothing [] ] ]))
-                                              [ NormalArg
-                                                  (FuncExpr
-                                                     [ NormalParam (Identifier "xs") ]
-                                                     (FuncCall
-                                                        (FieldAccess
-                                                           (Ident (Identifier "fold"))
-                                                           (Ident (Identifier "xs")))
-                                                        [ NormalArg (Literal (Int 1))
-                                                        , NormalArg
-                                                            (FuncExpr
-                                                               [ NormalParam (Identifier "prod")
-                                                               , NormalParam (Identifier "v")
-                                                               ]
-                                                               (Times
-                                                                  (Ident (Identifier "prod"))
-                                                                  (FuncCall
-                                                                     (Ident (Identifier "f"))
-                                                                     [ NormalArg
-                                                                         (Ident (Identifier "v"))
-                                                                     ])))
-                                                        ]))
-                                              ]))
-                                        [ NormalArg (Literal (Int 0))
-                                        , NormalArg
-                                            (FuncExpr
-                                               [ NormalParam (Identifier "sum")
-                                               , NormalParam (Identifier "v")
-                                               ]
-                                               (Plus
-                                                  (Ident (Identifier "sum"))
-                                                  (Ident (Identifier "v"))))
-                                        ]
-                                    ])
-                             )
-                           ]
-                       ]))
-             , Let
-                 (BasicBind (Just (Identifier "result")))
-                 (FuncCall
-                    (Ident (Identifier "f"))
-                    [ NormalArg
-                        (FieldAccess
-                           (Ident (Identifier "body")) (Ident (Identifier "equation")))
-                    ])
-             , Block (Content [ Text "With" , Space ])
-             , FuncCall
-                 (FieldAccess
-                    (Ident (Identifier "join"))
-                    (FuncCall
-                       (FieldAccess
-                          (Ident (Identifier "map"))
-                          (FuncCall
-                             (FieldAccess
-                                (Ident (Identifier "pairs")) (Ident (Identifier "vars")))
-                             []))
-                       [ NormalArg
-                           (FuncExpr
-                              [ NormalParam (Identifier "p") ]
-                              (Block
-                                 (Content
-                                    [ Equation
-                                        False
-                                        [ Code
-                                            "test/typ/compiler/content-field-00.typ"
-                                            ( line 36 , column 17 )
-                                            (FuncCall
-                                               (FieldAccess
-                                                  (Ident (Identifier "first"))
-                                                  (Ident (Identifier "p")))
-                                               [])
-                                        , Text "="
-                                        , Code
-                                            "test/typ/compiler/content-field-00.typ"
-                                            ( line 36 , column 30 )
-                                            (FuncCall
-                                               (FieldAccess
-                                                  (Ident (Identifier "last"))
-                                                  (Ident (Identifier "p")))
-                                               [])
-                                        ]
-                                    ])))
-                       ]))
-                 [ NormalArg (Literal (String ", "))
-                 , KeyValArg (Identifier "last") (Literal (String " and "))
-                 ]
-             , Block
-                 (Content [ Space , Text "we" , Space , Text "have" , Text ":" ])
-             , Block
-                 (Content
-                    [ Equation
-                        True
-                        [ Code
-                            "test/typ/compiler/content-field-00.typ"
-                            ( line 39 , column 5 )
-                            (Ident (Identifier "equation"))
-                        , Text "="
-                        , Code
-                            "test/typ/compiler/content-field-00.typ"
-                            ( line 39 , column 16 )
-                            (Ident (Identifier "result"))
-                        ]
-                    ])
-             ])))
-, ParBreak
-, Code
-    "test/typ/compiler/content-field-00.typ"
-    ( line 42 , column 2 )
-    (FuncCall
-       (Ident (Identifier "compute"))
-       [ NormalArg
-           (Block
-              (Content
-                 [ Equation
-                     False
-                     [ Text "x"
-                     , Text "y"
-                     , Text "+"
-                     , MAttach Nothing (Just (Text "2")) (Text "y")
-                     ]
-                 ]))
-       , KeyValArg (Identifier "x") (Literal (Int 2))
-       , KeyValArg (Identifier "y") (Literal (Int 3))
-       ])
-, ParBreak
-]
-"test/typ/compiler/content-field-00.typ" (line 42, column 2):
-unexpected end of input
-expecting end of input
-panicked with: "unknown math variable: +"
-
diff --git a/test/out/compiler/dict-00.out b/test/out/compiler/dict-00.out
deleted file mode 100644
--- a/test/out/compiler/dict-00.out
+++ /dev/null
@@ -1,103 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/dict-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/dict-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/dict-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/dict-00.typ" ( line 5 , column 2 ) (Dict [])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/dict-00.typ"
-    ( line 8 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "dict")))
-       (Dict
-          [ Reg ( Ident (Identifier "normal") , Literal (Int 1) )
-          , Reg ( Literal (String "spacy key") , Literal (Int 2) )
-          ]))
-, SoftBreak
-, Code
-    "test/typ/compiler/dict-00.typ"
-    ( line 9 , column 2 )
-    (Ident (Identifier "dict"))
-, ParBreak
-, Code
-    "test/typ/compiler/dict-00.typ"
-    ( line 11 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FieldAccess
-              (Ident (Identifier "normal")) (Ident (Identifier "dict")))
-       , NormalArg (Literal (Int 1))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/dict-00.typ"
-    ( line 12 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess (Ident (Identifier "at")) (Ident (Identifier "dict")))
-              [ NormalArg (Literal (String "spacy key")) ])
-       , NormalArg (Literal (Int 2))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [()]), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 text(body: [(normal: 1, spacy key: 2)]), 
-                 parbreak(), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/dict-01.out b/test/out/compiler/dict-01.out
deleted file mode 100644
--- a/test/out/compiler/dict-01.out
+++ /dev/null
@@ -1,130 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/dict-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/dict-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/dict-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/dict-01.typ"
-    ( line 3 , column 2 )
-    (Block
-       (CodeBlock
-          [ Let
-              (BasicBind (Just (Identifier "dict")))
-              (Dict
-                 [ Reg ( Ident (Identifier "a") , Literal (Int 1) )
-                 , Reg ( Literal (String "b b") , Literal (Int 1) )
-                 ])
-          , Assign
-              (FuncCall
-                 (FieldAccess (Ident (Identifier "at")) (Ident (Identifier "dict")))
-                 [ NormalArg (Literal (String "b b")) ])
-              (Plus
-                 (FuncCall
-                    (FieldAccess (Ident (Identifier "at")) (Ident (Identifier "dict")))
-                    [ NormalArg (Literal (String "b b")) ])
-                 (Literal (Int 1)))
-          , Assign
-              (FieldAccess
-                 (Ident (Identifier "state")) (Ident (Identifier "dict")))
-              (Dict
-                 [ Reg ( Ident (Identifier "ok") , Literal (Boolean True) )
-                 , Reg ( Ident (Identifier "err") , Literal (Boolean False) )
-                 ])
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg (Ident (Identifier "dict"))
-              , NormalArg
-                  (Dict
-                     [ Reg ( Ident (Identifier "a") , Literal (Int 1) )
-                     , Reg ( Literal (String "b b") , Literal (Int 2) )
-                     , Reg
-                         ( Ident (Identifier "state")
-                         , Dict
-                             [ Reg ( Ident (Identifier "ok") , Literal (Boolean True) )
-                             , Reg ( Ident (Identifier "err") , Literal (Boolean False) )
-                             ]
-                         )
-                     ])
-              ]
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg
-                  (FieldAccess
-                     (Ident (Identifier "ok"))
-                     (FieldAccess
-                        (Ident (Identifier "state")) (Ident (Identifier "dict"))))
-              , NormalArg (Literal (Boolean True))
-              ]
-          , Assign
-              (FieldAccess
-                 (Ident (Identifier "ok"))
-                 (FuncCall
-                    (FieldAccess (Ident (Identifier "at")) (Ident (Identifier "dict")))
-                    [ NormalArg (Literal (String "state")) ]))
-              (Literal (Boolean False))
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg
-                  (FieldAccess
-                     (Ident (Identifier "ok"))
-                     (FieldAccess
-                        (Ident (Identifier "state")) (Ident (Identifier "dict"))))
-              , NormalArg (Literal (Boolean False))
-              ]
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg
-                  (FieldAccess
-                     (Ident (Identifier "err"))
-                     (FieldAccess
-                        (Ident (Identifier "state")) (Ident (Identifier "dict"))))
-              , NormalArg (Literal (Boolean False))
-              ]
-          ]))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/dict-02.out b/test/out/compiler/dict-02.out
deleted file mode 100644
--- a/test/out/compiler/dict-02.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/dict-03.out b/test/out/compiler/dict-03.out
deleted file mode 100644
--- a/test/out/compiler/dict-03.out
+++ /dev/null
@@ -1,89 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/dict-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/dict-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/dict-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/dict-03.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "at"))
-                 (Dict
-                    [ Reg ( Ident (Identifier "a") , Literal (Int 1) )
-                    , Reg ( Ident (Identifier "b") , Literal (Int 2) )
-                    ]))
-              [ NormalArg (Literal (String "b"))
-              , KeyValArg (Identifier "default") (Literal (Int 3))
-              ])
-       , NormalArg (Literal (Int 2))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/dict-03.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "at"))
-                 (Dict
-                    [ Reg ( Ident (Identifier "a") , Literal (Int 1) )
-                    , Reg ( Ident (Identifier "b") , Literal (Int 2) )
-                    ]))
-              [ NormalArg (Literal (String "c"))
-              , KeyValArg (Identifier "default") (Literal (Int 3))
-              ])
-       , NormalArg (Literal (Int 3))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/dict-04.out b/test/out/compiler/dict-04.out
deleted file mode 100644
--- a/test/out/compiler/dict-04.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/dict-05.out b/test/out/compiler/dict-05.out
deleted file mode 100644
--- a/test/out/compiler/dict-05.out
+++ /dev/null
@@ -1,186 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/dict-05.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/dict-05.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/dict-05.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/dict-05.typ"
-    ( line 3 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "dict")))
-       (Dict
-          [ Reg ( Ident (Identifier "a") , Literal (Int 3) )
-          , Reg ( Ident (Identifier "c") , Literal (Int 2) )
-          , Reg ( Ident (Identifier "b") , Literal (Int 1) )
-          ]))
-, SoftBreak
-, Code
-    "test/typ/compiler/dict-05.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (InCollection (Literal (String "c")) (Ident (Identifier "dict")))
-       , NormalArg (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/dict-05.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "len")) (Ident (Identifier "dict")))
-              [])
-       , NormalArg (Literal (Int 3))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/dict-05.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "values")) (Ident (Identifier "dict")))
-              [])
-       , NormalArg
-           (Array
-              [ Reg (Literal (Int 3))
-              , Reg (Literal (Int 2))
-              , Reg (Literal (Int 1))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/dict-05.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "join"))
-                 (FuncCall
-                    (FieldAccess
-                       (Ident (Identifier "map"))
-                       (FuncCall
-                          (FieldAccess
-                             (Ident (Identifier "pairs")) (Ident (Identifier "dict")))
-                          []))
-                    [ NormalArg
-                        (FuncExpr
-                           [ NormalParam (Identifier "p") ]
-                           (Plus
-                              (FuncCall
-                                 (FieldAccess (Ident (Identifier "first")) (Ident (Identifier "p")))
-                                 [])
-                              (FuncCall
-                                 (Ident (Identifier "str"))
-                                 [ NormalArg
-                                     (FuncCall
-                                        (FieldAccess
-                                           (Ident (Identifier "last")) (Ident (Identifier "p")))
-                                        [])
-                                 ])))
-                    ]))
-              [])
-       , NormalArg (Literal (String "a3c2b1"))
-       ])
-, ParBreak
-, Code
-    "test/typ/compiler/dict-05.typ"
-    ( line 9 , column 2 )
-    (FuncCall
-       (FieldAccess
-          (Ident (Identifier "remove")) (Ident (Identifier "dict")))
-       [ NormalArg (Literal (String "c")) ])
-, SoftBreak
-, Code
-    "test/typ/compiler/dict-05.typ"
-    ( line 10 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (InCollection (Literal (String "c")) (Ident (Identifier "dict")))
-       , NormalArg (Literal (Boolean False))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/dict-05.typ"
-    ( line 11 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "dict"))
-       , NormalArg
-           (Dict
-              [ Reg ( Ident (Identifier "a") , Literal (Int 3) )
-              , Reg ( Ident (Identifier "b") , Literal (Int 1) )
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak(), 
-                 text(body: [2]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/dict-06.out b/test/out/compiler/dict-06.out
deleted file mode 100644
--- a/test/out/compiler/dict-06.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/dict-07.out b/test/out/compiler/dict-07.out
deleted file mode 100644
--- a/test/out/compiler/dict-07.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/dict-08.out b/test/out/compiler/dict-08.out
deleted file mode 100644
--- a/test/out/compiler/dict-08.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/dict-09.out b/test/out/compiler/dict-09.out
deleted file mode 100644
--- a/test/out/compiler/dict-09.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/dict-10.out b/test/out/compiler/dict-10.out
deleted file mode 100644
--- a/test/out/compiler/dict-10.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/field-00.out b/test/out/compiler/field-00.out
deleted file mode 100644
--- a/test/out/compiler/field-00.out
+++ /dev/null
@@ -1,90 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/field-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/field-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/field-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/field-00.typ"
-    ( line 3 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "dict")))
-       (Dict
-          [ Reg ( Ident (Identifier "nothing") , Literal (String "ness") )
-          , Reg ( Ident (Identifier "hello") , Literal (String "world") )
-          ]))
-, SoftBreak
-, Code
-    "test/typ/compiler/field-00.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FieldAccess
-              (Ident (Identifier "nothing")) (Ident (Identifier "dict")))
-       , NormalArg (Literal (String "ness"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/field-00.typ"
-    ( line 5 , column 2 )
-    (Block
-       (CodeBlock
-          [ Let
-              (BasicBind (Just (Identifier "world")))
-              (FieldAccess
-                 (Ident (Identifier "hello")) (Ident (Identifier "dict")))
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg (Ident (Identifier "world"))
-              , NormalArg (Literal (String "world"))
-              ]
-          ]))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/field-01.out b/test/out/compiler/field-01.out
deleted file mode 100644
--- a/test/out/compiler/field-01.out
+++ /dev/null
@@ -1,75 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/field-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/field-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/field-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/field-01.typ"
-    ( line 3 , column 2 )
-    (Show
-       (Just (Ident (Identifier "list")))
-       (FuncExpr
-          [ NormalParam (Identifier "it") ]
-          (Block
-             (CodeBlock
-                [ FuncCall
-                    (Ident (Identifier "test"))
-                    [ NormalArg
-                        (FuncCall
-                           (FieldAccess
-                              (Ident (Identifier "len"))
-                              (FieldAccess
-                                 (Ident (Identifier "children")) (Ident (Identifier "it"))))
-                           [])
-                    , NormalArg (Literal (Int 3))
-                    ]
-                ]))))
-, ParBreak
-, BulletListItem [ Text "A" ]
-, SoftBreak
-, BulletListItem [ Text "B" ]
-, SoftBreak
-, BulletListItem [ Text "C" , ParBreak ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [✅]) })
diff --git a/test/out/compiler/field-02.out b/test/out/compiler/field-02.out
deleted file mode 100644
--- a/test/out/compiler/field-02.out
+++ /dev/null
@@ -1,69 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/field-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/field-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/field-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/field-02.typ"
-    ( line 3 , column 2 )
-    (FieldAccess
-       (Ident (Identifier "item")) (Ident (Identifier "enum")))
-, SoftBreak
-, Code
-    "test/typ/compiler/field-02.typ"
-    ( line 4 , column 2 )
-    (FieldAccess
-       (Ident (Identifier "eq")) (Ident (Identifier "assert")))
-, SoftBreak
-, Code
-    "test/typ/compiler/field-02.typ"
-    ( line 5 , column 2 )
-    (FieldAccess
-       (Ident (Identifier "ne")) (Ident (Identifier "assert")))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak() })
diff --git a/test/out/compiler/field-03.out b/test/out/compiler/field-03.out
deleted file mode 100644
--- a/test/out/compiler/field-03.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/field-04.out b/test/out/compiler/field-04.out
deleted file mode 100644
--- a/test/out/compiler/field-04.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/field-05.out b/test/out/compiler/field-05.out
deleted file mode 100644
--- a/test/out/compiler/field-05.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/field-06.out b/test/out/compiler/field-06.out
deleted file mode 100644
--- a/test/out/compiler/field-06.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/field-07.out b/test/out/compiler/field-07.out
deleted file mode 100644
--- a/test/out/compiler/field-07.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/field-08.out b/test/out/compiler/field-08.out
deleted file mode 100644
--- a/test/out/compiler/field-08.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/field-09.out b/test/out/compiler/field-09.out
deleted file mode 100644
--- a/test/out/compiler/field-09.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/field-10.out b/test/out/compiler/field-10.out
deleted file mode 100644
--- a/test/out/compiler/field-10.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/for-00.out b/test/out/compiler/for-00.out
deleted file mode 100644
--- a/test/out/compiler/for-00.out
+++ /dev/null
@@ -1,302 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/for-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/for-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/for-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/for-00.typ"
-    ( line 5 , column 2 )
-    (For
-       (BasicBind (Just (Identifier "x")))
-       (Array [])
-       (Block (Content [ Text "Nope" ])))
-, ParBreak
-, Comment
-, Comment
-, Code
-    "test/typ/compiler/for-00.typ"
-    ( line 9 , column 2 )
-    (For
-       (DestructuringBind
-          [ Simple (Just (Identifier "k"))
-          , Simple (Just (Identifier "v"))
-          ])
-       (Dict
-          [ Reg ( Ident (Identifier "Name") , Literal (String "Typst") )
-          , Reg ( Ident (Identifier "Age") , Literal (Int 2) )
-          ])
-       (Block
-          (Content
-             [ SoftBreak
-             , Code
-                 "test/typ/compiler/for-00.typ"
-                 ( line 10 , column 4 )
-                 (Ident (Identifier "k"))
-             , Text ":"
-             , Space
-             , Code
-                 "test/typ/compiler/for-00.typ"
-                 ( line 10 , column 8 )
-                 (Ident (Identifier "v"))
-             , Text "."
-             , ParBreak
-             ])))
-, ParBreak
-, Comment
-, Comment
-, Code
-    "test/typ/compiler/for-00.typ"
-    ( line 15 , column 2 )
-    (Block
-       (CodeBlock
-          [ Literal (String "[")
-          , For
-              (BasicBind (Just (Identifier "v")))
-              (Array
-                 [ Reg (Literal (Int 1))
-                 , Reg (Literal (Int 2))
-                 , Reg (Literal (Int 3))
-                 , Reg (Literal (Int 4))
-                 ])
-              (Block
-                 (CodeBlock
-                    [ If
-                        [ ( GreaterThan (Ident (Identifier "v")) (Literal (Int 1))
-                          , Block (Content [ Text "," , Space ])
-                          )
-                        ]
-                    , Block
-                        (Content
-                           [ Code
-                               "test/typ/compiler/for-00.typ"
-                               ( line 19 , column 7 )
-                               (Ident (Identifier "v"))
-                           ])
-                    , If
-                        [ ( Equals (Ident (Identifier "v")) (Literal (Int 1))
-                          , Block (Content [ Text "st" ])
-                          )
-                        ]
-                    , If
-                        [ ( Equals (Ident (Identifier "v")) (Literal (Int 2))
-                          , Block (Content [ Text "nd" ])
-                          )
-                        ]
-                    , If
-                        [ ( Equals (Ident (Identifier "v")) (Literal (Int 3))
-                          , Block (Content [ Text "rd" ])
-                          )
-                        ]
-                    , If
-                        [ ( GreaterThanOrEqual (Ident (Identifier "v")) (Literal (Int 4))
-                          , Block (Content [ Text "th" ])
-                          )
-                        ]
-                    ]))
-          , Literal (String "]")
-          ]))
-, ParBreak
-, Comment
-, Comment
-, Code
-    "test/typ/compiler/for-00.typ"
-    ( line 30 , column 2 )
-    (For
-       (BasicBind (Just (Identifier "v")))
-       (Array
-          [ Reg (Literal (Int 1))
-          , Reg (Literal (Int 2))
-          , Reg (Literal (Int 3))
-          , Reg (Literal (Int 4))
-          , Reg (Literal (Int 5))
-          , Reg (Literal (Int 6))
-          , Reg (Literal (Int 7))
-          ])
-       (Block
-          (Content
-             [ Code
-                 "test/typ/compiler/for-00.typ"
-                 ( line 30 , column 35 )
-                 (If
-                    [ ( And
-                          (GreaterThanOrEqual (Ident (Identifier "v")) (Literal (Int 2)))
-                          (LessThanOrEqual (Ident (Identifier "v")) (Literal (Int 5)))
-                      , Block
-                          (CodeBlock
-                             [ FuncCall
-                                 (Ident (Identifier "repr")) [ NormalArg (Ident (Identifier "v")) ]
-                             ])
-                      )
-                    ])
-             ])))
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/for-00.typ"
-    ( line 33 , column 2 )
-    (LetFunc
-       (Identifier "f1")
-       [ SinkParam (Just (Identifier "args")) ]
-       (FuncCall
-          (FieldAccess
-             (Ident (Identifier "map"))
-             (FuncCall
-                (FieldAccess
-                   (Ident (Identifier "pos")) (Ident (Identifier "args")))
-                []))
-          [ NormalArg (Ident (Identifier "repr")) ]))
-, SoftBreak
-, Code
-    "test/typ/compiler/for-00.typ"
-    ( line 34 , column 2 )
-    (LetFunc
-       (Identifier "f2")
-       [ SinkParam (Just (Identifier "args")) ]
-       (FuncCall
-          (FieldAccess
-             (Ident (Identifier "map"))
-             (FuncCall
-                (FieldAccess
-                   (Ident (Identifier "pairs"))
-                   (FuncCall
-                      (FieldAccess
-                         (Ident (Identifier "named")) (Ident (Identifier "args")))
-                      []))
-                []))
-          [ NormalArg
-              (FuncExpr
-                 [ NormalParam (Identifier "p") ]
-                 (Plus
-                    (Plus
-                       (FuncCall
-                          (Ident (Identifier "repr"))
-                          [ NormalArg
-                              (FuncCall
-                                 (FieldAccess (Ident (Identifier "first")) (Ident (Identifier "p")))
-                                 [])
-                          ])
-                       (Literal (String ": ")))
-                    (FuncCall
-                       (Ident (Identifier "repr"))
-                       [ NormalArg
-                           (FuncCall
-                              (FieldAccess (Ident (Identifier "last")) (Ident (Identifier "p")))
-                              [])
-                       ])))
-          ]))
-, SoftBreak
-, Code
-    "test/typ/compiler/for-00.typ"
-    ( line 35 , column 2 )
-    (LetFunc
-       (Identifier "f")
-       [ SinkParam (Just (Identifier "args")) ]
-       (FuncCall
-          (FieldAccess
-             (Ident (Identifier "join"))
-             (Plus
-                (FuncCall
-                   (Ident (Identifier "f1"))
-                   [ SpreadArg (Ident (Identifier "args")) ])
-                (FuncCall
-                   (Ident (Identifier "f2"))
-                   [ SpreadArg (Ident (Identifier "args")) ])))
-          [ NormalArg (Literal (String ", ")) ]))
-, SoftBreak
-, Code
-    "test/typ/compiler/for-00.typ"
-    ( line 36 , column 2 )
-    (FuncCall
-       (Ident (Identifier "f"))
-       [ NormalArg (Literal (Int 1))
-       , KeyValArg (Identifier "a") (Literal (Int 2))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 text(body: [Name]), 
-                 text(body: [: ]), 
-                 text(body: [Typst]), 
-                 text(body: [.]), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 text(body: [Age]), 
-                 text(body: [: ]), 
-                 text(body: [2]), 
-                 text(body: [.]), 
-                 parbreak(), 
-                 parbreak(), 
-                 text(body: [[]), 
-                 text(body: [1]), 
-                 text(body: [st]), 
-                 text(body: [, ]), 
-                 text(body: [2]), 
-                 text(body: [nd]), 
-                 text(body: [, ]), 
-                 text(body: [3]), 
-                 text(body: [rd]), 
-                 text(body: [, ]), 
-                 text(body: [4]), 
-                 text(body: [th]), 
-                 text(body: []]), 
-                 parbreak(), 
-                 text(body: [2]), 
-                 text(body: [3]), 
-                 text(body: [4]), 
-                 text(body: [5]), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [1, "a": 2]), 
-                 parbreak() })
diff --git a/test/out/compiler/for-01.out b/test/out/compiler/for-01.out
deleted file mode 100644
--- a/test/out/compiler/for-01.out
+++ /dev/null
@@ -1,260 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/for-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/for-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/for-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/compiler/for-01.typ"
-    ( line 2 , column 2 )
-    (Let (BasicBind (Just (Identifier "out"))) (Array []))
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/for-01.typ"
-    ( line 5 , column 2 )
-    (For
-       (BasicBind (Just (Identifier "v")))
-       (Array
-          [ Reg (Literal (Int 1))
-          , Reg (Literal (Int 2))
-          , Reg (Literal (Int 3))
-          ])
-       (Block
-          (CodeBlock
-             [ Assign
-                 (Ident (Identifier "out"))
-                 (Plus
-                    (Ident (Identifier "out"))
-                    (Array [ Reg (Ident (Identifier "v")) ]))
-             ])))
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/for-01.typ"
-    ( line 10 , column 2 )
-    (For
-       (DestructuringBind
-          [ Simple (Just (Identifier "i"))
-          , Simple (Just (Identifier "v"))
-          ])
-       (FuncCall
-          (FieldAccess
-             (Ident (Identifier "enumerate"))
-             (Array
-                [ Reg (Literal (String "1"))
-                , Reg (Literal (String "2"))
-                , Reg (Literal (String "3"))
-                ]))
-          [])
-       (Block
-          (CodeBlock
-             [ FuncCall
-                 (Ident (Identifier "test"))
-                 [ NormalArg
-                     (FuncCall
-                        (Ident (Identifier "repr"))
-                        [ NormalArg (Plus (Ident (Identifier "i")) (Literal (Int 1))) ])
-                 , NormalArg (Ident (Identifier "v"))
-                 ]
-             ])))
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/for-01.typ"
-    ( line 15 , column 2 )
-    (For
-       (BasicBind (Just (Identifier "v")))
-       (Dict
-          [ Reg ( Ident (Identifier "a") , Literal (Int 4) )
-          , Reg ( Ident (Identifier "b") , Literal (Int 5) )
-          ])
-       (Block
-          (CodeBlock
-             [ Assign
-                 (Ident (Identifier "out"))
-                 (Plus
-                    (Ident (Identifier "out"))
-                    (Array [ Reg (Ident (Identifier "v")) ]))
-             ])))
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/for-01.typ"
-    ( line 20 , column 2 )
-    (For
-       (DestructuringBind
-          [ Simple (Just (Identifier "k"))
-          , Simple (Just (Identifier "v"))
-          ])
-       (Dict
-          [ Reg ( Ident (Identifier "a") , Literal (Int 6) )
-          , Reg ( Ident (Identifier "b") , Literal (Int 7) )
-          ])
-       (Block
-          (CodeBlock
-             [ Assign
-                 (Ident (Identifier "out"))
-                 (Plus
-                    (Ident (Identifier "out"))
-                    (Array [ Reg (Ident (Identifier "k")) ]))
-             , Assign
-                 (Ident (Identifier "out"))
-                 (Plus
-                    (Ident (Identifier "out"))
-                    (Array [ Reg (Ident (Identifier "v")) ]))
-             ])))
-, ParBreak
-, Code
-    "test/typ/compiler/for-01.typ"
-    ( line 25 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "out"))
-       , NormalArg
-           (Array
-              [ Reg (Literal (Int 1))
-              , Reg (Literal (Int 2))
-              , Reg (Literal (Int 3))
-              , Reg
-                  (Array [ Reg (Literal (String "a")) , Reg (Literal (Int 4)) ])
-              , Reg
-                  (Array [ Reg (Literal (String "b")) , Reg (Literal (Int 5)) ])
-              , Reg (Literal (String "a"))
-              , Reg (Literal (Int 6))
-              , Reg (Literal (String "b"))
-              , Reg (Literal (Int 7))
-              ])
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/for-01.typ"
-    ( line 28 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "first"))) (Literal (Boolean True)))
-, SoftBreak
-, Code
-    "test/typ/compiler/for-01.typ"
-    ( line 29 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "joined")))
-       (For
-          (BasicBind (Just (Identifier "c")))
-          (Literal (String "abc\128105\8205\128105\8205\128102\8205\128102"))
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Not (Ident (Identifier "first"))
-                      , Block (CodeBlock [ Literal (String ", ") ])
-                      )
-                    ]
-                , Assign (Ident (Identifier "first")) (Literal (Boolean False))
-                , Ident (Identifier "c")
-                ]))))
-, ParBreak
-, Code
-    "test/typ/compiler/for-01.typ"
-    ( line 35 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "joined"))
-       , NormalArg
-           (Literal
-              (String "a, b, c, \128105\8205\128105\8205\128102\8205\128102"))
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/for-01.typ"
-    ( line 38 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (For
-              (BasicBind (Just (Identifier "v")))
-              (Literal (String ""))
-              (Block (Content [])))
-       , NormalArg (Literal None)
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/for-01.typ"
-    ( line 39 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "type"))
-              [ NormalArg
-                  (For
-                     (BasicBind (Just (Identifier "v")))
-                     (Literal (String "1"))
-                     (Block (Content [])))
-              ])
-       , NormalArg (Literal (String "content"))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 parbreak(), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 parbreak(), 
-                 parbreak(), 
-                 parbreak(), 
-                 text(body: [✅]), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [❌(]), 
-                 text(body: ["a, b, c, 👩, ‍, 👩, ‍, 👦, ‍, 👦"]), 
-                 text(body: [ /= ]), 
-                 text(body: ["a, b, c, 👩‍👩‍👦‍👦"]), 
-                 text(body: [)]), 
-                 parbreak(), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/for-02.out b/test/out/compiler/for-02.out
deleted file mode 100644
--- a/test/out/compiler/for-02.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/for-03.out b/test/out/compiler/for-03.out
deleted file mode 100644
--- a/test/out/compiler/for-03.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/for-04.out b/test/out/compiler/for-04.out
deleted file mode 100644
--- a/test/out/compiler/for-04.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/highlight-00.out b/test/out/compiler/highlight-00.out
deleted file mode 100644
--- a/test/out/compiler/highlight-00.out
+++ /dev/null
@@ -1,61 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/highlight-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/highlight-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/highlight-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/compiler/highlight-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal Auto) ])
-, ParBreak
-, RawBlock
-    "typ"
-    "#set hello()\n#set hello()\n#set hello.world()\n#set hello.my.world()\n#let foo(x) = x * 2\n#show heading: func\n#show module.func: func\n#show module.func: it => {}\n#foo(ident: ident)\n#hello\n#hello()\n#box[]\n#hello.world\n#hello.world()\n#hello().world()\n#hello.my.world\n#hello.my.world()\n#hello.my().world\n#hello.my().world()\n#{ hello }\n#{ hello() }\n#{ hello.world() }\n$ hello $\n$ hello() $\n$ box[] $\n$ hello.world $\n$ hello.world() $\n$ hello.my.world() $\n$ f_zeta(x), f_zeta(x)/1 $\n$ emph(hello.my.world()) $\n$ emph(hello.my().world) $\n$ emph(hello.my().world()) $\n$ #hello $\n$ #hello() $\n$ #hello.world $\n$ #hello.world() $\n$ #box[] $\n#if foo []\n"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 raw(block: true, 
-                     lang: "typ", 
-                     text: "#set hello()\n#set hello()\n#set hello.world()\n#set hello.my.world()\n#let foo(x) = x * 2\n#show heading: func\n#show module.func: func\n#show module.func: it => {}\n#foo(ident: ident)\n#hello\n#hello()\n#box[]\n#hello.world\n#hello.world()\n#hello().world()\n#hello.my.world\n#hello.my.world()\n#hello.my().world\n#hello.my().world()\n#{ hello }\n#{ hello() }\n#{ hello.world() }\n$ hello $\n$ hello() $\n$ box[] $\n$ hello.world $\n$ hello.world() $\n$ hello.my.world() $\n$ f_zeta(x), f_zeta(x)/1 $\n$ emph(hello.my.world()) $\n$ emph(hello.my().world) $\n$ emph(hello.my().world()) $\n$ #hello $\n$ #hello() $\n$ #hello.world $\n$ #hello.world() $\n$ #box[] $\n#if foo []\n"), 
-                 parbreak() })
diff --git a/test/out/compiler/hint-00.out b/test/out/compiler/hint-00.out
deleted file mode 100644
--- a/test/out/compiler/hint-00.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/hint-01.out b/test/out/compiler/hint-01.out
deleted file mode 100644
--- a/test/out/compiler/hint-01.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/hint-02.out b/test/out/compiler/hint-02.out
deleted file mode 100644
--- a/test/out/compiler/hint-02.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/if-00.out b/test/out/compiler/if-00.out
deleted file mode 100644
--- a/test/out/compiler/if-00.out
+++ /dev/null
@@ -1,82 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/if-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/if-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/if-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/if-00.typ"
-    ( line 3 , column 2 )
-    (If
-       [ ( LessThan (Literal (Int 1)) (Literal (Int 2))
-         , Block (Content [ SoftBreak , Text "One" , Text "." , ParBreak ])
-         )
-       ])
-, ParBreak
-, Code
-    "test/typ/compiler/if-00.typ"
-    ( line 7 , column 2 )
-    (If
-       [ ( Equals (Literal (Boolean True)) (Literal (Boolean False))
-         , Block
-             (Content
-                [ SoftBreak
-                , Text "{Bad},"
-                , Space
-                , Text "but"
-                , Space
-                , Text "we"
-                , Space
-                , Text "{dont"
-                , Text "-"
-                , Text "care}!"
-                , ParBreak
-                ])
-         )
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-One.]), 
-                 parbreak(), 
-                 parbreak(), 
-                 parbreak() })
diff --git a/test/out/compiler/if-01.out b/test/out/compiler/if-01.out
deleted file mode 100644
--- a/test/out/compiler/if-01.out
+++ /dev/null
@@ -1,163 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/if-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/if-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/if-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/if-01.typ"
-    ( line 3 , column 2 )
-    (If
-       [ ( Block (CodeBlock [ Literal (Boolean True) ])
-         , Block (Content [ SoftBreak , Text "One" , Text "." , ParBreak ])
-         )
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/if-01.typ"
-    ( line 8 , column 2 )
-    (If
-       [ ( Not (Equals (Block (Content [])) (Literal None))
-         , Block (Content [ SoftBreak , Text "Two" , Text "." , ParBreak ])
-         )
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/if-01.typ"
-    ( line 13 , column 2 )
-    (If
-       [ ( Equals
-             (Plus (Literal (Int 1)) (Literal (Int 1))) (Literal (Int 1))
-         , Block (Content [ SoftBreak , Text "Nope" , Text "." , ParBreak ])
-         )
-       , ( Literal (Boolean True)
-         , Block (CodeBlock [ Literal (String "Three.") ])
-         )
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/if-01.typ"
-    ( line 23 , column 2 )
-    (If
-       [ ( Literal (Boolean False)
-         , Block (Content [ SoftBreak , Text "Bad" , Text "." , ParBreak ])
-         )
-       , ( Literal (Boolean True)
-         , Block
-             (CodeBlock
-                [ Let
-                    (BasicBind (Just (Identifier "point"))) (Literal (String "."))
-                , Plus (Literal (String "Four")) (Ident (Identifier "point"))
-                ])
-         )
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/if-01.typ"
-    ( line 31 , column 2 )
-    (Block
-       (CodeBlock
-          [ If
-              [ ( Equals
-                    (Literal (String "content"))
-                    (FuncCall (Ident (Identifier "type")) [ BlockArg [ Text "b" ] ])
-                , Block (Content [ Text "Fi" ])
-                )
-              , ( Literal (Boolean True) , Block (Content [ Text "Nope" ]) )
-              ]
-          , If
-              [ ( Equals (Literal (String "content")) (Ident (Identifier "type"))
-                , Block (Content [ Text "Nope" ])
-                )
-              , ( Literal (Boolean True)
-                , Block (Content [ Text "ve" , Text "." ])
-                )
-              ]
-          ]))
-, ParBreak
-, Code
-    "test/typ/compiler/if-01.typ"
-    ( line 36 , column 2 )
-    (Let (BasicBind (Just (Identifier "i"))) (Literal (Int 3)))
-, SoftBreak
-, Code
-    "test/typ/compiler/if-01.typ"
-    ( line 37 , column 2 )
-    (If
-       [ ( LessThan (Ident (Identifier "i")) (Literal (Int 2))
-         , Block (Content [ SoftBreak , Text "Five" , Text "." , ParBreak ])
-         )
-       , ( LessThan (Ident (Identifier "i")) (Literal (Int 4))
-         , Block (Content [ SoftBreak , Text "Six" , Text "." , ParBreak ])
-         )
-       , ( Literal (Boolean True)
-         , Block
-             (Content [ SoftBreak , Text "Seven" , Text "." , ParBreak ])
-         )
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-One.]), 
-                 parbreak(), 
-                 parbreak(), 
-                 text(body: [
-Two.]), 
-                 parbreak(), 
-                 parbreak(), 
-                 text(body: [Three.]), 
-                 parbreak(), 
-                 text(body: [Four.]), 
-                 parbreak(), 
-                 text(body: [Fi]), 
-                 text(body: [ve.]), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 text(body: [
-Six.]), 
-                 parbreak(), 
-                 parbreak() })
diff --git a/test/out/compiler/if-02.out b/test/out/compiler/if-02.out
deleted file mode 100644
--- a/test/out/compiler/if-02.out
+++ /dev/null
@@ -1,146 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/if-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/if-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/if-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, SoftBreak
-, Code
-    "test/typ/compiler/if-02.typ"
-    ( line 5 , column 2 )
-    (LetFunc
-       (Identifier "nth")
-       [ NormalParam (Identifier "n") ]
-       (Block
-          (CodeBlock
-             [ FuncCall
-                 (Ident (Identifier "str")) [ NormalArg (Ident (Identifier "n")) ]
-             , If
-                 [ ( Equals (Ident (Identifier "n")) (Literal (Int 1))
-                   , Block (CodeBlock [ Literal (String "st") ])
-                   )
-                 , ( Equals (Ident (Identifier "n")) (Literal (Int 2))
-                   , Block (CodeBlock [ Literal (String "nd") ])
-                   )
-                 , ( Equals (Ident (Identifier "n")) (Literal (Int 3))
-                   , Block (CodeBlock [ Literal (String "rd") ])
-                   )
-                 , ( Literal (Boolean True)
-                   , Block (CodeBlock [ Literal (String "th") ])
-                   )
-                 ]
-             ])))
-, ParBreak
-, Code
-    "test/typ/compiler/if-02.typ"
-    ( line 13 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "nth")) [ NormalArg (Literal (Int 1)) ])
-       , NormalArg (Literal (String "1st"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/if-02.typ"
-    ( line 14 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "nth")) [ NormalArg (Literal (Int 2)) ])
-       , NormalArg (Literal (String "2nd"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/if-02.typ"
-    ( line 15 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "nth")) [ NormalArg (Literal (Int 3)) ])
-       , NormalArg (Literal (String "3rd"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/if-02.typ"
-    ( line 16 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "nth")) [ NormalArg (Literal (Int 4)) ])
-       , NormalArg (Literal (String "4th"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/if-02.typ"
-    ( line 17 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "nth")) [ NormalArg (Literal (Int 5)) ])
-       , NormalArg (Literal (String "5th"))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/if-03.out b/test/out/compiler/if-03.out
deleted file mode 100644
--- a/test/out/compiler/if-03.out
+++ /dev/null
@@ -1,101 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/if-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/if-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/if-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, SoftBreak
-, Code
-    "test/typ/compiler/if-03.typ"
-    ( line 5 , column 2 )
-    (Block
-       (CodeBlock
-          [ Let (BasicBind (Just (Identifier "x"))) (Literal (Int 1))
-          , Let (BasicBind (Just (Identifier "y"))) (Literal (Int 2))
-          , Let (BasicBind (Just (Identifier "z"))) (Literal None)
-          , Assign
-              (Ident (Identifier "z"))
-              (If
-                 [ ( LessThan (Ident (Identifier "x")) (Ident (Identifier "y"))
-                   , Block (CodeBlock [ Literal (String "ok") ])
-                   )
-                 ])
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg (Ident (Identifier "z"))
-              , NormalArg (Literal (String "ok"))
-              ]
-          , Assign
-              (Ident (Identifier "z"))
-              (If
-                 [ ( GreaterThan (Ident (Identifier "x")) (Ident (Identifier "y"))
-                   , Block (CodeBlock [ Literal (String "bad") ])
-                   )
-                 , ( Literal (Boolean True)
-                   , Block (CodeBlock [ Literal (String "ok") ])
-                   )
-                 ])
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg (Ident (Identifier "z"))
-              , NormalArg (Literal (String "ok"))
-              ]
-          , Assign
-              (Ident (Identifier "z"))
-              (If
-                 [ ( GreaterThan (Ident (Identifier "x")) (Ident (Identifier "y"))
-                   , Block (CodeBlock [ Literal (String "bad") ])
-                   )
-                 ])
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg (Ident (Identifier "z")) , NormalArg (Literal None) ]
-          ]))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/if-04.out b/test/out/compiler/if-04.out
deleted file mode 100644
--- a/test/out/compiler/if-04.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/if-05.out b/test/out/compiler/if-05.out
deleted file mode 100644
--- a/test/out/compiler/if-05.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/if-06.out b/test/out/compiler/if-06.out
deleted file mode 100644
--- a/test/out/compiler/if-06.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/import-00.out b/test/out/compiler/import-00.out
deleted file mode 100644
--- a/test/out/compiler/import-00.out
+++ /dev/null
@@ -1,106 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/import-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/import-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/import-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/import-00.typ"
-    ( line 6 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "value")))
-       (Block (Content [ Text "foo" ])))
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/import-00.typ"
-    ( line 9 , column 2 )
-    (Import
-       (Literal (String "module.typ"))
-       (SomeIdentifiers
-          [ ( Identifier "fn" , Nothing )
-          , ( Identifier "value" , Nothing )
-          ]))
-, SoftBreak
-, Code
-    "test/typ/compiler/import-00.typ"
-    ( line 10 , column 2 )
-    (FuncCall
-       (Ident (Identifier "fn"))
-       [ BlockArg
-           [ Text "Like" , Space , Text "and" , Space , Text "Subscribe!" ]
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/import-00.typ"
-    ( line 11 , column 2 )
-    (Ident (Identifier "value"))
-, ParBreak
-, Comment
-, Comment
-, Code
-    "test/typ/compiler/import-00.typ"
-    ( line 15 , column 2 )
-    (Import
-       (Literal (String "module.typ"))
-       (SomeIdentifiers
-          [ ( Identifier "a" , Nothing ) , ( Identifier "c" , Nothing ) ]))
-, Text "bye"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 rect(body: text(body: [Like and Subscribe!]), 
-                      fill: rgb(18%,80%,25%,100%), 
-                      inset: 5.0pt), 
-                 text(body: [
-]), 
-                 text(body: [hi]), 
-                 parbreak(), 
-                 text(body: [bye]), 
-                 parbreak() })
diff --git a/test/out/compiler/import-01.out b/test/out/compiler/import-01.out
deleted file mode 100644
--- a/test/out/compiler/import-01.out
+++ /dev/null
@@ -1,115 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/import-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/import-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/import-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/import-01.typ"
-    ( line 3 , column 2 )
-    (Import
-       (Literal (String "module.typ"))
-       (SomeIdentifiers [ ( Identifier "item" , Nothing ) ]))
-, SoftBreak
-, Code
-    "test/typ/compiler/import-01.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "item"))
-              [ NormalArg (Literal (Int 1)) , NormalArg (Literal (Int 2)) ])
-       , NormalArg (Literal (Int 3))
-       ])
-, ParBreak
-, Comment
-, Text "{"
-, SoftBreak
-, Text "import"
-, Space
-, Quote '"'
-, Text "module"
-, Text "."
-, Text "typ"
-, Quote '"'
-, Text ":"
-, Space
-, Text "b"
-, SoftBreak
-, Text "test"
-, Text "("
-, Text "b,"
-, Space
-, Text "1)"
-, SoftBreak
-, Text "}"
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/import-01.typ"
-    ( line 13 , column 2 )
-    (Import (Literal (String "module.typ")) AllIdentifiers)
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/import-01.typ"
-    ( line 16 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "d"))
-       , NormalArg (Literal (Int 3))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak(), 
-                 text(body: [{
-import “module.typ”: b
-test(b, 1)
-}]), 
-                 parbreak(), 
-                 parbreak(), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/import-02.out b/test/out/compiler/import-02.out
deleted file mode 100644
--- a/test/out/compiler/import-02.out
+++ /dev/null
@@ -1,108 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/import-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/import-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/import-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, SoftBreak
-, Code
-    "test/typ/compiler/import-02.typ"
-    ( line 5 , column 2 )
-    (Import
-       (Ident (Identifier "enum"))
-       (SomeIdentifiers [ ( Identifier "item" , Nothing ) ]))
-, SoftBreak
-, Code
-    "test/typ/compiler/import-02.typ"
-    ( line 6 , column 2 )
-    (Import
-       (FuncCall
-          (FieldAccess
-             (Ident (Identifier "with")) (Ident (Identifier "assert")))
-          [ NormalArg (Literal (Boolean True)) ])
-       AllIdentifiers)
-, ParBreak
-, Code
-    "test/typ/compiler/import-02.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "enum"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "item"))
-              [ NormalArg (Literal (Int 1)) , BlockArg [ Text "First" ] ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "item"))
-              [ NormalArg (Literal (Int 5)) , BlockArg [ Text "Fifth" ] ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/import-02.typ"
-    ( line 12 , column 2 )
-    (FuncCall
-       (Ident (Identifier "eq"))
-       [ NormalArg (Literal (Int 10)) , NormalArg (Literal (Int 10)) ])
-, SoftBreak
-, Code
-    "test/typ/compiler/import-02.typ"
-    ( line 13 , column 2 )
-    (FuncCall
-       (Ident (Identifier "ne"))
-       [ NormalArg (Literal (Int 5)) , NormalArg (Literal (Int 6)) ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 enum(children: (enum.item(body: text(body: [First]), 
-                                           number: 1), 
-                                 enum.item(body: text(body: [Fifth]), 
-                                           number: 5))), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak() })
diff --git a/test/out/compiler/import-03.out b/test/out/compiler/import-03.out
deleted file mode 100644
--- a/test/out/compiler/import-03.out
+++ /dev/null
@@ -1,98 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/import-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/import-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/import-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/import-03.typ"
-    ( line 3 , column 2 )
-    (Import (Literal (String "module.typ")) (NoIdentifiers Nothing))
-, SoftBreak
-, Code
-    "test/typ/compiler/import-03.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FieldAccess
-              (Ident (Identifier "b")) (Ident (Identifier "module")))
-       , NormalArg (Literal (Int 1))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/import-03.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "item")) (Ident (Identifier "module")))
-              [ NormalArg (Literal (Int 1)) , NormalArg (Literal (Int 2)) ])
-       , NormalArg (Literal (Int 3))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/import-03.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "push")) (Ident (Identifier "module")))
-              [ NormalArg (Literal (Int 2)) ])
-       , NormalArg (Literal (Int 3))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/import-04.out b/test/out/compiler/import-04.out
deleted file mode 100644
--- a/test/out/compiler/import-04.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/import-05.out b/test/out/compiler/import-05.out
deleted file mode 100644
--- a/test/out/compiler/import-05.out
+++ /dev/null
@@ -1,62 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/import-05.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/import-05.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/import-05.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/import-05.typ"
-    ( line 3 , column 2 )
-    (Import (Literal (String "module.typ")) AllIdentifiers)
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/import-05.typ"
-    ( line 6 , column 2 )
-    (Import
-       (Literal (String "module.typ"))
-       (SomeIdentifiers
-          [ ( Identifier "a" , Nothing ) , ( Identifier "c" , Nothing ) ]))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 parbreak() })
diff --git a/test/out/compiler/import-06.out b/test/out/compiler/import-06.out
deleted file mode 100644
--- a/test/out/compiler/import-06.out
+++ /dev/null
@@ -1,90 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/import-06.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/import-06.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/import-06.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/import-06.typ"
-    ( line 3 , column 2 )
-    (Import (Ident (Identifier "enum")) (NoIdentifiers Nothing))
-, SoftBreak
-, Code
-    "test/typ/compiler/import-06.typ"
-    ( line 4 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "d")))
-       (Dict
-          [ Reg ( Ident (Identifier "e") , Ident (Identifier "enum") ) ]))
-, SoftBreak
-, Code
-    "test/typ/compiler/import-06.typ"
-    ( line 5 , column 2 )
-    (Import
-       (FieldAccess (Ident (Identifier "e")) (Ident (Identifier "d")))
-       (NoIdentifiers Nothing))
-, SoftBreak
-, Code
-    "test/typ/compiler/import-06.typ"
-    ( line 6 , column 2 )
-    (Import
-       (FieldAccess (Ident (Identifier "e")) (Ident (Identifier "d")))
-       (SomeIdentifiers [ ( Identifier "item" , Nothing ) ]))
-, ParBreak
-, Code
-    "test/typ/compiler/import-06.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "item"))
-       [ NormalArg (Literal (Int 2)) , BlockArg [ Text "a" ] ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 enum.item(body: text(body: [a]), 
-                           number: 2), 
-                 parbreak() })
diff --git a/test/out/compiler/import-07.out b/test/out/compiler/import-07.out
deleted file mode 100644
--- a/test/out/compiler/import-07.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/import-08.out b/test/out/compiler/import-08.out
deleted file mode 100644
--- a/test/out/compiler/import-08.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/import-09.out b/test/out/compiler/import-09.out
deleted file mode 100644
--- a/test/out/compiler/import-09.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/import-10.out b/test/out/compiler/import-10.out
deleted file mode 100644
--- a/test/out/compiler/import-10.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/import-11.out b/test/out/compiler/import-11.out
deleted file mode 100644
--- a/test/out/compiler/import-11.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/import-12.out b/test/out/compiler/import-12.out
deleted file mode 100644
--- a/test/out/compiler/import-12.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/import-13.out b/test/out/compiler/import-13.out
deleted file mode 100644
--- a/test/out/compiler/import-13.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/import-14.out b/test/out/compiler/import-14.out
deleted file mode 100644
--- a/test/out/compiler/import-14.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/import-15.out b/test/out/compiler/import-15.out
deleted file mode 100644
--- a/test/out/compiler/import-15.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/import-16.out b/test/out/compiler/import-16.out
deleted file mode 100644
--- a/test/out/compiler/import-16.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/import-17.out b/test/out/compiler/import-17.out
deleted file mode 100644
--- a/test/out/compiler/import-17.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/import-18.out b/test/out/compiler/import-18.out
deleted file mode 100644
--- a/test/out/compiler/import-18.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/import-19.out b/test/out/compiler/import-19.out
deleted file mode 100644
--- a/test/out/compiler/import-19.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/import-20.out b/test/out/compiler/import-20.out
deleted file mode 100644
--- a/test/out/compiler/import-20.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/import-21.out b/test/out/compiler/import-21.out
deleted file mode 100644
--- a/test/out/compiler/import-21.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/import-22.out b/test/out/compiler/import-22.out
deleted file mode 100644
--- a/test/out/compiler/import-22.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/import-23.out b/test/out/compiler/import-23.out
deleted file mode 100644
--- a/test/out/compiler/import-23.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/import-24.out b/test/out/compiler/import-24.out
deleted file mode 100644
--- a/test/out/compiler/import-24.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/import-25.out b/test/out/compiler/import-25.out
deleted file mode 100644
--- a/test/out/compiler/import-25.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/include-00.out b/test/out/compiler/include-00.out
deleted file mode 100644
--- a/test/out/compiler/include-00.out
+++ /dev/null
@@ -1,122 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/include-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/include-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/include-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/compiler/include-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 200.0 Pt)) ])
-, ParBreak
-, Heading 1 [ Text "Document" ]
-, Comment
-, Code
-    "test/typ/compiler/include-00.typ"
-    ( line 7 , column 2 )
-    (Include (Literal (String "modules/chap1.typ")))
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/include-00.typ"
-    ( line 10 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "chap2")))
-       (Include
-          (Plus
-             (Plus (Literal (String "modu")) (Literal (String "les/chap")))
-             (Literal (String "2.typ")))))
-, ParBreak
-, EnDash
-, Space
-, Emph [ Text "Intermission" ]
-, Space
-, EnDash
-, SoftBreak
-, Code
-    "test/typ/compiler/include-00.typ"
-    ( line 13 , column 2 )
-    (Ident (Identifier "chap2"))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 heading(body: text(body: [Document]), 
-                         level: 1), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 heading(body: text(body: [Chapter 1]), 
-                         level: 2), 
-                 text(body: [Klaus]), 
-                 text(body: [ stood in a field of wheat. There was nothing of particular interest about
-the field ]), 
-                 text(body: [Klaus]), 
-                 text(body: [ just casually surveyed for any paths on which the corn would not
-totally ruin his semi-new outdorsy jacket but then again, most of us spend
-considerable time in non-descript environments.]), 
-                 parbreak(), 
-                 parbreak(), 
-                 parbreak(), 
-                 text(body: [– ]), 
-                 emph(body: text(body: [Intermission])), 
-                 text(body: [ –
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 heading(body: text(body: [Chapter 2]), 
-                         level: 2), 
-                 text(body: [Their motivations, however, were pretty descript, so to speak. ]), 
-                 text(body: [Klaus]), 
-                 text(body: [ had not yet
-conceptualized their consequences, but that should change pretty quickly. ]), 
-                 text(body: [Klaus]), 
-                 text(body: [
-approached the center of the field and picked up a 4-foot long disk made from
-what could only be cow manure. The hair on the back of ]), 
-                 text(body: [Klaus]), 
-                 text(body: [” neck bristled as
-he stared at the unusual sight. After studying the object for a while, he
-promptly popped the question, “How much?”]), 
-                 parbreak(), 
-                 parbreak() })
diff --git a/test/out/compiler/include-01.out b/test/out/compiler/include-01.out
deleted file mode 100644
--- a/test/out/compiler/include-01.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/include-02.out b/test/out/compiler/include-02.out
deleted file mode 100644
--- a/test/out/compiler/include-02.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/include-03.out b/test/out/compiler/include-03.out
deleted file mode 100644
--- a/test/out/compiler/include-03.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/label-00.out b/test/out/compiler/label-00.out
deleted file mode 100644
--- a/test/out/compiler/label-00.out
+++ /dev/null
@@ -1,96 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/label-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/label-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/label-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/label-00.typ"
-    ( line 3 , column 2 )
-    (Show
-       (Just (Ident (Identifier "heading")))
-       (Set
-          (Ident (Identifier "text"))
-          [ NormalArg (Literal (Numeric 10.0 Pt)) ]))
-, SoftBreak
-, Code
-    "test/typ/compiler/label-00.typ"
-    ( line 4 , column 2 )
-    (Show
-       (Just
-          (FuncCall
-             (FieldAccess
-                (Ident (Identifier "where")) (Ident (Identifier "heading")))
-             [ KeyValArg (Identifier "label") (Label "intro") ]))
-       (Ident (Identifier "underline")))
-, ParBreak
-, Heading 1 [ Text "Introduction" ]
-, Code
-    "test/typ/compiler/label-00.typ"
-    ( line 6 , column 16 )
-    (Label "intro")
-, SoftBreak
-, Text "The"
-, Space
-, Text "beginning"
-, Text "."
-, ParBreak
-, Heading 1 [ Text "Conclusion" ]
-, Text "The"
-, Space
-, Text "end"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 heading(body: text(body: [Introduction]), 
-                         level: 1), 
-                 <intro>, 
-                 text(body: [
-The beginning.]), 
-                 parbreak(), 
-                 heading(body: text(body: [Conclusion]), 
-                         level: 1), 
-                 text(body: [The end.]), 
-                 parbreak() })
diff --git a/test/out/compiler/label-01.out b/test/out/compiler/label-01.out
deleted file mode 100644
--- a/test/out/compiler/label-01.out
+++ /dev/null
@@ -1,95 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/label-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/label-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/label-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/label-01.typ"
-    ( line 3 , column 2 )
-    (Show
-       (Just
-          (FuncCall
-             (FieldAccess
-                (Ident (Identifier "where")) (Ident (Identifier "strong")))
-             [ KeyValArg (Identifier "label") (Label "v") ]))
-       (Set
-          (Ident (Identifier "text"))
-          [ NormalArg (Ident (Identifier "red")) ]))
-, ParBreak
-, Code
-    "test/typ/compiler/label-01.typ"
-    ( line 5 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "a")))
-       (Block (Content [ Strong [ Text "A" ] ])))
-, SoftBreak
-, Code
-    "test/typ/compiler/label-01.typ"
-    ( line 6 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "b")))
-       (Block (Content [ Strong [ Text "B" ] ])))
-, SoftBreak
-, Code
-    "test/typ/compiler/label-01.typ"
-    ( line 7 , column 2 )
-    (Ident (Identifier "a"))
-, Space
-, Code
-    "test/typ/compiler/label-01.typ" ( line 7 , column 4 ) (Label "v")
-, Code
-    "test/typ/compiler/label-01.typ"
-    ( line 7 , column 9 )
-    (Ident (Identifier "b"))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 strong(body: text(body: [A])), 
-                 text(body: [ ]), 
-                 <v>, 
-                 strong(body: text(body: [B])), 
-                 parbreak() })
diff --git a/test/out/compiler/label-02.out b/test/out/compiler/label-02.out
deleted file mode 100644
--- a/test/out/compiler/label-02.out
+++ /dev/null
@@ -1,102 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/label-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/label-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/label-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/label-02.typ"
-    ( line 3 , column 2 )
-    (Show
-       (Just (Literal (String "t")))
-       (FuncExpr
-          [ NormalParam (Identifier "it") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( And
-                          (FuncCall
-                             (FieldAccess (Ident (Identifier "has")) (Ident (Identifier "it")))
-                             [ NormalArg (Literal (String "label")) ])
-                          (Equals
-                             (FieldAccess
-                                (Ident (Identifier "label")) (Ident (Identifier "it")))
-                             (Label "last"))
-                      , Set
-                          (Ident (Identifier "text"))
-                          [ NormalArg (Ident (Identifier "blue")) ]
-                      )
-                    ]
-                , Ident (Identifier "it")
-                ]))))
-, ParBreak
-, Text "This"
-, Space
-, Text "is"
-, Space
-, Text "a"
-, Space
-, Text "thing"
-, Space
-, Code
-    "test/typ/compiler/label-02.typ"
-    ( line 8 , column 18 )
-    (Block
-       (Content
-          [ Text "that"
-          , Space
-          , Code
-              "test/typ/compiler/label-02.typ"
-              ( line 8 , column 24 )
-              (Label "last")
-          ]))
-, Space
-, Text "happened"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [This is a thing ]), 
-                 text(body: [that ]), 
-                 <last>, 
-                 text(body: [ happened.]), 
-                 parbreak() })
diff --git a/test/out/compiler/label-03.out b/test/out/compiler/label-03.out
deleted file mode 100644
--- a/test/out/compiler/label-03.out
+++ /dev/null
@@ -1,98 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/label-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/label-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/label-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/label-03.typ"
-    ( line 3 , column 2 )
-    (Show
-       (Just (Label "red"))
-       (Set
-          (Ident (Identifier "text"))
-          [ NormalArg (Ident (Identifier "red")) ]))
-, SoftBreak
-, Code
-    "test/typ/compiler/label-03.typ"
-    ( line 4 , column 2 )
-    (Show
-       (Just (Label "blue"))
-       (Set
-          (Ident (Identifier "text"))
-          [ NormalArg (Ident (Identifier "blue")) ]))
-, ParBreak
-, Strong [ Text "A" ]
-, Space
-, Strong [ Text "B" ]
-, Space
-, Code
-    "test/typ/compiler/label-03.typ"
-    ( line 6 , column 9 )
-    (Label "red")
-, Strong [ Text "C" ]
-, Space
-, Code
-    "test/typ/compiler/label-03.typ"
-    ( line 6 , column 20 )
-    (FuncCall
-       (Ident (Identifier "label"))
-       [ NormalArg (Plus (Literal (String "bl")) (Literal (String "ue")))
-       ])
-, Space
-, Strong [ Text "D" ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 strong(body: text(body: [A])), 
-                 text(body: [ ]), 
-                 strong(body: text(body: [B])), 
-                 text(body: [ ]), 
-                 <red>, 
-                 strong(body: text(body: [C])), 
-                 text(body: [ ]), 
-                 <blue>, 
-                 text(body: [ ]), 
-                 strong(body: text(body: [D])), 
-                 parbreak() })
diff --git a/test/out/compiler/label-04.out b/test/out/compiler/label-04.out
deleted file mode 100644
--- a/test/out/compiler/label-04.out
+++ /dev/null
@@ -1,80 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/label-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/label-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/label-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/label-04.typ"
-    ( line 3 , column 2 )
-    (Show (Just (Label "hide")) (Literal None))
-, ParBreak
-, Emph [ Text "Hidden" ]
-, SoftBreak
-, Code
-    "test/typ/compiler/label-04.typ"
-    ( line 6 , column 1 )
-    (Label "hide")
-, ParBreak
-, Emph [ Text "Hidden" ]
-, ParBreak
-, Code
-    "test/typ/compiler/label-04.typ"
-    ( line 10 , column 1 )
-    (Label "hide")
-, SoftBreak
-, Emph [ Text "Visible" ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 emph(body: text(body: [Hidden])), 
-                 text(body: [
-]), 
-                 <hide>, 
-                 parbreak(), 
-                 emph(body: text(body: [Hidden])), 
-                 parbreak(), 
-                 <hide>, 
-                 text(body: [
-]), 
-                 emph(body: text(body: [Visible])), 
-                 parbreak() })
diff --git a/test/out/compiler/label-05.out b/test/out/compiler/label-05.out
deleted file mode 100644
--- a/test/out/compiler/label-05.out
+++ /dev/null
@@ -1,87 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/label-05.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/label-05.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/label-05.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/label-05.typ"
-    ( line 3 , column 2 )
-    (Show (Just (Label "strike")) (Ident (Identifier "strike")))
-, SoftBreak
-, Strong [ Text "This" , Space , Text "is" ]
-, Space
-, Code
-    "test/typ/compiler/label-05.typ"
-    ( line 4 , column 12 )
-    (Block
-       (Content
-          [ Code
-              "test/typ/compiler/label-05.typ"
-              ( line 4 , column 13 )
-              (Label "strike")
-          ]))
-, Space
-, Strong [ Text "protected" , Text "." ]
-, SoftBreak
-, Strong
-    [ Text "This" , Space , Text "is" , Space , Text "not" , Text "." ]
-, Space
-, Code
-    "test/typ/compiler/label-05.typ"
-    ( line 5 , column 16 )
-    (Label "strike")
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 strong(body: text(body: [This is])), 
-                 text(body: [ ]), 
-                 <strike>, 
-                 text(body: [ ]), 
-                 strong(body: text(body: [protected.])), 
-                 text(body: [
-]), 
-                 strong(body: text(body: [This is not.])), 
-                 text(body: [ ]), 
-                 <strike>, 
-                 parbreak() })
diff --git a/test/out/compiler/label-06.out b/test/out/compiler/label-06.out
deleted file mode 100644
--- a/test/out/compiler/label-06.out
+++ /dev/null
@@ -1,72 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/label-06.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/label-06.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/label-06.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "1"
-, Space
-, Text "<"
-, Space
-, Text "2"
-, Space
-, Text "is"
-, Space
-, Code
-    "test/typ/compiler/label-06.typ"
-    ( line 3 , column 11 )
-    (If
-       [ ( LessThan (Literal (Int 1)) (Literal (Int 2))
-         , Block (Content [ Text "not" ])
-         )
-       ])
-, Space
-, Text "a"
-, Space
-, Text "label"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [1 < 2 is ]), 
-                 text(body: [not]), 
-                 text(body: [ a label.]), 
-                 parbreak() })
diff --git a/test/out/compiler/let-00.out b/test/out/compiler/let-00.out
deleted file mode 100644
--- a/test/out/compiler/let-00.out
+++ /dev/null
@@ -1,117 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/let-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/let-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/let-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/let-00.typ"
-    ( line 3 , column 2 )
-    (Let (BasicBind (Just (Identifier "x"))) (Literal None))
-, SoftBreak
-, Code
-    "test/typ/compiler/let-00.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "x")) , NormalArg (Literal None) ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/let-00.typ"
-    ( line 7 , column 2 )
-    (Let (BasicBind (Just (Identifier "z"))) (Literal (Int 1)))
-, SoftBreak
-, Code
-    "test/typ/compiler/let-00.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "z"))
-       , NormalArg (Literal (Int 1))
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/let-00.typ"
-    ( line 11 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "fill")))
-       (Ident (Identifier "green")))
-, SoftBreak
-, Code
-    "test/typ/compiler/let-00.typ"
-    ( line 12 , column 2 )
-    (LetFunc
-       (Identifier "f")
-       [ NormalParam (Identifier "body") ]
-       (FuncCall
-          (Ident (Identifier "rect"))
-          [ KeyValArg (Identifier "width") (Literal (Numeric 2.0 Cm))
-          , KeyValArg (Identifier "fill") (Ident (Identifier "fill"))
-          , KeyValArg (Identifier "inset") (Literal (Numeric 5.0 Pt))
-          , NormalArg (Ident (Identifier "body"))
-          ]))
-, SoftBreak
-, Code
-    "test/typ/compiler/let-00.typ"
-    ( line 13 , column 2 )
-    (FuncCall (Ident (Identifier "f")) [ BlockArg [ Text "Hi!" ] ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 rect(body: text(body: [Hi!]), 
-                      fill: rgb(18%,80%,25%,100%), 
-                      inset: 5.0pt, 
-                      width: 2.0cm), 
-                 parbreak() })
diff --git a/test/out/compiler/let-01.out b/test/out/compiler/let-01.out
deleted file mode 100644
--- a/test/out/compiler/let-01.out
+++ /dev/null
@@ -1,116 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/let-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/let-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/let-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/let-01.typ"
-    ( line 5 , column 2 )
-    (Let (BasicBind (Just (Identifier "v1"))) (Literal (Int 1)))
-, SoftBreak
-, Text "One"
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/let-01.typ"
-    ( line 9 , column 2 )
-    (Let (BasicBind (Just (Identifier "v2"))) (Literal (Int 2)))
-, Space
-, Text "Two"
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/let-01.typ"
-    ( line 12 , column 2 )
-    (Let (BasicBind (Just (Identifier "v3"))) (Literal (Int 3)))
-, SoftBreak
-, Text "Three"
-, ParBreak
-, Code
-    "test/typ/compiler/let-01.typ"
-    ( line 15 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "v1"))
-       , NormalArg (Literal (Int 1))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/let-01.typ"
-    ( line 16 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "v2"))
-       , NormalArg (Literal (Int 2))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/let-01.typ"
-    ( line 17 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "v3"))
-       , NormalArg (Literal (Int 3))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-One]), 
-                 parbreak(), 
-                 text(body: [ Two]), 
-                 parbreak(), 
-                 text(body: [
-Three]), 
-                 parbreak(), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/let-02.out b/test/out/compiler/let-02.out
deleted file mode 100644
--- a/test/out/compiler/let-02.out
+++ /dev/null
@@ -1,55 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/let-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/let-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/let-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/compiler/let-02.typ"
-    ( line 4 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "a")))
-       (Array [ Reg (Literal (Int 1)) , Reg (Literal (Int 2)) ]))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak() })
diff --git a/test/out/compiler/let-03.out b/test/out/compiler/let-03.out
deleted file mode 100644
--- a/test/out/compiler/let-03.out
+++ /dev/null
@@ -1,82 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/let-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/let-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/let-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/compiler/let-03.typ"
-    ( line 4 , column 2 )
-    (Let
-       (DestructuringBind
-          [ Simple (Just (Identifier "a"))
-          , Simple (Just (Identifier "b"))
-          ])
-       (Array [ Reg (Literal (Int 1)) , Reg (Literal (Int 2)) ]))
-, SoftBreak
-, Code
-    "test/typ/compiler/let-03.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "a"))
-       , NormalArg (Literal (Int 1))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/let-03.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "b"))
-       , NormalArg (Literal (Int 2))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/let-04.out b/test/out/compiler/let-04.out
deleted file mode 100644
--- a/test/out/compiler/let-04.out
+++ /dev/null
@@ -1,66 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/let-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/let-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/let-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/let-04.typ"
-    ( line 3 , column 2 )
-    (Let
-       (DestructuringBind [ Simple (Just (Identifier "a")) ])
-       (Array [ Reg (Literal (Int 1)) ]))
-, SoftBreak
-, Code
-    "test/typ/compiler/let-04.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "a"))
-       , NormalArg (Literal (Int 1))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/let-05.out b/test/out/compiler/let-05.out
deleted file mode 100644
--- a/test/out/compiler/let-05.out
+++ /dev/null
@@ -1,89 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/let-05.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/let-05.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/let-05.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/compiler/let-05.typ"
-    ( line 4 , column 2 )
-    (Let
-       (DestructuringBind
-          [ Simple (Just (Identifier "a"))
-          , Simple Nothing
-          , Simple (Just (Identifier "c"))
-          , Simple Nothing
-          ])
-       (Array
-          [ Reg (Literal (Int 1))
-          , Reg (Literal (Int 2))
-          , Reg (Literal (Int 3))
-          , Reg (Literal (Int 4))
-          ]))
-, SoftBreak
-, Code
-    "test/typ/compiler/let-05.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "a"))
-       , NormalArg (Literal (Int 1))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/let-05.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "c"))
-       , NormalArg (Literal (Int 3))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/let-06.out b/test/out/compiler/let-06.out
deleted file mode 100644
--- a/test/out/compiler/let-06.out
+++ /dev/null
@@ -1,108 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/let-06.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/let-06.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/let-06.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/compiler/let-06.typ"
-    ( line 4 , column 2 )
-    (Let
-       (DestructuringBind
-          [ Simple (Just (Identifier "a"))
-          , Simple (Just (Identifier "b"))
-          , Sink (Just (Identifier "c"))
-          ])
-       (Array
-          [ Reg (Literal (Int 1))
-          , Reg (Literal (Int 2))
-          , Reg (Literal (Int 3))
-          , Reg (Literal (Int 4))
-          , Reg (Literal (Int 5))
-          , Reg (Literal (Int 6))
-          ]))
-, SoftBreak
-, Code
-    "test/typ/compiler/let-06.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "a"))
-       , NormalArg (Literal (Int 1))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/let-06.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "b"))
-       , NormalArg (Literal (Int 2))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/let-06.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "c"))
-       , NormalArg
-           (Array
-              [ Reg (Literal (Int 3))
-              , Reg (Literal (Int 4))
-              , Reg (Literal (Int 5))
-              , Reg (Literal (Int 6))
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/let-07.out b/test/out/compiler/let-07.out
deleted file mode 100644
--- a/test/out/compiler/let-07.out
+++ /dev/null
@@ -1,108 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/let-07.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/let-07.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/let-07.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/compiler/let-07.typ"
-    ( line 4 , column 2 )
-    (Let
-       (DestructuringBind
-          [ Simple (Just (Identifier "a"))
-          , Sink (Just (Identifier "b"))
-          , Simple (Just (Identifier "c"))
-          ])
-       (Array
-          [ Reg (Literal (Int 1))
-          , Reg (Literal (Int 2))
-          , Reg (Literal (Int 3))
-          , Reg (Literal (Int 4))
-          , Reg (Literal (Int 5))
-          , Reg (Literal (Int 6))
-          ]))
-, SoftBreak
-, Code
-    "test/typ/compiler/let-07.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "a"))
-       , NormalArg (Literal (Int 1))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/let-07.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "b"))
-       , NormalArg
-           (Array
-              [ Reg (Literal (Int 2))
-              , Reg (Literal (Int 3))
-              , Reg (Literal (Int 4))
-              , Reg (Literal (Int 5))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/let-07.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "c"))
-       , NormalArg (Literal (Int 6))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/let-08.out b/test/out/compiler/let-08.out
deleted file mode 100644
--- a/test/out/compiler/let-08.out
+++ /dev/null
@@ -1,93 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/let-08.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/let-08.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/let-08.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/compiler/let-08.typ"
-    ( line 4 , column 2 )
-    (Let
-       (DestructuringBind
-          [ Sink (Just (Identifier "a"))
-          , Simple (Just (Identifier "b"))
-          , Simple (Just (Identifier "c"))
-          ])
-       (Array [ Reg (Literal (Int 1)) , Reg (Literal (Int 2)) ]))
-, SoftBreak
-, Code
-    "test/typ/compiler/let-08.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "a")) , NormalArg (Array []) ])
-, SoftBreak
-, Code
-    "test/typ/compiler/let-08.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "b"))
-       , NormalArg (Literal (Int 1))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/let-08.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "c"))
-       , NormalArg (Literal (Int 2))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/let-09.out b/test/out/compiler/let-09.out
deleted file mode 100644
--- a/test/out/compiler/let-09.out
+++ /dev/null
@@ -1,93 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/let-09.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/let-09.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/let-09.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/compiler/let-09.typ"
-    ( line 4 , column 2 )
-    (Let
-       (DestructuringBind
-          [ Simple (Just (Identifier "a"))
-          , Sink (Just (Identifier "b"))
-          , Simple (Just (Identifier "c"))
-          ])
-       (Array [ Reg (Literal (Int 1)) , Reg (Literal (Int 2)) ]))
-, SoftBreak
-, Code
-    "test/typ/compiler/let-09.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "a"))
-       , NormalArg (Literal (Int 1))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/let-09.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "b")) , NormalArg (Array []) ])
-, SoftBreak
-, Code
-    "test/typ/compiler/let-09.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "c"))
-       , NormalArg (Literal (Int 2))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/let-10.out b/test/out/compiler/let-10.out
deleted file mode 100644
--- a/test/out/compiler/let-10.out
+++ /dev/null
@@ -1,93 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/let-10.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/let-10.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/let-10.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/compiler/let-10.typ"
-    ( line 4 , column 2 )
-    (Let
-       (DestructuringBind
-          [ Simple (Just (Identifier "a"))
-          , Simple (Just (Identifier "b"))
-          , Sink (Just (Identifier "c"))
-          ])
-       (Array [ Reg (Literal (Int 1)) , Reg (Literal (Int 2)) ]))
-, SoftBreak
-, Code
-    "test/typ/compiler/let-10.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "a"))
-       , NormalArg (Literal (Int 1))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/let-10.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "b"))
-       , NormalArg (Literal (Int 2))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/let-10.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "c")) , NormalArg (Array []) ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/let-11.out b/test/out/compiler/let-11.out
deleted file mode 100644
--- a/test/out/compiler/let-11.out
+++ /dev/null
@@ -1,64 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/let-11.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/let-11.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/let-11.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/compiler/let-11.typ"
-    ( line 4 , column 2 )
-    (Let
-       (DestructuringBind [ Sink (Just (Identifier "a")) ]) (Array []))
-, SoftBreak
-, Code
-    "test/typ/compiler/let-11.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "a")) , NormalArg (Array []) ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/let-12.out b/test/out/compiler/let-12.out
deleted file mode 100644
--- a/test/out/compiler/let-12.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/let-13.out b/test/out/compiler/let-13.out
deleted file mode 100644
--- a/test/out/compiler/let-13.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/let-14.out b/test/out/compiler/let-14.out
deleted file mode 100644
--- a/test/out/compiler/let-14.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/let-15.out b/test/out/compiler/let-15.out
deleted file mode 100644
--- a/test/out/compiler/let-15.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/let-16.out b/test/out/compiler/let-16.out
deleted file mode 100644
--- a/test/out/compiler/let-16.out
+++ /dev/null
@@ -1,99 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/let-16.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/let-16.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/let-16.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/compiler/let-16.typ"
-    ( line 4 , column 2 )
-    (Let
-       (DestructuringBind
-          [ WithKey (Identifier "a") (Just (Identifier "a"))
-          , Simple (Just (Identifier "b"))
-          , WithKey (Identifier "x") (Just (Identifier "c"))
-          ])
-       (Dict
-          [ Reg ( Ident (Identifier "a") , Literal (Int 1) )
-          , Reg ( Ident (Identifier "b") , Literal (Int 2) )
-          , Reg ( Ident (Identifier "x") , Literal (Int 3) )
-          ]))
-, SoftBreak
-, Code
-    "test/typ/compiler/let-16.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "a"))
-       , NormalArg (Literal (Int 1))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/let-16.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "b"))
-       , NormalArg (Literal (Int 2))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/let-16.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "c"))
-       , NormalArg (Literal (Int 3))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/let-17.out b/test/out/compiler/let-17.out
deleted file mode 100644
--- a/test/out/compiler/let-17.out
+++ /dev/null
@@ -1,78 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/let-17.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/let-17.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/let-17.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/compiler/let-17.typ"
-    ( line 4 , column 2 )
-    (Let
-       (DestructuringBind
-          [ WithKey (Identifier "a") Nothing
-          , Sink (Just (Identifier "b"))
-          ])
-       (Dict
-          [ Reg ( Ident (Identifier "a") , Literal (Int 1) )
-          , Reg ( Ident (Identifier "b") , Literal (Int 2) )
-          , Reg ( Ident (Identifier "c") , Literal (Int 3) )
-          ]))
-, SoftBreak
-, Code
-    "test/typ/compiler/let-17.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "b"))
-       , NormalArg
-           (Dict
-              [ Reg ( Ident (Identifier "b") , Literal (Int 2) )
-              , Reg ( Ident (Identifier "c") , Literal (Int 3) )
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/let-18.out b/test/out/compiler/let-18.out
deleted file mode 100644
--- a/test/out/compiler/let-18.out
+++ /dev/null
@@ -1,76 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/let-18.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/let-18.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/let-18.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/compiler/let-18.typ"
-    ( line 4 , column 2 )
-    (Let
-       (DestructuringBind
-          [ WithKey (Identifier "a") Nothing
-          , Sink (Just (Identifier "b"))
-          , WithKey (Identifier "c") Nothing
-          ])
-       (Dict
-          [ Reg ( Ident (Identifier "a") , Literal (Int 1) )
-          , Reg ( Ident (Identifier "b") , Literal (Int 2) )
-          , Reg ( Ident (Identifier "c") , Literal (Int 3) )
-          ]))
-, SoftBreak
-, Code
-    "test/typ/compiler/let-18.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "b"))
-       , NormalArg
-           (Dict [ Reg ( Ident (Identifier "b") , Literal (Int 2) ) ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/let-19.out b/test/out/compiler/let-19.out
deleted file mode 100644
--- a/test/out/compiler/let-19.out
+++ /dev/null
@@ -1,68 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/let-19.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/let-19.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/let-19.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/compiler/let-19.typ"
-    ( line 4 , column 2 )
-    (Let
-       (DestructuringBind
-          [ WithKey (Identifier "a") Nothing
-          , Sink (Just (Identifier "b"))
-          ])
-       (Dict [ Reg ( Ident (Identifier "a") , Literal (Int 1) ) ]))
-, SoftBreak
-, Code
-    "test/typ/compiler/let-19.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "b")) , NormalArg (Dict []) ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/let-20.out b/test/out/compiler/let-20.out
deleted file mode 100644
--- a/test/out/compiler/let-20.out
+++ /dev/null
@@ -1,64 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/let-20.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/let-20.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/let-20.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/compiler/let-20.typ"
-    ( line 4 , column 2 )
-    (Let
-       (DestructuringBind [ Sink (Just (Identifier "a")) ]) (Dict []))
-, SoftBreak
-, Code
-    "test/typ/compiler/let-20.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "a")) , NormalArg (Dict []) ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/let-21.out b/test/out/compiler/let-21.out
deleted file mode 100644
--- a/test/out/compiler/let-21.out
+++ /dev/null
@@ -1,71 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/let-21.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/let-21.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/let-21.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/compiler/let-21.typ"
-    ( line 4 , column 2 )
-    (Let
-       (DestructuringBind
-          [ Simple (Just (Identifier "a")) , Sink Nothing ])
-       (Dict
-          [ Reg ( Ident (Identifier "a") , Literal (Int 1) )
-          , Reg ( Ident (Identifier "b") , Literal (Int 2) )
-          ]))
-, SoftBreak
-, Code
-    "test/typ/compiler/let-21.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "a"))
-       , NormalArg (Literal (Int 1))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/let-22.out b/test/out/compiler/let-22.out
deleted file mode 100644
--- a/test/out/compiler/let-22.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/let-23.out b/test/out/compiler/let-23.out
deleted file mode 100644
--- a/test/out/compiler/let-23.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/let-24.out b/test/out/compiler/let-24.out
deleted file mode 100644
--- a/test/out/compiler/let-24.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/let-25.out b/test/out/compiler/let-25.out
deleted file mode 100644
--- a/test/out/compiler/let-25.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/let-26.out b/test/out/compiler/let-26.out
deleted file mode 100644
--- a/test/out/compiler/let-26.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/let-27.out b/test/out/compiler/let-27.out
deleted file mode 100644
--- a/test/out/compiler/let-27.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/let-28.out b/test/out/compiler/let-28.out
deleted file mode 100644
--- a/test/out/compiler/let-28.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/let-29.out b/test/out/compiler/let-29.out
deleted file mode 100644
--- a/test/out/compiler/let-29.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/methods-00.out b/test/out/compiler/methods-00.out
deleted file mode 100644
--- a/test/out/compiler/methods-00.out
+++ /dev/null
@@ -1,63 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/methods-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/methods-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/methods-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/methods-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "split")) (Literal (String "Hi there")))
-              [])
-       , NormalArg
-           (Array
-              [ Reg (Literal (String "Hi")) , Reg (Literal (String "there")) ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/methods-01.out b/test/out/compiler/methods-01.out
deleted file mode 100644
--- a/test/out/compiler/methods-01.out
+++ /dev/null
@@ -1,98 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/methods-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/methods-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/methods-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/methods-01.typ"
-    ( line 3 , column 2 )
-    (Block
-       (CodeBlock
-          [ Let
-              (BasicBind (Just (Identifier "matrix")))
-              (Array
-                 [ Reg
-                     (Array
-                        [ Reg (Array [ Reg (Literal (Int 1)) ])
-                        , Reg (Array [ Reg (Literal (Int 2)) ])
-                        ])
-                 , Reg
-                     (Array
-                        [ Reg (Array [ Reg (Literal (Int 3)) ])
-                        , Reg (Array [ Reg (Literal (Int 4)) ])
-                        ])
-                 ])
-          , FuncCall
-              (FieldAccess
-                 (Ident (Identifier "push"))
-                 (FuncCall
-                    (FieldAccess
-                       (Ident (Identifier "at"))
-                       (FuncCall
-                          (FieldAccess
-                             (Ident (Identifier "at")) (Ident (Identifier "matrix")))
-                          [ NormalArg (Literal (Int 1)) ]))
-                    [ NormalArg (Literal (Int 0)) ]))
-              [ NormalArg (Literal (Int 5)) ]
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg (Ident (Identifier "matrix"))
-              , NormalArg
-                  (Array
-                     [ Reg
-                         (Array
-                            [ Reg (Array [ Reg (Literal (Int 1)) ])
-                            , Reg (Array [ Reg (Literal (Int 2)) ])
-                            ])
-                     , Reg
-                         (Array
-                            [ Reg (Array [ Reg (Literal (Int 3)) , Reg (Literal (Int 5)) ])
-                            , Reg (Array [ Reg (Literal (Int 4)) ])
-                            ])
-                     ])
-              ]
-          ]))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/methods-02.out b/test/out/compiler/methods-02.out
deleted file mode 100644
--- a/test/out/compiler/methods-02.out
+++ /dev/null
@@ -1,101 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/methods-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/methods-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/methods-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/methods-02.typ"
-    ( line 3 , column 2 )
-    (Block
-       (CodeBlock
-          [ Let
-              (BasicBind (Just (Identifier "rewritten")))
-              (FuncCall
-                 (FieldAccess
-                    (Ident (Identifier "join"))
-                    (FuncCall
-                       (FieldAccess
-                          (Ident (Identifier "map"))
-                          (FuncCall
-                             (FieldAccess
-                                (Ident (Identifier "filter"))
-                                (FuncCall
-                                   (FieldAccess
-                                      (Ident (Identifier "map"))
-                                      (FuncCall
-                                         (FieldAccess
-                                            (Ident (Identifier "split"))
-                                            (Literal
-                                               (String "Hello. This is a sentence. And one more.")))
-                                         [ NormalArg (Literal (String ".")) ]))
-                                   [ NormalArg
-                                       (FuncExpr
-                                          [ NormalParam (Identifier "s") ]
-                                          (FuncCall
-                                             (FieldAccess
-                                                (Ident (Identifier "trim"))
-                                                (Ident (Identifier "s")))
-                                             []))
-                                   ]))
-                             [ NormalArg
-                                 (FuncExpr
-                                    [ NormalParam (Identifier "s") ]
-                                    (Not (Equals (Ident (Identifier "s")) (Literal (String "")))))
-                             ]))
-                       [ NormalArg
-                           (FuncExpr
-                              [ NormalParam (Identifier "s") ]
-                              (Plus (Ident (Identifier "s")) (Literal (String "!"))))
-                       ]))
-                 [ NormalArg (Literal (String "\n ")) ])
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg (Ident (Identifier "rewritten"))
-              , NormalArg
-                  (Literal (String "Hello!\n This is a sentence!\n And one more!"))
-              ]
-          ]))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/methods-03.out b/test/out/compiler/methods-03.out
deleted file mode 100644
--- a/test/out/compiler/methods-03.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/methods-04.out b/test/out/compiler/methods-04.out
deleted file mode 100644
--- a/test/out/compiler/methods-04.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/methods-05.out b/test/out/compiler/methods-05.out
deleted file mode 100644
--- a/test/out/compiler/methods-05.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/methods-06.out b/test/out/compiler/methods-06.out
deleted file mode 100644
--- a/test/out/compiler/methods-06.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/module.out b/test/out/compiler/module.out
deleted file mode 100644
--- a/test/out/compiler/module.out
+++ /dev/null
@@ -1,131 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/module.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/module.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/module.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, SoftBreak
-, Code
-    "test/typ/compiler/module.typ"
-    ( line 5 , column 2 )
-    (Let (BasicBind (Just (Identifier "a"))) (Literal None))
-, SoftBreak
-, Code
-    "test/typ/compiler/module.typ"
-    ( line 6 , column 2 )
-    (Let (BasicBind (Just (Identifier "b"))) (Literal (Int 1)))
-, SoftBreak
-, Code
-    "test/typ/compiler/module.typ"
-    ( line 7 , column 2 )
-    (Let (BasicBind (Just (Identifier "c"))) (Literal (Int 2)))
-, SoftBreak
-, Code
-    "test/typ/compiler/module.typ"
-    ( line 8 , column 2 )
-    (Let (BasicBind (Just (Identifier "d"))) (Literal (Int 3)))
-, SoftBreak
-, Code
-    "test/typ/compiler/module.typ"
-    ( line 9 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "value")))
-       (Block (Content [ Text "hi" ])))
-, SoftBreak
-, Code
-    "test/typ/compiler/module.typ"
-    ( line 10 , column 2 )
-    (LetFunc
-       (Identifier "item")
-       [ NormalParam (Identifier "a") , NormalParam (Identifier "b") ]
-       (Plus (Ident (Identifier "a")) (Ident (Identifier "b"))))
-, SoftBreak
-, Code
-    "test/typ/compiler/module.typ"
-    ( line 11 , column 2 )
-    (LetFunc
-       (Identifier "push")
-       [ NormalParam (Identifier "a") ]
-       (Plus (Ident (Identifier "a")) (Literal (Int 1))))
-, SoftBreak
-, Code
-    "test/typ/compiler/module.typ"
-    ( line 12 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "fn")))
-       (FuncCall
-          (FieldAccess
-             (Ident (Identifier "with")) (Ident (Identifier "rect")))
-          [ KeyValArg (Identifier "fill") (Ident (Identifier "green"))
-          , KeyValArg (Identifier "inset") (Literal (Numeric 5.0 Pt))
-          ]))
-, ParBreak
-, Text "Some"
-, Space
-, Emph [ Text "includable" ]
-, Space
-, Text "text"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [Some ]), 
-                 emph(body: text(body: [includable])), 
-                 text(body: [ text.]), 
-                 parbreak() })
diff --git a/test/out/compiler/modules/chap1.out b/test/out/compiler/modules/chap1.out
deleted file mode 100644
--- a/test/out/compiler/modules/chap1.out
+++ /dev/null
@@ -1,173 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/modules/chap1.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/modules/chap1.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/modules/chap1.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, SoftBreak
-, Code
-    "test/typ/compiler/modules/chap1.typ"
-    ( line 4 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "name"))) (Literal (String "Klaus")))
-, ParBreak
-, Heading 2 [ Text "Chapter" , Space , Text "1" ]
-, Code
-    "test/typ/compiler/modules/chap1.typ"
-    ( line 7 , column 2 )
-    (Ident (Identifier "name"))
-, Space
-, Text "stood"
-, Space
-, Text "in"
-, Space
-, Text "a"
-, Space
-, Text "field"
-, Space
-, Text "of"
-, Space
-, Text "wheat"
-, Text "."
-, Space
-, Text "There"
-, Space
-, Text "was"
-, Space
-, Text "nothing"
-, Space
-, Text "of"
-, Space
-, Text "particular"
-, Space
-, Text "interest"
-, Space
-, Text "about"
-, SoftBreak
-, Text "the"
-, Space
-, Text "field"
-, Space
-, Code
-    "test/typ/compiler/modules/chap1.typ"
-    ( line 8 , column 12 )
-    (Ident (Identifier "name"))
-, Space
-, Text "just"
-, Space
-, Text "casually"
-, Space
-, Text "surveyed"
-, Space
-, Text "for"
-, Space
-, Text "any"
-, Space
-, Text "paths"
-, Space
-, Text "on"
-, Space
-, Text "which"
-, Space
-, Text "the"
-, Space
-, Text "corn"
-, Space
-, Text "would"
-, Space
-, Text "not"
-, SoftBreak
-, Text "totally"
-, Space
-, Text "ruin"
-, Space
-, Text "his"
-, Space
-, Text "semi"
-, Text "-"
-, Text "new"
-, Space
-, Text "outdorsy"
-, Space
-, Text "jacket"
-, Space
-, Text "but"
-, Space
-, Text "then"
-, Space
-, Text "again,"
-, Space
-, Text "most"
-, Space
-, Text "of"
-, Space
-, Text "us"
-, Space
-, Text "spend"
-, SoftBreak
-, Text "considerable"
-, Space
-, Text "time"
-, Space
-, Text "in"
-, Space
-, Text "non"
-, Text "-"
-, Text "descript"
-, Space
-, Text "environments"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 heading(body: text(body: [Chapter 1]), 
-                         level: 2), 
-                 text(body: [Klaus]), 
-                 text(body: [ stood in a field of wheat. There was nothing of particular interest about
-the field ]), 
-                 text(body: [Klaus]), 
-                 text(body: [ just casually surveyed for any paths on which the corn would not
-totally ruin his semi-new outdorsy jacket but then again, most of us spend
-considerable time in non-descript environments.]), 
-                 parbreak() })
diff --git a/test/out/compiler/modules/chap2.out b/test/out/compiler/modules/chap2.out
deleted file mode 100644
--- a/test/out/compiler/modules/chap2.out
+++ /dev/null
@@ -1,238 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/modules/chap2.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/modules/chap2.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/modules/chap2.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, SoftBreak
-, Code
-    "test/typ/compiler/modules/chap2.typ"
-    ( line 4 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "name"))) (Literal (String "Klaus")))
-, ParBreak
-, Heading 2 [ Text "Chapter" , Space , Text "2" ]
-, Text "Their"
-, Space
-, Text "motivations,"
-, Space
-, Text "however,"
-, Space
-, Text "were"
-, Space
-, Text "pretty"
-, Space
-, Text "descript,"
-, Space
-, Text "so"
-, Space
-, Text "to"
-, Space
-, Text "speak"
-, Text "."
-, Space
-, Code
-    "test/typ/compiler/modules/chap2.typ"
-    ( line 7 , column 65 )
-    (Ident (Identifier "name"))
-, Space
-, Text "had"
-, Space
-, Text "not"
-, Space
-, Text "yet"
-, SoftBreak
-, Text "conceptualized"
-, Space
-, Text "their"
-, Space
-, Text "consequences,"
-, Space
-, Text "but"
-, Space
-, Text "that"
-, Space
-, Text "should"
-, Space
-, Text "change"
-, Space
-, Text "pretty"
-, Space
-, Text "quickly"
-, Text "."
-, Space
-, Code
-    "test/typ/compiler/modules/chap2.typ"
-    ( line 8 , column 76 )
-    (Ident (Identifier "name"))
-, SoftBreak
-, Text "approached"
-, Space
-, Text "the"
-, Space
-, Text "center"
-, Space
-, Text "of"
-, Space
-, Text "the"
-, Space
-, Text "field"
-, Space
-, Text "and"
-, Space
-, Text "picked"
-, Space
-, Text "up"
-, Space
-, Text "a"
-, Space
-, Text "4"
-, Text "-"
-, Text "foot"
-, Space
-, Text "long"
-, Space
-, Text "disk"
-, Space
-, Text "made"
-, Space
-, Text "from"
-, SoftBreak
-, Text "what"
-, Space
-, Text "could"
-, Space
-, Text "only"
-, Space
-, Text "be"
-, Space
-, Text "cow"
-, Space
-, Text "manure"
-, Text "."
-, Space
-, Text "The"
-, Space
-, Text "hair"
-, Space
-, Text "on"
-, Space
-, Text "the"
-, Space
-, Text "back"
-, Space
-, Text "of"
-, Space
-, Code
-    "test/typ/compiler/modules/chap2.typ"
-    ( line 10 , column 57 )
-    (Ident (Identifier "name"))
-, Quote '\''
-, Space
-, Text "neck"
-, Space
-, Text "bristled"
-, Space
-, Text "as"
-, SoftBreak
-, Text "he"
-, Space
-, Text "stared"
-, Space
-, Text "at"
-, Space
-, Text "the"
-, Space
-, Text "unusual"
-, Space
-, Text "sight"
-, Text "."
-, Space
-, Text "After"
-, Space
-, Text "studying"
-, Space
-, Text "the"
-, Space
-, Text "object"
-, Space
-, Text "for"
-, Space
-, Text "a"
-, Space
-, Text "while,"
-, Space
-, Text "he"
-, SoftBreak
-, Text "promptly"
-, Space
-, Text "popped"
-, Space
-, Text "the"
-, Space
-, Text "question,"
-, Space
-, Quote '"'
-, Text "How"
-, Space
-, Text "much?"
-, Quote '"'
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 heading(body: text(body: [Chapter 2]), 
-                         level: 2), 
-                 text(body: [Their motivations, however, were pretty descript, so to speak. ]), 
-                 text(body: [Klaus]), 
-                 text(body: [ had not yet
-conceptualized their consequences, but that should change pretty quickly. ]), 
-                 text(body: [Klaus]), 
-                 text(body: [
-approached the center of the field and picked up a 4-foot long disk made from
-what could only be cow manure. The hair on the back of ]), 
-                 text(body: [Klaus]), 
-                 text(body: [” neck bristled as
-he stared at the unusual sight. After studying the object for a while, he
-promptly popped the question, “How much?”]), 
-                 parbreak() })
diff --git a/test/out/compiler/modules/cycle1.out b/test/out/compiler/modules/cycle1.out
deleted file mode 100644
--- a/test/out/compiler/modules/cycle1.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/modules/cycle2.out b/test/out/compiler/modules/cycle2.out
deleted file mode 100644
--- a/test/out/compiler/modules/cycle2.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/ops-00.out b/test/out/compiler/ops-00.out
deleted file mode 100644
--- a/test/out/compiler/ops-00.out
+++ /dev/null
@@ -1,58 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/ops-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/ops-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/ops-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/compiler/ops-00.typ"
-    ( line 4 , column 2 )
-    (Plus
-       (Block (Content [ Strong [ Text "Hello" ] , Space ]))
-       (Block (Content [ Text "world!" ])))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 strong(body: text(body: [Hello])), 
-                 text(body: [ ]), 
-                 text(body: [world!]), 
-                 parbreak() })
diff --git a/test/out/compiler/ops-01.out b/test/out/compiler/ops-01.out
deleted file mode 100644
--- a/test/out/compiler/ops-01.out
+++ /dev/null
@@ -1,251 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/ops-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/ops-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/ops-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/ops-01.typ"
-    ( line 5 , column 2 )
-    (For
-       (BasicBind (Just (Identifier "v")))
-       (Array
-          [ Reg (Literal (Int 1))
-          , Reg (Literal (Float 3.14))
-          , Reg (Literal (Numeric 12.0 Pt))
-          , Reg (Literal (Numeric 45.0 Deg))
-          , Reg (Literal (Numeric 90.0 Percent))
-          , Reg
-              (Plus (Literal (Numeric 13.0 Percent)) (Literal (Numeric 10.0 Pt)))
-          , Reg (Literal (Numeric 6.3 Fr))
-          ])
-       (Block
-          (CodeBlock
-             [ FuncCall
-                 (Ident (Identifier "test"))
-                 [ NormalArg (Ident (Identifier "v"))
-                 , NormalArg (Ident (Identifier "v"))
-                 ]
-             , FuncCall
-                 (Ident (Identifier "test"))
-                 [ NormalArg (Negated (Ident (Identifier "v")))
-                 , NormalArg
-                     (Times (Negated (Literal (Int 1))) (Ident (Identifier "v")))
-                 ]
-             , FuncCall
-                 (Ident (Identifier "test"))
-                 [ NormalArg (Negated (Negated (Ident (Identifier "v"))))
-                 , NormalArg (Ident (Identifier "v"))
-                 ]
-             , FuncCall
-                 (Ident (Identifier "test"))
-                 [ NormalArg (Negated (Negated (Negated (Ident (Identifier "v")))))
-                 , NormalArg (Negated (Ident (Identifier "v")))
-                 ]
-             ])))
-, ParBreak
-, Code
-    "test/typ/compiler/ops-01.typ"
-    ( line 17 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Negated (Plus (Literal (Int 4)) (Literal (Int 2))))
-       , NormalArg (Minus (Literal (Int 6)) (Literal (Int 12)))
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/ops-01.typ"
-    ( line 20 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Plus (Literal (Int 2)) (Literal (Int 4)))
-       , NormalArg (Literal (Int 6))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-01.typ"
-    ( line 21 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Plus (Literal (String "a")) (Literal (String "b")))
-       , NormalArg (Literal (String "ab"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-01.typ"
-    ( line 22 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (Plus
-              (Literal (String "a"))
-              (If
-                 [ ( Literal (Boolean False)
-                   , Block (CodeBlock [ Literal (String "b") ])
-                   )
-                 ]))
-       , NormalArg (Literal (String "a"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-01.typ"
-    ( line 23 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (Plus
-              (Literal (String "a"))
-              (If
-                 [ ( Literal (Boolean True)
-                   , Block (CodeBlock [ Literal (String "b") ])
-                   )
-                 ]))
-       , NormalArg (Literal (String "ab"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-01.typ"
-    ( line 24 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (Plus
-              (Times (Literal (Int 13)) (Literal (String "a")))
-              (Literal (String "bbbbbb")))
-       , NormalArg (Literal (String "aaaaaaaaaaaaabbbbbb"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-01.typ"
-    ( line 25 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (Plus
-              (Array [ Reg (Literal (Int 1)) , Reg (Literal (Int 2)) ])
-              (Array [ Reg (Literal (Int 3)) , Reg (Literal (Int 4)) ]))
-       , NormalArg
-           (Array
-              [ Reg (Literal (Int 1))
-              , Reg (Literal (Int 2))
-              , Reg (Literal (Int 3))
-              , Reg (Literal (Int 4))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-01.typ"
-    ( line 26 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (Plus
-              (Dict [ Reg ( Ident (Identifier "a") , Literal (Int 1) ) ])
-              (Dict
-                 [ Reg ( Ident (Identifier "b") , Literal (Int 2) )
-                 , Reg ( Ident (Identifier "c") , Literal (Int 3) )
-                 ]))
-       , NormalArg
-           (Dict
-              [ Reg ( Ident (Identifier "a") , Literal (Int 1) )
-              , Reg ( Ident (Identifier "b") , Literal (Int 2) )
-              , Reg ( Ident (Identifier "c") , Literal (Int 3) )
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 parbreak(), 
-                 text(body: [✅]), 
-                 parbreak(), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/ops-02.out b/test/out/compiler/ops-02.out
deleted file mode 100644
--- a/test/out/compiler/ops-02.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/ops-03.out b/test/out/compiler/ops-03.out
deleted file mode 100644
--- a/test/out/compiler/ops-03.out
+++ /dev/null
@@ -1,687 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/ops-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/ops-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/ops-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/ops-03.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Minus (Literal (Int 1)) (Literal (Int 4)))
-       , NormalArg (Times (Literal (Int 3)) (Negated (Literal (Int 1))))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-03.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (Minus (Literal (Numeric 4.0 Cm)) (Literal (Numeric 2.0 Cm)))
-       , NormalArg (Literal (Numeric 2.0 Cm))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-03.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (ToPower
-              (Minus (Literal (Int 2)) (Literal (Float 1.0e-2)))
-              (Literal (Int 1)))
-       , NormalArg (Literal (Float 99.99))
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/ops-03.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Times (Literal (Int 2)) (Literal (Int 4)))
-       , NormalArg (Literal (Int 8))
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/ops-03.typ"
-    ( line 11 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (Divided (Literal (Numeric 12.0 Pt)) (Literal (Float 0.4)))
-       , NormalArg (Literal (Numeric 30.0 Pt))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-03.typ"
-    ( line 12 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Divided (Literal (Int 7)) (Literal (Int 2)))
-       , NormalArg (Literal (Float 3.5))
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/ops-03.typ"
-    ( line 15 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (LessThan
-              (Minus
-                 (Literal (Int 3)) (Times (Literal (Int 4)) (Literal (Int 5))))
-              (Negated (Literal (Int 10))))
-       , NormalArg (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-03.typ"
-    ( line 16 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (Block
-              (CodeBlock
-                 [ Let (BasicBind (Just (Identifier "x"))) (Literal None)
-                 , Assign
-                     (Ident (Identifier "x"))
-                     (And
-                        (GreaterThanOrEqual
-                           (Plus
-                              (Literal (Int 1)) (Times (Literal (Int 4)) (Literal (Int 5))))
-                           (Literal (Int 21)))
-                        (Block
-                           (CodeBlock
-                              [ Assign (Ident (Identifier "x")) (Literal (String "a"))
-                              , Equals
-                                  (Plus (Ident (Identifier "x")) (Literal (String "b")))
-                                  (Literal (String "ab"))
-                              ])))
-                 , Ident (Identifier "x")
-                 ]))
-       , NormalArg (Literal (Boolean True))
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/ops-03.typ"
-    ( line 19 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (Plus
-              (If
-                 [ ( Literal (Boolean True)
-                   , Block (CodeBlock [ Literal (Int 1) ])
-                   )
-                 ])
-              (Literal (Int 2)))
-       , NormalArg (Literal (Int 3))
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/ops-03.typ"
-    ( line 24 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "nums")))
-       (Array
-          [ Reg (Literal (Int 1))
-          , Reg (Literal (Float 3.14))
-          , Reg (Literal (Numeric 12.0 Pt))
-          , Reg (Literal (Numeric 3.0 Em))
-          , Reg (Plus (Literal (Numeric 12.0 Pt)) (Literal (Numeric 3.0 Em)))
-          , Reg (Literal (Numeric 45.0 Deg))
-          , Reg (Literal (Numeric 90.0 Percent))
-          , Reg
-              (Plus (Literal (Numeric 13.0 Percent)) (Literal (Numeric 10.0 Pt)))
-          , Reg
-              (Plus
-                 (Plus (Literal (Numeric 5.0 Percent)) (Literal (Numeric 1.0 Em)))
-                 (Literal (Numeric 3.0 Pt)))
-          , Reg (Literal (Numeric 2.3 Fr))
-          ]))
-, ParBreak
-, Code
-    "test/typ/compiler/ops-03.typ"
-    ( line 33 , column 2 )
-    (For
-       (BasicBind (Just (Identifier "v")))
-       (Ident (Identifier "nums"))
-       (Block
-          (CodeBlock
-             [ FuncCall
-                 (Ident (Identifier "test"))
-                 [ NormalArg
-                     (Minus
-                        (Plus (Ident (Identifier "v")) (Ident (Identifier "v")))
-                        (Ident (Identifier "v")))
-                 , NormalArg (Ident (Identifier "v"))
-                 ]
-             , FuncCall
-                 (Ident (Identifier "test"))
-                 [ NormalArg
-                     (Minus
-                        (Minus (Ident (Identifier "v")) (Ident (Identifier "v")))
-                        (Ident (Identifier "v")))
-                 , NormalArg (Negated (Ident (Identifier "v")))
-                 ]
-             , FuncCall
-                 (Ident (Identifier "test"))
-                 [ NormalArg
-                     (Minus (Ident (Identifier "v")) (Ident (Identifier "v")))
-                 , NormalArg (Times (Literal (Int 0)) (Ident (Identifier "v")))
-                 ]
-             , FuncCall
-                 (Ident (Identifier "test"))
-                 [ NormalArg
-                     (Plus (Ident (Identifier "v")) (Ident (Identifier "v")))
-                 , NormalArg (Times (Literal (Int 2)) (Ident (Identifier "v")))
-                 ]
-             , If
-                 [ ( Not
-                       (Equals
-                          (FuncCall
-                             (Ident (Identifier "type")) [ NormalArg (Ident (Identifier "v")) ])
-                          (Literal (String "integer")))
-                   , Block
-                       (CodeBlock
-                          [ FuncCall
-                              (Ident (Identifier "test"))
-                              [ NormalArg
-                                  (Plus (Ident (Identifier "v")) (Ident (Identifier "v")))
-                              , NormalArg (Times (Literal (Float 2.0)) (Ident (Identifier "v")))
-                              ]
-                          ])
-                   )
-                 ]
-             , If
-                 [ ( And
-                       (Not
-                          (InCollection
-                             (Literal (String "relative"))
-                             (FuncCall
-                                (Ident (Identifier "type"))
-                                [ NormalArg (Ident (Identifier "v")) ])))
-                       (Or
-                          (Not
-                             (InCollection
-                                (Literal (String "pt"))
-                                (FuncCall
-                                   (Ident (Identifier "repr"))
-                                   [ NormalArg (Ident (Identifier "v")) ])))
-                          (Not
-                             (InCollection
-                                (Literal (String "em"))
-                                (FuncCall
-                                   (Ident (Identifier "repr"))
-                                   [ NormalArg (Ident (Identifier "v")) ]))))
-                   , Block
-                       (CodeBlock
-                          [ FuncCall
-                              (Ident (Identifier "test"))
-                              [ NormalArg
-                                  (Divided (Ident (Identifier "v")) (Ident (Identifier "v")))
-                              , NormalArg (Literal (Float 1.0))
-                              ]
-                          ])
-                   )
-                 ]
-             ])))
-, ParBreak
-, Comment
-, Comment
-, Comment
-, Comment
-, Code
-    "test/typ/compiler/ops-03.typ"
-    ( line 56 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "dims")))
-       (Array
-          [ Reg (Literal (Numeric 10.0 Pt))
-          , Reg (Literal (Numeric 1.0 Em))
-          , Reg (Plus (Literal (Numeric 10.0 Pt)) (Literal (Numeric 1.0 Em)))
-          , Reg (Literal (Numeric 30.0 Percent))
-          , Reg
-              (Plus (Literal (Numeric 50.0 Percent)) (Literal (Numeric 3.0 Cm)))
-          , Reg
-              (Plus
-                 (Plus (Literal (Numeric 40.0 Percent)) (Literal (Numeric 2.0 Em)))
-                 (Literal (Numeric 1.0 Cm)))
-          ]))
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-03.typ"
-    ( line 57 , column 2 )
-    (For
-       (BasicBind (Just (Identifier "a")))
-       (Ident (Identifier "dims"))
-       (Block
-          (CodeBlock
-             [ For
-                 (BasicBind (Just (Identifier "b")))
-                 (Ident (Identifier "dims"))
-                 (Block
-                    (CodeBlock
-                       [ FuncCall
-                           (Ident (Identifier "test"))
-                           [ NormalArg
-                               (FuncCall
-                                  (Ident (Identifier "type"))
-                                  [ NormalArg
-                                      (Plus (Ident (Identifier "a")) (Ident (Identifier "b")))
-                                  ])
-                           , NormalArg
-                               (FuncCall
-                                  (Ident (Identifier "type"))
-                                  [ NormalArg
-                                      (Minus (Ident (Identifier "a")) (Ident (Identifier "b")))
-                                  ])
-                           ]
-                       ]))
-             , For
-                 (BasicBind (Just (Identifier "b")))
-                 (Array [ Reg (Literal (Int 7)) , Reg (Literal (Float 3.14)) ])
-                 (Block
-                    (CodeBlock
-                       [ FuncCall
-                           (Ident (Identifier "test"))
-                           [ NormalArg
-                               (FuncCall
-                                  (Ident (Identifier "type"))
-                                  [ NormalArg
-                                      (Times (Ident (Identifier "a")) (Ident (Identifier "b")))
-                                  ])
-                           , NormalArg
-                               (FuncCall
-                                  (Ident (Identifier "type"))
-                                  [ NormalArg (Ident (Identifier "a")) ])
-                           ]
-                       , FuncCall
-                           (Ident (Identifier "test"))
-                           [ NormalArg
-                               (FuncCall
-                                  (Ident (Identifier "type"))
-                                  [ NormalArg
-                                      (Times (Ident (Identifier "b")) (Ident (Identifier "a")))
-                                  ])
-                           , NormalArg
-                               (FuncCall
-                                  (Ident (Identifier "type"))
-                                  [ NormalArg (Ident (Identifier "a")) ])
-                           ]
-                       , FuncCall
-                           (Ident (Identifier "test"))
-                           [ NormalArg
-                               (FuncCall
-                                  (Ident (Identifier "type"))
-                                  [ NormalArg
-                                      (Divided (Ident (Identifier "a")) (Ident (Identifier "b")))
-                                  ])
-                           , NormalArg
-                               (FuncCall
-                                  (Ident (Identifier "type"))
-                                  [ NormalArg (Ident (Identifier "a")) ])
-                           ]
-                       ]))
-             ])))
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/ops-03.typ"
-    ( line 70 , column 2 )
-    (For
-       (BasicBind (Just (Identifier "a")))
-       (Array
-          [ Reg (Literal (Numeric 0.0 Pt))
-          , Reg (Literal (Numeric 0.0 Em))
-          , Reg (Literal (Numeric 0.0 Percent))
-          ])
-       (Block
-          (CodeBlock
-             [ For
-                 (BasicBind (Just (Identifier "b")))
-                 (Array
-                    [ Reg (Literal (Numeric 10.0 Pt))
-                    , Reg (Literal (Numeric 10.0 Em))
-                    , Reg (Literal (Numeric 10.0 Percent))
-                    ])
-                 (Block
-                    (CodeBlock
-                       [ FuncCall
-                           (Ident (Identifier "test"))
-                           [ NormalArg
-                               (Divided
-                                  (Times (Literal (Int 2)) (Ident (Identifier "b")))
-                                  (Ident (Identifier "b")))
-                           , NormalArg (Literal (Int 2))
-                           ]
-                       , FuncCall
-                           (Ident (Identifier "test"))
-                           [ NormalArg
-                               (Divided
-                                  (Plus
-                                     (Ident (Identifier "a"))
-                                     (Times (Ident (Identifier "b")) (Literal (Int 2))))
-                                  (Ident (Identifier "b")))
-                           , NormalArg (Literal (Int 2))
-                           ]
-                       , FuncCall
-                           (Ident (Identifier "test"))
-                           [ NormalArg
-                               (Divided
-                                  (Ident (Identifier "b"))
-                                  (Plus
-                                     (Times (Ident (Identifier "b")) (Literal (Int 2)))
-                                     (Ident (Identifier "a"))))
-                           , NormalArg (Literal (Float 0.5))
-                           ]
-                       ]))
-             ])))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [❌(]), 
-                 text(body: [1.0]), 
-                 text(body: [ /= ]), 
-                 text(body: [99.99]), 
-                 text(body: [)]), 
-                 parbreak(), 
-                 text(body: [✅]), 
-                 parbreak(), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak(), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak(), 
-                 text(body: [✅]), 
-                 parbreak(), 
-                 parbreak(), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [❌(]), 
-                 text(body: [((12.0pt + 3.0em) + (12.0pt + 3.0em)) + (-12.0pt + -3.0em)]), 
-                 text(body: [ /= ]), 
-                 text(body: [12.0pt + 3.0em]), 
-                 text(body: [)]), 
-                 text(body: [❌(]), 
-                 text(body: [((12.0pt + 3.0em) + (-12.0pt + -3.0em)) + (-12.0pt + -3.0em)]), 
-                 text(body: [ /= ]), 
-                 text(body: [-12.0pt + -3.0em]), 
-                 text(body: [)]), 
-                 text(body: [❌(]), 
-                 text(body: [(12.0pt + 3.0em) + (-12.0pt + -3.0em)]), 
-                 text(body: [ /= ]), 
-                 text(body: [0.0pt + 0.0em]), 
-                 text(body: [)]), 
-                 text(body: [❌(]), 
-                 text(body: [(12.0pt + 3.0em) + (12.0pt + 3.0em)]), 
-                 text(body: [ /= ]), 
-                 text(body: [24.0pt + 6.0em]), 
-                 text(body: [)]), 
-                 text(body: [❌(]), 
-                 text(body: [(12.0pt + 3.0em) + (12.0pt + 3.0em)]), 
-                 text(body: [ /= ]), 
-                 text(body: [24.0pt + 6.0em]), 
-                 text(body: [)]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [❌(]), 
-                 text(body: [((10.0pt + 13%) + (10.0pt + 13%)) + (-10.0pt + -13%)]), 
-                 text(body: [ /= ]), 
-                 text(body: [10.0pt + 13%]), 
-                 text(body: [)]), 
-                 text(body: [❌(]), 
-                 text(body: [((10.0pt + 13%) + (-10.0pt + -13%)) + (-10.0pt + -13%)]), 
-                 text(body: [ /= ]), 
-                 text(body: [-10.0pt + -13%]), 
-                 text(body: [)]), 
-                 text(body: [❌(]), 
-                 text(body: [(10.0pt + 13%) + (-10.0pt + -13%)]), 
-                 text(body: [ /= ]), 
-                 text(body: [0.0pt + 0%]), 
-                 text(body: [)]), 
-                 text(body: [❌(]), 
-                 text(body: [(10.0pt + 13%) + (10.0pt + 13%)]), 
-                 text(body: [ /= ]), 
-                 text(body: [20.0pt + 26%]), 
-                 text(body: [)]), 
-                 text(body: [❌(]), 
-                 text(body: [(10.0pt + 13%) + (10.0pt + 13%)]), 
-                 text(body: [ /= ]), 
-                 text(body: [20.0pt + 26%]), 
-                 text(body: [)]), 
-                 text(body: [✅]), 
-                 text(body: [❌(]), 
-                 text(body: [(((1.0em + 5%) + 3.0pt) + ((1.0em + 5%) + 3.0pt)) + ((-1.0em + -5%) + -3.0pt)]), 
-                 text(body: [ /= ]), 
-                 text(body: [(1.0em + 5%) + 3.0pt]), 
-                 text(body: [)]), 
-                 text(body: [❌(]), 
-                 text(body: [(((1.0em + 5%) + 3.0pt) + ((-1.0em + -5%) + -3.0pt)) + ((-1.0em + -5%) + -3.0pt)]), 
-                 text(body: [ /= ]), 
-                 text(body: [(-1.0em + -5%) + -3.0pt]), 
-                 text(body: [)]), 
-                 text(body: [❌(]), 
-                 text(body: [((1.0em + 5%) + 3.0pt) + ((-1.0em + -5%) + -3.0pt)]), 
-                 text(body: [ /= ]), 
-                 text(body: [(0.0em + 0%) + 0.0pt]), 
-                 text(body: [)]), 
-                 text(body: [❌(]), 
-                 text(body: [((1.0em + 5%) + 3.0pt) + ((1.0em + 5%) + 3.0pt)]), 
-                 text(body: [ /= ]), 
-                 text(body: [(2.0em + 10%) + 6.0pt]), 
-                 text(body: [)]), 
-                 text(body: [❌(]), 
-                 text(body: [((1.0em + 5%) + 3.0pt) + ((1.0em + 5%) + 3.0pt)]), 
-                 text(body: [ /= ]), 
-                 text(body: [(2.0em + 10%) + 6.0pt]), 
-                 text(body: [)]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [❌(]), 
-                 text(body: [1.0fr]), 
-                 text(body: [ /= ]), 
-                 text(body: [1.0]), 
-                 text(body: [)]), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 parbreak(), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [❌(]), 
-                 text(body: [200%]), 
-                 text(body: [ /= ]), 
-                 text(body: [2]), 
-                 text(body: [)]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [❌(]), 
-                 text(body: [200%]), 
-                 text(body: [ /= ]), 
-                 text(body: [2]), 
-                 text(body: [)]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/ops-04.out b/test/out/compiler/ops-04.out
deleted file mode 100644
--- a/test/out/compiler/ops-04.out
+++ /dev/null
@@ -1,77 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/ops-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/ops-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/ops-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/ops-04.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Literal (Int 16)) , NormalArg (Literal (Int 16)) ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-04.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Literal (Int 13)) , NormalArg (Literal (Int 13)) ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-04.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Plus (Literal (Int 10)) (Literal (Int 10)))
-       , NormalArg (Literal (Int 20))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/ops-05.out b/test/out/compiler/ops-05.out
deleted file mode 100644
--- a/test/out/compiler/ops-05.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/ops-06.out b/test/out/compiler/ops-06.out
deleted file mode 100644
--- a/test/out/compiler/ops-06.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/ops-07.out b/test/out/compiler/ops-07.out
deleted file mode 100644
--- a/test/out/compiler/ops-07.out
+++ /dev/null
@@ -1,199 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/ops-07.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/ops-07.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/ops-07.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/ops-07.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Not (Literal (Boolean True)))
-       , NormalArg (Literal (Boolean False))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-07.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Not (Literal (Boolean False)))
-       , NormalArg (Literal (Boolean True))
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/ops-07.typ"
-    ( line 9 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (And (Literal (Boolean False)) (Literal (Boolean False)))
-       , NormalArg (Literal (Boolean False))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-07.typ"
-    ( line 10 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (And (Literal (Boolean False)) (Literal (Boolean True)))
-       , NormalArg (Literal (Boolean False))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-07.typ"
-    ( line 11 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (And (Literal (Boolean True)) (Literal (Boolean False)))
-       , NormalArg (Literal (Boolean False))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-07.typ"
-    ( line 12 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (And (Literal (Boolean True)) (Literal (Boolean True)))
-       , NormalArg (Literal (Boolean True))
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/ops-07.typ"
-    ( line 15 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (Or (Literal (Boolean False)) (Literal (Boolean False)))
-       , NormalArg (Literal (Boolean False))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-07.typ"
-    ( line 16 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Or (Literal (Boolean False)) (Literal (Boolean True)))
-       , NormalArg (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-07.typ"
-    ( line 17 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Or (Literal (Boolean True)) (Literal (Boolean False)))
-       , NormalArg (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-07.typ"
-    ( line 18 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Or (Literal (Boolean True)) (Literal (Boolean True)))
-       , NormalArg (Literal (Boolean True))
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/ops-07.typ"
-    ( line 21 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (And (Literal (Boolean False)) (Ident (Identifier "dont-care")))
-       , NormalArg (Literal (Boolean False))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-07.typ"
-    ( line 22 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (Or (Literal (Boolean True)) (Ident (Identifier "dont-care")))
-       , NormalArg (Literal (Boolean True))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak(), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak(), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak(), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/ops-08.out b/test/out/compiler/ops-08.out
deleted file mode 100644
--- a/test/out/compiler/ops-08.out
+++ /dev/null
@@ -1,327 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/ops-08.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/ops-08.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/ops-08.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/ops-08.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Equals (Literal (Int 1)) (Literal (String "hi")))
-       , NormalArg (Literal (Boolean False))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-08.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Equals (Literal (Int 1)) (Literal (Float 1.0)))
-       , NormalArg (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-08.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (Equals
-              (Literal (Numeric 30.0 Percent))
-              (Plus (Literal (Numeric 30.0 Percent)) (Literal (Numeric 0.0 Cm))))
-       , NormalArg (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-08.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (Equals
-              (Literal (Numeric 1.0 In))
-              (Plus (Literal (Numeric 0.0 Percent)) (Literal (Numeric 72.0 Pt))))
-       , NormalArg (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-08.typ"
-    ( line 9 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (Equals
-              (Literal (Numeric 30.0 Percent))
-              (Plus (Literal (Numeric 30.0 Percent)) (Literal (Numeric 1.0 Cm))))
-       , NormalArg (Literal (Boolean False))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-08.typ"
-    ( line 10 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (Equals
-              (Literal (String "ab"))
-              (Plus (Literal (String "a")) (Literal (String "b"))))
-       , NormalArg (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-08.typ"
-    ( line 11 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Equals (Array []) (Array [ Reg (Literal (Int 1)) ]))
-       , NormalArg (Literal (Boolean False))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-08.typ"
-    ( line 12 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (Equals
-              (Array
-                 [ Reg (Literal (Int 1))
-                 , Reg (Literal (Int 2))
-                 , Reg (Literal (Int 3))
-                 ])
-              (Plus
-                 (Array [ Reg (Literal (Int 1)) , Reg (Literal (Float 2.0)) ])
-                 (Array [ Reg (Literal (Int 3)) ])))
-       , NormalArg (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-08.typ"
-    ( line 13 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (Equals
-              (Dict [])
-              (Dict [ Reg ( Ident (Identifier "a") , Literal (Int 1) ) ]))
-       , NormalArg (Literal (Boolean False))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-08.typ"
-    ( line 14 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (Equals
-              (Dict
-                 [ Reg
-                     ( Ident (Identifier "a")
-                     , Minus (Literal (Int 2)) (Literal (Float 1.0))
-                     )
-                 , Reg ( Ident (Identifier "b") , Literal (Int 2) )
-                 ])
-              (Dict
-                 [ Reg ( Ident (Identifier "b") , Literal (Int 2) )
-                 , Reg ( Ident (Identifier "a") , Literal (Int 1) )
-                 ]))
-       , NormalArg (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-08.typ"
-    ( line 15 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (Not (Equals (Literal (String "a")) (Literal (String "a"))))
-       , NormalArg (Literal (Boolean False))
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/ops-08.typ"
-    ( line 18 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (Equals (Ident (Identifier "test")) (Ident (Identifier "test")))
-       , NormalArg (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-08.typ"
-    ( line 19 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (Equals
-              (FuncExpr [] (Block (CodeBlock [])))
-              (FuncExpr [] (Block (CodeBlock []))))
-       , NormalArg (Literal (Boolean False))
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/ops-08.typ"
-    ( line 22 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "t"))) (Block (Content [ Text "a" ])))
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-08.typ"
-    ( line 23 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (Equals (Ident (Identifier "t")) (Ident (Identifier "t")))
-       , NormalArg (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-08.typ"
-    ( line 24 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Equals (Block (Content [])) (Block (Content [])))
-       , NormalArg (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-08.typ"
-    ( line 25 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (Equals
-              (Block (Content [ Text "a" ])) (Block (Content [ Text "a" ])))
-       , NormalArg (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-08.typ"
-    ( line 26 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (Equals
-              (FuncCall (Ident (Identifier "grid")) [ BlockArg [ Text "a" ] ])
-              (FuncCall (Ident (Identifier "grid")) [ BlockArg [ Text "a" ] ]))
-       , NormalArg (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-08.typ"
-    ( line 27 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (Equals
-              (FuncCall (Ident (Identifier "grid")) [ BlockArg [ Text "a" ] ])
-              (FuncCall (Ident (Identifier "grid")) [ BlockArg [ Text "b" ] ]))
-       , NormalArg (Literal (Boolean False))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak(), 
-                 text(body: [❌(]), 
-                 text(body: [false]), 
-                 text(body: [ /= ]), 
-                 text(body: [true]), 
-                 text(body: [)]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/ops-09.out b/test/out/compiler/ops-09.out
deleted file mode 100644
--- a/test/out/compiler/ops-09.out
+++ /dev/null
@@ -1,181 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/ops-09.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/ops-09.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/ops-09.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-09.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (LessThan
-              (Times (Literal (Int 13)) (Literal (Int 3)))
-              (Times (Literal (Int 14)) (Literal (Int 4))))
-       , NormalArg (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-09.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (LessThan (Literal (Int 5)) (Literal (Int 10)))
-       , NormalArg (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-09.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (GreaterThan (Literal (Int 5)) (Literal (Int 5)))
-       , NormalArg (Literal (Boolean False))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-09.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (LessThanOrEqual (Literal (Int 5)) (Literal (Int 5)))
-       , NormalArg (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-09.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (LessThanOrEqual (Literal (Int 5)) (Literal (Int 4)))
-       , NormalArg (Literal (Boolean False))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-09.typ"
-    ( line 9 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (LessThan (Literal (Numeric 45.0 Deg)) (Literal (Numeric 1.0 Rad)))
-       , NormalArg (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-09.typ"
-    ( line 10 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (LessThan
-              (Literal (Numeric 10.0 Percent)) (Literal (Numeric 20.0 Percent)))
-       , NormalArg (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-09.typ"
-    ( line 11 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (LessThan
-              (Literal (Numeric 50.0 Percent))
-              (Plus (Literal (Numeric 40.0 Percent)) (Literal (Numeric 0.0 Pt))))
-       , NormalArg (Literal (Boolean False))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-09.typ"
-    ( line 12 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (LessThan
-              (Plus (Literal (Numeric 40.0 Percent)) (Literal (Numeric 0.0 Pt)))
-              (Plus (Literal (Numeric 50.0 Percent)) (Literal (Numeric 0.0 Pt))))
-       , NormalArg (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-09.typ"
-    ( line 13 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (LessThan (Literal (Numeric 1.0 Em)) (Literal (Numeric 2.0 Em)))
-       , NormalArg (Literal (Boolean True))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/ops-10.out b/test/out/compiler/ops-10.out
deleted file mode 100644
--- a/test/out/compiler/ops-10.out
+++ /dev/null
@@ -1,191 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/ops-10.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/ops-10.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/ops-10.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-10.typ"
-    ( line 4 , column 2 )
-    (Let (BasicBind (Just (Identifier "x"))) (Literal (Int 0)))
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-10.typ"
-    ( line 5 , column 2 )
-    (Assign (Ident (Identifier "x")) (Literal (Int 10)))
-, Space
-, Code
-    "test/typ/compiler/ops-10.typ"
-    ( line 5 , column 18 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "x"))
-       , NormalArg (Literal (Int 10))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-10.typ"
-    ( line 6 , column 2 )
-    (Assign
-       (Ident (Identifier "x"))
-       (Minus (Ident (Identifier "x")) (Literal (Int 5))))
-, Space
-, Code
-    "test/typ/compiler/ops-10.typ"
-    ( line 6 , column 18 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "x"))
-       , NormalArg (Literal (Int 5))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-10.typ"
-    ( line 7 , column 2 )
-    (Assign
-       (Ident (Identifier "x"))
-       (Plus (Ident (Identifier "x")) (Literal (Int 1))))
-, Space
-, Code
-    "test/typ/compiler/ops-10.typ"
-    ( line 7 , column 18 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "x"))
-       , NormalArg (Literal (Int 6))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-10.typ"
-    ( line 8 , column 2 )
-    (Assign
-       (Ident (Identifier "x"))
-       (Times (Ident (Identifier "x")) (Ident (Identifier "x"))))
-, Space
-, Code
-    "test/typ/compiler/ops-10.typ"
-    ( line 8 , column 18 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "x"))
-       , NormalArg (Literal (Int 36))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-10.typ"
-    ( line 9 , column 2 )
-    (Assign
-       (Ident (Identifier "x"))
-       (Divided (Ident (Identifier "x")) (Literal (Float 2.0))))
-, Space
-, Code
-    "test/typ/compiler/ops-10.typ"
-    ( line 9 , column 18 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "x"))
-       , NormalArg (Literal (Float 18.0))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-10.typ"
-    ( line 10 , column 2 )
-    (Assign (Ident (Identifier "x")) (Literal (String "some")))
-, Space
-, Code
-    "test/typ/compiler/ops-10.typ"
-    ( line 10 , column 18 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "x"))
-       , NormalArg (Literal (String "some"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-10.typ"
-    ( line 11 , column 2 )
-    (Assign
-       (Ident (Identifier "x"))
-       (Plus (Ident (Identifier "x")) (Literal (String "thing"))))
-, Space
-, Code
-    "test/typ/compiler/ops-10.typ"
-    ( line 11 , column 18 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "x"))
-       , NormalArg (Literal (String "something"))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [ ]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [ ]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [ ]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [ ]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [ ]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [ ]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [ ]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/ops-11.out b/test/out/compiler/ops-11.out
deleted file mode 100644
--- a/test/out/compiler/ops-11.out
+++ /dev/null
@@ -1,3 +0,0 @@
-"test/typ/compiler/ops-11.typ" (line 19, column 5):
-unexpected ":"
-expecting "//", "/*", operator or ")"
diff --git a/test/out/compiler/ops-12.out b/test/out/compiler/ops-12.out
deleted file mode 100644
--- a/test/out/compiler/ops-12.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/ops-13.out b/test/out/compiler/ops-13.out
deleted file mode 100644
--- a/test/out/compiler/ops-13.out
+++ /dev/null
@@ -1,210 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/ops-13.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/ops-13.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/ops-13.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/ops-13.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (InCollection (Literal (String "hi")) (Literal (String "worship")))
-       , NormalArg (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-13.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (InCollection
-              (Literal (String "hi"))
-              (Array
-                 [ Reg (Literal (String "we"))
-                 , Reg (Literal (String "hi"))
-                 , Reg (Literal (String "bye"))
-                 ]))
-       , NormalArg (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-13.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (InCollection
-              (Literal (String "Hey")) (Literal (String "abHeyCd")))
-       , NormalArg (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-13.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (InCollection
-              (Literal (String "Hey")) (Literal (String "abheyCd")))
-       , NormalArg (Literal (Boolean False))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-13.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (InCollection
-              (Literal (Int 5))
-              (FuncCall
-                 (Ident (Identifier "range")) [ NormalArg (Literal (Int 10)) ]))
-       , NormalArg (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-13.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (InCollection
-              (Literal (Int 12))
-              (FuncCall
-                 (Ident (Identifier "range")) [ NormalArg (Literal (Int 10)) ]))
-       , NormalArg (Literal (Boolean False))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-13.typ"
-    ( line 9 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (InCollection (Literal (String "")) (Array []))
-       , NormalArg (Literal (Boolean False))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-13.typ"
-    ( line 10 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (InCollection
-              (Literal (String "key"))
-              (Dict
-                 [ Reg ( Ident (Identifier "key") , Literal (String "value") ) ]))
-       , NormalArg (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-13.typ"
-    ( line 11 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (InCollection
-              (Literal (String "value"))
-              (Dict
-                 [ Reg ( Ident (Identifier "key") , Literal (String "value") ) ]))
-       , NormalArg (Literal (Boolean False))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-13.typ"
-    ( line 12 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (Not
-              (InCollection
-                 (Literal (String "Hey")) (Literal (String "abheyCd"))))
-       , NormalArg (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-13.typ"
-    ( line 13 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (Not
-              (InCollection (Literal (String "a")) (Literal (String "abc"))))
-       , NormalArg (Literal (Boolean False))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/ops-14.out b/test/out/compiler/ops-14.out
deleted file mode 100644
--- a/test/out/compiler/ops-14.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/ops-15.out b/test/out/compiler/ops-15.out
deleted file mode 100644
--- a/test/out/compiler/ops-15.out
+++ /dev/null
@@ -1,207 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/ops-15.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/ops-15.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/ops-15.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/ops-15.typ"
-    ( line 5 , column 2 )
-    (LetFunc
-       (Identifier "add")
-       [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-       (Plus (Ident (Identifier "x")) (Ident (Identifier "y"))))
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-15.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FuncCall
-                 (FieldAccess
-                    (Ident (Identifier "with")) (Ident (Identifier "add")))
-                 [ NormalArg (Literal (Int 2)) ])
-              [ NormalArg (Literal (Int 3)) ])
-       , NormalArg (Literal (Int 5))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-15.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FuncCall
-                 (FieldAccess
-                    (Ident (Identifier "with"))
-                    (FuncCall
-                       (FieldAccess
-                          (Ident (Identifier "with")) (Ident (Identifier "add")))
-                       [ NormalArg (Literal (Int 2)) ]))
-                 [ NormalArg (Literal (Int 3)) ])
-              [])
-       , NormalArg (Literal (Int 5))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-15.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FuncCall
-                 (FieldAccess
-                    (Ident (Identifier "with")) (Ident (Identifier "add")))
-                 [ NormalArg (Literal (Int 2)) ])
-              [ NormalArg (Literal (Int 4)) ])
-       , NormalArg (Literal (Int 6))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-15.typ"
-    ( line 9 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FuncCall
-                 (FieldAccess
-                    (Ident (Identifier "with"))
-                    (FuncCall
-                       (FieldAccess
-                          (Ident (Identifier "with")) (Ident (Identifier "add")))
-                       [ NormalArg (Literal (Int 2)) ]))
-                 [ NormalArg (Literal (Int 3)) ])
-              [])
-       , NormalArg (Literal (Int 5))
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/ops-15.typ"
-    ( line 12 , column 2 )
-    (LetFunc
-       (Identifier "inc")
-       [ NormalParam (Identifier "x")
-       , DefaultParam (Identifier "y") (Literal (Int 1))
-       ]
-       (Plus (Ident (Identifier "x")) (Ident (Identifier "y"))))
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-15.typ"
-    ( line 13 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "inc")) [ NormalArg (Literal (Int 1)) ])
-       , NormalArg (Literal (Int 2))
-       ])
-, ParBreak
-, Code
-    "test/typ/compiler/ops-15.typ"
-    ( line 15 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "inc2")))
-       (FuncCall
-          (FieldAccess
-             (Ident (Identifier "with")) (Ident (Identifier "inc")))
-          [ KeyValArg (Identifier "y") (Literal (Int 2)) ]))
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-15.typ"
-    ( line 16 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "inc2")) [ NormalArg (Literal (Int 2)) ])
-       , NormalArg (Literal (Int 4))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-15.typ"
-    ( line 17 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "inc2"))
-              [ NormalArg (Literal (Int 2))
-              , KeyValArg (Identifier "y") (Literal (Int 4))
-              ])
-       , NormalArg (Literal (Int 6))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/ops-assoc-00.out b/test/out/compiler/ops-assoc-00.out
deleted file mode 100644
--- a/test/out/compiler/ops-assoc-00.out
+++ /dev/null
@@ -1,93 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/ops-assoc-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/ops-assoc-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/ops-assoc-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/ops-assoc-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (Equals
-              (Divided
-                 (Divided (Literal (Int 10)) (Literal (Int 2))) (Literal (Int 2)))
-              (Divided
-                 (Divided (Literal (Int 10)) (Literal (Int 2))) (Literal (Int 2))))
-       , NormalArg (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-assoc-00.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (Equals
-              (Divided
-                 (Divided (Literal (Int 10)) (Literal (Int 2))) (Literal (Int 2)))
-              (Divided
-                 (Literal (Int 10)) (Divided (Literal (Int 2)) (Literal (Int 2)))))
-       , NormalArg (Literal (Boolean False))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-assoc-00.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (Times
-              (Divided (Literal (Int 1)) (Literal (Int 2))) (Literal (Int 3)))
-       , NormalArg (Literal (Float 1.5))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/ops-assoc-01.out b/test/out/compiler/ops-assoc-01.out
deleted file mode 100644
--- a/test/out/compiler/ops-assoc-01.out
+++ /dev/null
@@ -1,101 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/ops-assoc-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/ops-assoc-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/ops-assoc-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "{"
-, SoftBreak
-, Text "let"
-, Space
-, Text "x"
-, Space
-, Text "="
-, Space
-, Text "1"
-, SoftBreak
-, Text "let"
-, Space
-, Text "y"
-, Space
-, Text "="
-, Space
-, Text "2"
-, SoftBreak
-, Text "x"
-, Space
-, Text "="
-, Space
-, Text "y"
-, Space
-, Text "="
-, Space
-, Quote '"'
-, Text "ok"
-, Quote '"'
-, SoftBreak
-, Text "test"
-, Text "("
-, Text "x,"
-, Space
-, Text "none)"
-, SoftBreak
-, Text "test"
-, Text "("
-, Text "y,"
-, Space
-, Quote '"'
-, Text "ok"
-, Quote '"'
-, Text ")"
-, SoftBreak
-, Text "}"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [{
-let x = 1
-let y = 2
-x = y = “ok”
-test(x, none)
-test(y, “ok”)
-}]), 
-                 parbreak() })
diff --git a/test/out/compiler/ops-invalid-00.out b/test/out/compiler/ops-invalid-00.out
deleted file mode 100644
--- a/test/out/compiler/ops-invalid-00.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/ops-invalid-01.out b/test/out/compiler/ops-invalid-01.out
deleted file mode 100644
--- a/test/out/compiler/ops-invalid-01.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/ops-invalid-02.out b/test/out/compiler/ops-invalid-02.out
deleted file mode 100644
--- a/test/out/compiler/ops-invalid-02.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/ops-invalid-03.out b/test/out/compiler/ops-invalid-03.out
deleted file mode 100644
--- a/test/out/compiler/ops-invalid-03.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/ops-invalid-04.out b/test/out/compiler/ops-invalid-04.out
deleted file mode 100644
--- a/test/out/compiler/ops-invalid-04.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/ops-invalid-05.out b/test/out/compiler/ops-invalid-05.out
deleted file mode 100644
--- a/test/out/compiler/ops-invalid-05.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/ops-invalid-06.out b/test/out/compiler/ops-invalid-06.out
deleted file mode 100644
--- a/test/out/compiler/ops-invalid-06.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/ops-invalid-07.out b/test/out/compiler/ops-invalid-07.out
deleted file mode 100644
--- a/test/out/compiler/ops-invalid-07.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/ops-invalid-08.out b/test/out/compiler/ops-invalid-08.out
deleted file mode 100644
--- a/test/out/compiler/ops-invalid-08.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/ops-invalid-09.out b/test/out/compiler/ops-invalid-09.out
deleted file mode 100644
--- a/test/out/compiler/ops-invalid-09.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/ops-invalid-10.out b/test/out/compiler/ops-invalid-10.out
deleted file mode 100644
--- a/test/out/compiler/ops-invalid-10.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/ops-invalid-11.out b/test/out/compiler/ops-invalid-11.out
deleted file mode 100644
--- a/test/out/compiler/ops-invalid-11.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/ops-invalid-12.out b/test/out/compiler/ops-invalid-12.out
deleted file mode 100644
--- a/test/out/compiler/ops-invalid-12.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/ops-invalid-13.out b/test/out/compiler/ops-invalid-13.out
deleted file mode 100644
--- a/test/out/compiler/ops-invalid-13.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/ops-invalid-14.out b/test/out/compiler/ops-invalid-14.out
deleted file mode 100644
--- a/test/out/compiler/ops-invalid-14.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/ops-invalid-15.out b/test/out/compiler/ops-invalid-15.out
deleted file mode 100644
--- a/test/out/compiler/ops-invalid-15.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/ops-invalid-16.out b/test/out/compiler/ops-invalid-16.out
deleted file mode 100644
--- a/test/out/compiler/ops-invalid-16.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/ops-invalid-17.out b/test/out/compiler/ops-invalid-17.out
deleted file mode 100644
--- a/test/out/compiler/ops-invalid-17.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/ops-invalid-18.out b/test/out/compiler/ops-invalid-18.out
deleted file mode 100644
--- a/test/out/compiler/ops-invalid-18.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/ops-invalid-19.out b/test/out/compiler/ops-invalid-19.out
deleted file mode 100644
--- a/test/out/compiler/ops-invalid-19.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/ops-invalid-20.out b/test/out/compiler/ops-invalid-20.out
deleted file mode 100644
--- a/test/out/compiler/ops-invalid-20.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/ops-invalid-21.out b/test/out/compiler/ops-invalid-21.out
deleted file mode 100644
--- a/test/out/compiler/ops-invalid-21.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/ops-invalid-22.out b/test/out/compiler/ops-invalid-22.out
deleted file mode 100644
--- a/test/out/compiler/ops-invalid-22.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/ops-invalid-23.out b/test/out/compiler/ops-invalid-23.out
deleted file mode 100644
--- a/test/out/compiler/ops-invalid-23.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/ops-invalid-24.out b/test/out/compiler/ops-invalid-24.out
deleted file mode 100644
--- a/test/out/compiler/ops-invalid-24.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/ops-invalid-25.out b/test/out/compiler/ops-invalid-25.out
deleted file mode 100644
--- a/test/out/compiler/ops-invalid-25.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/ops-invalid-26.out b/test/out/compiler/ops-invalid-26.out
deleted file mode 100644
--- a/test/out/compiler/ops-invalid-26.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/ops-invalid-27.out b/test/out/compiler/ops-invalid-27.out
deleted file mode 100644
--- a/test/out/compiler/ops-invalid-27.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/ops-invalid-28.out b/test/out/compiler/ops-invalid-28.out
deleted file mode 100644
--- a/test/out/compiler/ops-invalid-28.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/ops-invalid-29.out b/test/out/compiler/ops-invalid-29.out
deleted file mode 100644
--- a/test/out/compiler/ops-invalid-29.out
+++ /dev/null
@@ -1,60 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/ops-invalid-29.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/ops-invalid-29.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/ops-invalid-29.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/compiler/ops-invalid-29.typ"
-    ( line 4 , column 2 )
-    (Let (BasicBind (Just (Identifier "rect"))) (Literal (String "")))
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-invalid-29.typ"
-    ( line 5 , column 2 )
-    (Assign (Ident (Identifier "rect")) (Literal (String "hi")))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak() })
diff --git a/test/out/compiler/ops-prec-00.out b/test/out/compiler/ops-prec-00.out
deleted file mode 100644
--- a/test/out/compiler/ops-prec-00.out
+++ /dev/null
@@ -1,102 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/ops-prec-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/ops-prec-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/ops-prec-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/ops-prec-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (Plus
-              (Literal (Int 1))
-              (Times (Literal (Int 2)) (Negated (Literal (Int 3)))))
-       , NormalArg (Negated (Literal (Int 5)))
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/ops-prec-00.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (Equals
-              (Literal (Int 3)) (Minus (Literal (Int 5)) (Literal (Int 2))))
-       , NormalArg (Literal (Boolean True))
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/ops-prec-00.typ"
-    ( line 9 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (And
-              (Equals (Literal (String "a")) (Literal (String "a")))
-              (LessThan (Literal (Int 2)) (Literal (Int 3))))
-       , NormalArg (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/ops-prec-00.typ"
-    ( line 10 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (Not (Equals (Literal (String "b")) (Literal (String "b"))))
-       , NormalArg (Literal (Boolean False))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak(), 
-                 text(body: [✅]), 
-                 parbreak(), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/ops-prec-01.out b/test/out/compiler/ops-prec-01.out
deleted file mode 100644
--- a/test/out/compiler/ops-prec-01.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/ops-prec-02.out b/test/out/compiler/ops-prec-02.out
deleted file mode 100644
--- a/test/out/compiler/ops-prec-02.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/ops-prec-03.out b/test/out/compiler/ops-prec-03.out
deleted file mode 100644
--- a/test/out/compiler/ops-prec-03.out
+++ /dev/null
@@ -1,65 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/ops-prec-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/ops-prec-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/ops-prec-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/ops-prec-03.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (Not
-              (InCollection
-                 (Negated (Literal (Int 1)))
-                 (Array
-                    [ Reg (Literal (Int 1))
-                    , Reg (Literal (Int 2))
-                    , Reg (Literal (Int 3))
-                    ])))
-       , NormalArg (Literal (Boolean True))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/ops-prec-04.out b/test/out/compiler/ops-prec-04.out
deleted file mode 100644
--- a/test/out/compiler/ops-prec-04.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/recursion-00.out b/test/out/compiler/recursion-00.out
deleted file mode 100644
--- a/test/out/compiler/recursion-00.out
+++ /dev/null
@@ -1,87 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/recursion-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/recursion-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/recursion-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/recursion-00.typ"
-    ( line 3 , column 2 )
-    (LetFunc
-       (Identifier "fib")
-       [ NormalParam (Identifier "n") ]
-       (Block
-          (CodeBlock
-             [ If
-                 [ ( LessThanOrEqual (Ident (Identifier "n")) (Literal (Int 2))
-                   , Block (CodeBlock [ Literal (Int 1) ])
-                   )
-                 , ( Literal (Boolean True)
-                   , Block
-                       (CodeBlock
-                          [ Plus
-                              (FuncCall
-                                 (Ident (Identifier "fib"))
-                                 [ NormalArg (Minus (Ident (Identifier "n")) (Literal (Int 1))) ])
-                              (FuncCall
-                                 (Ident (Identifier "fib"))
-                                 [ NormalArg (Minus (Ident (Identifier "n")) (Literal (Int 2))) ])
-                          ])
-                   )
-                 ]
-             ])))
-, ParBreak
-, Code
-    "test/typ/compiler/recursion-00.typ"
-    ( line 11 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "fib")) [ NormalArg (Literal (Int 10)) ])
-       , NormalArg (Literal (Int 55))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/recursion-01.out b/test/out/compiler/recursion-01.out
deleted file mode 100644
--- a/test/out/compiler/recursion-01.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/recursion-02.out b/test/out/compiler/recursion-02.out
deleted file mode 100644
--- a/test/out/compiler/recursion-02.out
+++ /dev/null
@@ -1,74 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/recursion-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/recursion-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/recursion-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/recursion-02.typ"
-    ( line 3 , column 2 )
-    (Let (BasicBind (Just (Identifier "f"))) (Literal (Int 10)))
-, SoftBreak
-, Code
-    "test/typ/compiler/recursion-02.typ"
-    ( line 4 , column 2 )
-    (LetFunc (Identifier "f") [] (Ident (Identifier "f")))
-, SoftBreak
-, Code
-    "test/typ/compiler/recursion-02.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "type"))
-              [ NormalArg (FuncCall (Ident (Identifier "f")) []) ])
-       , NormalArg (Literal (String "function"))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/recursion-03.out b/test/out/compiler/recursion-03.out
deleted file mode 100644
--- a/test/out/compiler/recursion-03.out
+++ /dev/null
@@ -1,76 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/recursion-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/recursion-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/recursion-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/recursion-03.typ"
-    ( line 3 , column 2 )
-    (Let (BasicBind (Just (Identifier "f"))) (Literal (Int 10)))
-, SoftBreak
-, Code
-    "test/typ/compiler/recursion-03.typ"
-    ( line 4 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "f")))
-       (FuncExpr [] (Ident (Identifier "f"))))
-, SoftBreak
-, Code
-    "test/typ/compiler/recursion-03.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "type"))
-              [ NormalArg (FuncCall (Ident (Identifier "f")) []) ])
-       , NormalArg (Literal (String "integer"))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/recursion-04.out b/test/out/compiler/recursion-04.out
deleted file mode 100644
--- a/test/out/compiler/recursion-04.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/recursion-05.out b/test/out/compiler/recursion-05.out
deleted file mode 100644
--- a/test/out/compiler/recursion-05.out
+++ /dev/null
@@ -1,86 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/recursion-05.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/recursion-05.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/recursion-05.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/compiler/recursion-05.typ"
-    ( line 2 , column 2 )
-    (LetFunc
-       (Identifier "f")
-       [ NormalParam (Identifier "x") ]
-       (Literal (String "hello")))
-, SoftBreak
-, Code
-    "test/typ/compiler/recursion-05.typ"
-    ( line 3 , column 2 )
-    (LetFunc
-       (Identifier "f")
-       [ NormalParam (Identifier "x") ]
-       (If
-          [ ( Not (Equals (Ident (Identifier "x")) (Literal None))
-            , Block
-                (CodeBlock
-                   [ FuncCall (Ident (Identifier "f")) [ NormalArg (Literal None) ] ])
-            )
-          , ( Literal (Boolean True)
-            , Block (CodeBlock [ Literal (String "world") ])
-            )
-          ]))
-, SoftBreak
-, Code
-    "test/typ/compiler/recursion-05.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall (Ident (Identifier "f")) [ NormalArg (Literal (Int 1)) ])
-       , NormalArg (Literal (String "world"))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/repr-00.out b/test/out/compiler/repr-00.out
deleted file mode 100644
--- a/test/out/compiler/repr-00.out
+++ /dev/null
@@ -1,82 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/repr-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/repr-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/repr-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/repr-00.typ"
-    ( line 3 , column 2 )
-    (Literal Auto)
-, Space
-, HardBreak
-, Code
-    "test/typ/compiler/repr-00.typ"
-    ( line 4 , column 2 )
-    (Literal None)
-, Space
-, Text "("
-, Text "empty)"
-, Space
-, HardBreak
-, Code
-    "test/typ/compiler/repr-00.typ"
-    ( line 5 , column 2 )
-    (Literal (Boolean True))
-, Space
-, HardBreak
-, Code
-    "test/typ/compiler/repr-00.typ"
-    ( line 6 , column 2 )
-    (Literal (Boolean False))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [auto]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 text(body: [ (empty) ]), 
-                 linebreak(), 
-                 text(body: [true]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 text(body: [false]), 
-                 parbreak() })
diff --git a/test/out/compiler/repr-01.out b/test/out/compiler/repr-01.out
deleted file mode 100644
--- a/test/out/compiler/repr-01.out
+++ /dev/null
@@ -1,156 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/repr-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/repr-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/repr-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/repr-01.typ"
-    ( line 3 , column 2 )
-    (Literal (Int 1))
-, Space
-, HardBreak
-, Code
-    "test/typ/compiler/repr-01.typ"
-    ( line 4 , column 2 )
-    (Literal (Float 1.0e-4))
-, Space
-, HardBreak
-, Code
-    "test/typ/compiler/repr-01.typ"
-    ( line 5 , column 2 )
-    (Literal (Float 3.15))
-, Space
-, HardBreak
-, Code
-    "test/typ/compiler/repr-01.typ"
-    ( line 6 , column 2 )
-    (Literal (Float 1.0e-10))
-, Space
-, HardBreak
-, Code
-    "test/typ/compiler/repr-01.typ"
-    ( line 7 , column 2 )
-    (Literal (Numeric 50.368 Percent))
-, HardBreak
-, Code
-    "test/typ/compiler/repr-01.typ"
-    ( line 8 , column 2 )
-    (Literal (Numeric 1.2345e-6 Pt))
-, HardBreak
-, Code
-    "test/typ/compiler/repr-01.typ"
-    ( line 9 , column 2 )
-    (Literal (Numeric 4.5 Cm))
-, HardBreak
-, Code
-    "test/typ/compiler/repr-01.typ"
-    ( line 10 , column 2 )
-    (Literal (Numeric 120.0 Pt))
-, HardBreak
-, Code
-    "test/typ/compiler/repr-01.typ"
-    ( line 11 , column 2 )
-    (Literal (Numeric 2.5 Rad))
-, HardBreak
-, Code
-    "test/typ/compiler/repr-01.typ"
-    ( line 12 , column 2 )
-    (Literal (Numeric 45.0 Deg))
-, HardBreak
-, Code
-    "test/typ/compiler/repr-01.typ"
-    ( line 13 , column 2 )
-    (Literal (Numeric 1.7 Em))
-, HardBreak
-, Code
-    "test/typ/compiler/repr-01.typ"
-    ( line 14 , column 2 )
-    (Plus (Literal (Numeric 1.0 Cm)) (Literal (Numeric 0.0 Em)))
-, Space
-, HardBreak
-, Code
-    "test/typ/compiler/repr-01.typ"
-    ( line 15 , column 2 )
-    (Plus (Literal (Numeric 2.0 Em)) (Literal (Numeric 10.0 Pt)))
-, Space
-, HardBreak
-, Code
-    "test/typ/compiler/repr-01.typ"
-    ( line 16 , column 2 )
-    (Literal (Numeric 2.3 Fr))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [1]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 text(body: [1.0e-4]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 text(body: [3.15]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 text(body: [1.0e-10]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 text(body: [50%]), 
-                 linebreak(), 
-                 text(body: [1.2345e-6pt]), 
-                 linebreak(), 
-                 text(body: [4.5cm]), 
-                 linebreak(), 
-                 text(body: [120.0pt]), 
-                 linebreak(), 
-                 text(body: [143.2394487827058deg]), 
-                 linebreak(), 
-                 text(body: [45.0deg]), 
-                 linebreak(), 
-                 text(body: [1.7em]), 
-                 linebreak(), 
-                 text(body: [1.0cm]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 text(body: [2.0em + 10.0pt]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 text(body: [2.3fr]), 
-                 parbreak() })
diff --git a/test/out/compiler/repr-02.out b/test/out/compiler/repr-02.out
deleted file mode 100644
--- a/test/out/compiler/repr-02.out
+++ /dev/null
@@ -1,157 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/repr-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/repr-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/repr-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/repr-02.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ NormalArg (Literal (Numeric 0.8 Em)) ])
-, SoftBreak
-, Code
-    "test/typ/compiler/repr-02.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "rgb"))
-       [ NormalArg (Literal (String "f7a205")) ])
-, Space
-, HardBreak
-, Code
-    "test/typ/compiler/repr-02.typ"
-    ( line 5 , column 2 )
-    (Plus
-       (Literal (Numeric 2.0 Pt))
-       (FuncCall
-          (Ident (Identifier "rgb"))
-          [ NormalArg (Literal (String "f7a205")) ]))
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/repr-02.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "raw"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "repr")) [ NormalArg (Literal (String "hi")) ])
-       , KeyValArg (Identifier "lang") (Literal (String "typc"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/repr-02.typ"
-    ( line 9 , column 2 )
-    (FuncCall
-       (Ident (Identifier "repr"))
-       [ NormalArg (Literal (String "a\n[]\"\128640string")) ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/repr-02.typ"
-    ( line 12 , column 2 )
-    (FuncCall
-       (Ident (Identifier "raw"))
-       [ KeyValArg (Identifier "lang") (Literal (String "typc"))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "repr")) [ BlockArg [ Strong [ Text "Hey" ] ] ])
-       ])
-, ParBreak
-, Comment
-, Text "Nothing"
-, SoftBreak
-, Code
-    "test/typ/compiler/repr-02.typ"
-    ( line 16 , column 2 )
-    (LetFunc
-       (Identifier "f")
-       [ NormalParam (Identifier "x") ]
-       (Ident (Identifier "x")))
-, SoftBreak
-, Code
-    "test/typ/compiler/repr-02.typ"
-    ( line 17 , column 2 )
-    (Ident (Identifier "f"))
-, SoftBreak
-, Code
-    "test/typ/compiler/repr-02.typ"
-    ( line 18 , column 2 )
-    (Ident (Identifier "rect"))
-, SoftBreak
-, Code
-    "test/typ/compiler/repr-02.typ"
-    ( line 19 , column 2 )
-    (FuncExpr [] (Literal None))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-], size: 0.8em), 
-                 text(body: [rgb(96%,63%,1%,100%)], 
-                      size: 0.8em), 
-                 text(body: [ ], size: 0.8em), 
-                 linebreak(), 
-                 text(body: [(thickness: 2.0pt,
- color: rgb(96%,63%,1%,100%))], 
-                      size: 0.8em), 
-                 parbreak(), 
-                 raw(lang: "typc", 
-                     text: "\"hi\""), 
-                 text(body: [
-], size: 0.8em), 
-                 text(body: ["a\n[]\"🚀string"], 
-                      size: 0.8em), 
-                 parbreak(), 
-                 raw(lang: "typc", 
-                     text: "strong(body: text(body: [Hey], \n                  size: 0.8em))"), 
-                 parbreak(), 
-                 text(body: [Nothing
-], 
-                      size: 0.8em), 
-                 text(body: [
-], size: 0.8em), 
-                 text(body: [
-], size: 0.8em), 
-                 text(body: [
-], size: 0.8em), 
-                 parbreak() })
diff --git a/test/out/compiler/return-00.out b/test/out/compiler/return-00.out
deleted file mode 100644
--- a/test/out/compiler/return-00.out
+++ /dev/null
@@ -1,70 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/return-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/return-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/return-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/return-00.typ"
-    ( line 3 , column 2 )
-    (LetFunc
-       (Identifier "f")
-       [ NormalParam (Identifier "x") ]
-       (Block
-          (CodeBlock
-             [ Return (Just (Plus (Ident (Identifier "x")) (Literal (Int 1))))
-             ])))
-, ParBreak
-, Code
-    "test/typ/compiler/return-00.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall (Ident (Identifier "f")) [ NormalArg (Literal (Int 1)) ])
-       , NormalArg (Literal (Int 2))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/return-01.out b/test/out/compiler/return-01.out
deleted file mode 100644
--- a/test/out/compiler/return-01.out
+++ /dev/null
@@ -1,112 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/return-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/return-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/return-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, SoftBreak
-, Code
-    "test/typ/compiler/return-01.typ"
-    ( line 4 , column 2 )
-    (LetFunc
-       (Identifier "f")
-       [ NormalParam (Identifier "x") ]
-       (Block
-          (CodeBlock
-             [ Literal (String "a")
-             , If
-                 [ ( Equals (Ident (Identifier "x")) (Literal (Int 0))
-                   , Block (CodeBlock [ Return (Just (Literal (String "b"))) ])
-                   )
-                 , ( Equals (Ident (Identifier "x")) (Literal (Int 1))
-                   , Block (CodeBlock [ Literal (String "c") ])
-                   )
-                 , ( Literal (Boolean True)
-                   , Block
-                       (CodeBlock
-                          [ Literal (String "d") , Return Nothing , Literal (String "e") ])
-                   )
-                 ]
-             ])))
-, ParBreak
-, Code
-    "test/typ/compiler/return-01.typ"
-    ( line 17 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall (Ident (Identifier "f")) [ NormalArg (Literal (Int 0)) ])
-       , NormalArg (Literal (String "b"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/return-01.typ"
-    ( line 18 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall (Ident (Identifier "f")) [ NormalArg (Literal (Int 1)) ])
-       , NormalArg (Literal (String "ac"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/return-01.typ"
-    ( line 19 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall (Ident (Identifier "f")) [ NormalArg (Literal (Int 2)) ])
-       , NormalArg (Literal (String "ad"))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/return-02.out b/test/out/compiler/return-02.out
deleted file mode 100644
--- a/test/out/compiler/return-02.out
+++ /dev/null
@@ -1,98 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/return-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/return-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/return-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, SoftBreak
-, Code
-    "test/typ/compiler/return-02.typ"
-    ( line 5 , column 2 )
-    (LetFunc
-       (Identifier "f")
-       [ NormalParam (Identifier "text")
-       , DefaultParam (Identifier "caption") (Literal None)
-       ]
-       (Block
-          (CodeBlock
-             [ Ident (Identifier "text")
-             , If
-                 [ ( Equals (Ident (Identifier "caption")) (Literal None)
-                   , Block
-                       (Content
-                          [ Text "."
-                          , Code
-                              "test/typ/compiler/return-02.typ"
-                              ( line 7 , column 26 )
-                              (Return Nothing)
-                          ])
-                   )
-                 ]
-             , Block (Content [ Text "," , Space ])
-             , FuncCall
-                 (Ident (Identifier "emph"))
-                 [ NormalArg (Ident (Identifier "caption")) ]
-             , Block (Content [ Text "." ])
-             ])))
-, ParBreak
-, Code
-    "test/typ/compiler/return-02.typ"
-    ( line 13 , column 2 )
-    (FuncCall
-       (Ident (Identifier "f"))
-       [ KeyValArg
-           (Identifier "caption")
-           (Block (Content [ Text "with" , Space , Text "caption" ]))
-       , BlockArg [ Text "My" , Space , Text "figure" ]
-       ])
-, ParBreak
-, Code
-    "test/typ/compiler/return-02.typ"
-    ( line 15 , column 2 )
-    (FuncCall
-       (Ident (Identifier "f"))
-       [ BlockArg
-           [ Text "My" , Space , Text "other" , Space , Text "figure" ]
-       ])
-, ParBreak
-]
-"test/typ/compiler/return-02.typ" (line 13, column 2):
-unexpected end of input
-text is not an element function
diff --git a/test/out/compiler/return-03.out b/test/out/compiler/return-03.out
deleted file mode 100644
--- a/test/out/compiler/return-03.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/return-04.out b/test/out/compiler/return-04.out
deleted file mode 100644
--- a/test/out/compiler/return-04.out
+++ /dev/null
@@ -1,101 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/return-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/return-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/return-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/return-04.typ"
-    ( line 3 , column 2 )
-    (LetFunc
-       (Identifier "sum")
-       [ SinkParam (Just (Identifier "args")) ]
-       (Block
-          (CodeBlock
-             [ Let (BasicBind (Just (Identifier "s"))) (Literal (Int 0))
-             , For
-                 (BasicBind (Just (Identifier "v")))
-                 (FuncCall
-                    (FieldAccess
-                       (Ident (Identifier "pos")) (Ident (Identifier "args")))
-                    [])
-                 (Block
-                    (CodeBlock
-                       [ Assign
-                           (Ident (Identifier "s"))
-                           (Plus (Ident (Identifier "s")) (Ident (Identifier "v")))
-                       ]))
-             , Ident (Identifier "s")
-             ])))
-, ParBreak
-, Code
-    "test/typ/compiler/return-04.typ"
-    ( line 11 , column 2 )
-    (LetFunc
-       (Identifier "f")
-       []
-       (Block
-          (CodeBlock
-             [ FuncCall
-                 (Ident (Identifier "sum"))
-                 [ SpreadArg (Return Nothing)
-                 , NormalArg (Literal (Int 1))
-                 , NormalArg (Literal (Int 2))
-                 , NormalArg (Literal (Int 3))
-                 ]
-             , Literal (String "nope")
-             ])))
-, ParBreak
-, Code
-    "test/typ/compiler/return-04.typ"
-    ( line 16 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (FuncCall (Ident (Identifier "f")) [])
-       , NormalArg (Literal (Int 6))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 parbreak(), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/return-05.out b/test/out/compiler/return-05.out
deleted file mode 100644
--- a/test/out/compiler/return-05.out
+++ /dev/null
@@ -1,97 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/return-05.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/return-05.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/return-05.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/return-05.typ"
-    ( line 3 , column 2 )
-    (Let (BasicBind (Just (Identifier "x"))) (Literal (Int 3)))
-, SoftBreak
-, Code
-    "test/typ/compiler/return-05.typ"
-    ( line 4 , column 2 )
-    (LetFunc
-       (Identifier "f")
-       []
-       (Block
-          (Content
-             [ SoftBreak
-             , Text "Hello"
-             , Space
-             , Text "\128512"
-             , SoftBreak
-             , Code
-                 "test/typ/compiler/return-05.typ"
-                 ( line 6 , column 4 )
-                 (Return (Just (Literal (String "nope"))))
-             , SoftBreak
-             , Text "World"
-             , ParBreak
-             ])))
-, ParBreak
-, Code
-    "test/typ/compiler/return-05.typ"
-    ( line 10 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (FuncCall (Ident (Identifier "f")) [])
-       , NormalArg (Literal (String "nope"))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [❌(]), 
-                 text(body: [{ text(body: [
-Hello 😀
-]), 
-  text(body: [nope]), 
-  text(body: [
-World]), 
-  parbreak() }]), 
-                 text(body: [ /= ]), 
-                 text(body: ["nope"]), 
-                 text(body: [)]), 
-                 parbreak() })
diff --git a/test/out/compiler/set-00.out b/test/out/compiler/set-00.out
deleted file mode 100644
--- a/test/out/compiler/set-00.out
+++ /dev/null
@@ -1,66 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/set-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/set-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/set-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/set-00.typ"
-    ( line 3 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "x")))
-       (Block (Content [ Text "World" ])))
-, SoftBreak
-, Text "Hello"
-, Space
-, Strong
-    [ Code
-        "test/typ/compiler/set-00.typ"
-        ( line 4 , column 9 )
-        (Ident (Identifier "x"))
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-Hello ]), 
-                 strong(body: text(body: [World])), 
-                 parbreak() })
diff --git a/test/out/compiler/set-01.out b/test/out/compiler/set-01.out
deleted file mode 100644
--- a/test/out/compiler/set-01.out
+++ /dev/null
@@ -1,113 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/set-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/set-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/set-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/set-01.typ"
-    ( line 3 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "fruit")))
-       (Block
-          (Content
-             [ SoftBreak
-             , BulletListItem [ Text "Apple" ]
-             , SoftBreak
-             , BulletListItem [ Text "Orange" ]
-             , SoftBreak
-             , Code
-                 "test/typ/compiler/set-01.typ"
-                 ( line 6 , column 4 )
-                 (FuncCall
-                    (Ident (Identifier "list"))
-                    [ KeyValArg (Identifier "body-indent") (Literal (Numeric 20.0 Pt))
-                    , BlockArg [ Text "Pear" ]
-                    ])
-             , ParBreak
-             ])))
-, ParBreak
-, BulletListItem [ Text "Fruit" ]
-, SoftBreak
-, Code
-    "test/typ/compiler/set-01.typ"
-    ( line 10 , column 2 )
-    (Block
-       (Content
-          [ Code
-              "test/typ/compiler/set-01.typ"
-              ( line 10 , column 4 )
-              (Set
-                 (Ident (Identifier "list"))
-                 [ KeyValArg (Identifier "indent") (Literal (Numeric 10.0 Pt)) ])
-          , SoftBreak
-          , Code
-              "test/typ/compiler/set-01.typ"
-              ( line 11 , column 3 )
-              (Ident (Identifier "fruit"))
-          ]))
-, SoftBreak
-, BulletListItem
-    [ Text "No"
-    , Space
-    , Text "more"
-    , Space
-    , Text "fruit"
-    , ParBreak
-    ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 list(children: (text(body: [Fruit]))), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 list(children: (text(body: [Apple]), 
-                                 text(body: [Orange]))), 
-                 list(body-indent: 20.0pt, 
-                      children: (text(body: [Pear]))), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 list(children: ({ text(body: [No more fruit]), 
-                                   parbreak() }), 
-                      indent: 10.0pt) })
diff --git a/test/out/compiler/set-02.out b/test/out/compiler/set-02.out
deleted file mode 100644
--- a/test/out/compiler/set-02.out
+++ /dev/null
@@ -1,115 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/set-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/set-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/set-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/compiler/set-02.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "block"))
-       [ KeyValArg (Identifier "spacing") (Literal (Numeric 4.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/compiler/set-02.typ"
-    ( line 5 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "style") (Literal (String "italic"))
-       , KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/set-02.typ"
-    ( line 6 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "x")))
-       (Block
-          (Content
-             [ Text "And"
-             , Space
-             , Text "the"
-             , Space
-             , Text "red"
-             , Space
-             , Code
-                 "test/typ/compiler/set-02.typ"
-                 ( line 6 , column 24 )
-                 (FuncCall (Ident (Identifier "parbreak")) [])
-             , Space
-             , Text "lay"
-             , Space
-             , Text "silent!"
-             ])))
-, SoftBreak
-, Code
-    "test/typ/compiler/set-02.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "fill") (Ident (Identifier "red"))
-       , NormalArg (Ident (Identifier "x"))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-], 
-                      fill: rgb(13%,61%,67%,100%), 
-                      style: "italic"), 
-                 text(body: [
-], 
-                      fill: rgb(13%,61%,67%,100%), 
-                      style: "italic"), 
-                 text(body: { text(body: [And the red ], 
-                                   fill: rgb(13%,61%,67%,100%), 
-                                   style: "italic"), 
-                              parbreak(), 
-                              text(body: [ lay silent!], 
-                                   fill: rgb(13%,61%,67%,100%), 
-                                   style: "italic") }, 
-                      fill: rgb(100%,25%,21%,100%), 
-                      style: "italic"), 
-                 parbreak() })
diff --git a/test/out/compiler/set-03.out b/test/out/compiler/set-03.out
deleted file mode 100644
--- a/test/out/compiler/set-03.out
+++ /dev/null
@@ -1,69 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/set-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/set-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/set-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/set-03.typ"
-    ( line 3 , column 2 )
-    (Block
-       (CodeBlock
-          [ If
-              [ ( Literal (Boolean True)
-                , Block
-                    (CodeBlock
-                       [ Set
-                           (Ident (Identifier "text"))
-                           [ NormalArg (Ident (Identifier "blue")) ]
-                       , Block (Content [ Text "Blue" , Space ])
-                       ])
-                )
-              ]
-          , Block (Content [ Text "Not" , Space , Text "blue" ])
-          ]))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [Blue ], 
-                      color: rgb(0%,45%,85%,100%)), 
-                 text(body: [Not blue]), 
-                 parbreak() })
diff --git a/test/out/compiler/set-04.out b/test/out/compiler/set-04.out
deleted file mode 100644
--- a/test/out/compiler/set-04.out
+++ /dev/null
@@ -1,103 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/set-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/set-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/set-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/set-04.typ"
-    ( line 3 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "choice")))
-       (Array
-          [ Reg (Literal (String "monkey.svg"))
-          , Reg (Literal (String "rhino.png"))
-          , Reg (Literal (String "tiger.jpg"))
-          ]))
-, SoftBreak
-, Code
-    "test/typ/compiler/set-04.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "enum"))
-       [ KeyValArg
-           (Identifier "numbering")
-           (FuncExpr
-              [ NormalParam (Identifier "n") ]
-              (Block
-                 (CodeBlock
-                    [ Let
-                        (BasicBind (Just (Identifier "path")))
-                        (Plus
-                           (Literal (String "/"))
-                           (FuncCall
-                              (FieldAccess
-                                 (Ident (Identifier "at")) (Ident (Identifier "choice")))
-                              [ NormalArg (Minus (Ident (Identifier "n")) (Literal (Int 1))) ]))
-                    , FuncCall
-                        (Ident (Identifier "move"))
-                        [ KeyValArg (Identifier "dy") (Negated (Literal (Numeric 0.15 Em)))
-                        , NormalArg
-                            (FuncCall
-                               (Ident (Identifier "image"))
-                               [ NormalArg (Ident (Identifier "path"))
-                               , KeyValArg (Identifier "width") (Literal (Numeric 1.0 Em))
-                               , KeyValArg (Identifier "height") (Literal (Numeric 1.0 Em))
-                               ])
-                        ]
-                    ])))
-       ])
-, ParBreak
-, EnumListItem Nothing [ Text "Monkey" ]
-, SoftBreak
-, EnumListItem Nothing [ Text "Rhino" ]
-, SoftBreak
-, EnumListItem Nothing [ Text "Tiger" , ParBreak ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 enum(children: (text(body: [Monkey]), 
-                                 text(body: [Rhino]), 
-                                 { text(body: [Tiger]), 
-                                   parbreak() }), 
-                      numbering: ) })
diff --git a/test/out/compiler/set-05.out b/test/out/compiler/set-05.out
deleted file mode 100644
--- a/test/out/compiler/set-05.out
+++ /dev/null
@@ -1,88 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/set-05.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/set-05.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/set-05.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/set-05.typ"
-    ( line 3 , column 2 )
-    (Show
-       (Just (Ident (Identifier "ref")))
-       (FuncExpr
-          [ NormalParam (Identifier "it") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals
-                          (FieldAccess
-                             (Ident (Identifier "target")) (Ident (Identifier "it")))
-                          (Label "unknown")
-                      , Set
-                          (Ident (Identifier "text"))
-                          [ NormalArg (Ident (Identifier "red")) ]
-                      )
-                    ]
-                , Plus
-                    (Literal (String "@"))
-                    (FuncCall
-                       (Ident (Identifier "str"))
-                       [ NormalArg
-                           (FieldAccess
-                              (Ident (Identifier "target")) (Ident (Identifier "it")))
-                       ])
-                ]))))
-, ParBreak
-, Ref "hello" (Literal Auto)
-, Space
-, Text "from"
-, Space
-, Text "the"
-, Space
-, Ref "unknown" (Literal Auto)
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [@<hello>]), 
-                 text(body: [ from the ]), 
-                 text(body: [@<unknown>]), 
-                 parbreak() })
diff --git a/test/out/compiler/set-06.out b/test/out/compiler/set-06.out
deleted file mode 100644
--- a/test/out/compiler/set-06.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/set-07.out b/test/out/compiler/set-07.out
deleted file mode 100644
--- a/test/out/compiler/set-07.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/shorthand-00.out b/test/out/compiler/shorthand-00.out
deleted file mode 100644
--- a/test/out/compiler/shorthand-00.out
+++ /dev/null
@@ -1,59 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/shorthand-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/shorthand-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/shorthand-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Text "The"
-, Space
-, Text "non"
-, Text "-"
-, Text "breaking"
-, Nbsp
-, Text "space"
-, Space
-, Text "does"
-, Space
-, Text "work"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-The non-breaking space does work.]), 
-                 parbreak() })
diff --git a/test/out/compiler/shorthand-01.out b/test/out/compiler/shorthand-01.out
deleted file mode 100644
--- a/test/out/compiler/shorthand-01.out
+++ /dev/null
@@ -1,73 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/shorthand-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/shorthand-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/shorthand-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Comment
-, Code
-    "test/typ/compiler/shorthand-01.typ"
-    ( line 5 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg
-           (Identifier "font") (Literal (String "New Computer Modern"))
-       ])
-, SoftBreak
-, Text "a"
-, Space
-, Text "b"
-, Space
-, HardBreak
-, Text "a"
-, Nbsp
-, Text "b"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-a b ], 
-                      font: "New Computer Modern"), 
-                 linebreak(), 
-                 text(body: [a b], 
-                      font: "New Computer Modern"), 
-                 parbreak() })
diff --git a/test/out/compiler/shorthand-02.out b/test/out/compiler/shorthand-02.out
deleted file mode 100644
--- a/test/out/compiler/shorthand-02.out
+++ /dev/null
@@ -1,60 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/shorthand-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/shorthand-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/shorthand-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, BulletListItem
-    [ Text "En" , Space , Text "dash" , Text ":" , Space , EnDash ]
-, SoftBreak
-, BulletListItem
-    [ Text "Em"
-    , Space
-    , Text "dash"
-    , Text ":"
-    , Space
-    , EmDash
-    , ParBreak
-    ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 list(children: (text(body: [En dash: –]), 
-                                 { text(body: [Em dash: —]), 
-                                   parbreak() })) })
diff --git a/test/out/compiler/shorthand-03.out b/test/out/compiler/shorthand-03.out
deleted file mode 100644
--- a/test/out/compiler/shorthand-03.out
+++ /dev/null
@@ -1,68 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/shorthand-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/shorthand-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/shorthand-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/compiler/shorthand-03.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "font") (Literal (String "Roboto")) ])
-, SoftBreak
-, Text "A"
-, Ellipsis
-, Space
-, Text "vs"
-, Space
-, Code
-    "test/typ/compiler/shorthand-03.typ"
-    ( line 3 , column 10 )
-    (Literal (String "A..."))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-A… vs ], 
-                      font: "Roboto"), 
-                 text(body: [A...], 
-                      font: "Roboto"), 
-                 parbreak() })
diff --git a/test/out/compiler/show-bare-00.out b/test/out/compiler/show-bare-00.out
deleted file mode 100644
--- a/test/out/compiler/show-bare-00.out
+++ /dev/null
@@ -1,194 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/show-bare-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/show-bare-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/show-bare-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/compiler/show-bare-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 130.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/compiler/show-bare-00.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ NormalArg (Literal (Numeric 0.7 Em)) ])
-, ParBreak
-, Code
-    "test/typ/compiler/show-bare-00.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "align"))
-       [ NormalArg (Ident (Identifier "center"))
-       , BlockArg
-           [ SoftBreak
-           , Code
-               "test/typ/compiler/show-bare-00.typ"
-               ( line 6 , column 4 )
-               (FuncCall
-                  (Ident (Identifier "text"))
-                  [ NormalArg (Literal (Numeric 1.3 Em))
-                  , BlockArg
-                      [ Strong
-                          [ Text "Essay" , Space , Text "on" , Space , Text "typography" ]
-                      ]
-                  ])
-           , Space
-           , HardBreak
-           , Text "T"
-           , Text "."
-           , Space
-           , Text "Ypst"
-           , ParBreak
-           ]
-       ])
-, ParBreak
-, Code
-    "test/typ/compiler/show-bare-00.typ"
-    ( line 10 , column 2 )
-    (Show
-       Nothing
-       (FuncCall
-          (FieldAccess
-             (Ident (Identifier "with")) (Ident (Identifier "columns")))
-          [ NormalArg (Literal (Int 2)) ]))
-, SoftBreak
-, Text "Great"
-, Space
-, Text "typography"
-, Space
-, Text "is"
-, Space
-, Text "at"
-, Space
-, Text "the"
-, Space
-, Text "essence"
-, Space
-, Text "of"
-, Space
-, Text "great"
-, Space
-, Text "storytelling"
-, Text "."
-, Space
-, Text "It"
-, Space
-, Text "is"
-, Space
-, Text "the"
-, Space
-, Text "medium"
-, Space
-, Text "that"
-, SoftBreak
-, Text "transports"
-, Space
-, Text "meaning"
-, Space
-, Text "from"
-, Space
-, Text "parchment"
-, Space
-, Text "to"
-, Space
-, Text "reader,"
-, Space
-, Text "the"
-, Space
-, Text "wave"
-, Space
-, Text "that"
-, Space
-, Text "sparks"
-, Space
-, Text "a"
-, Space
-, Text "flame"
-, SoftBreak
-, Text "in"
-, Space
-, Text "booklovers"
-, Space
-, Text "and"
-, Space
-, Text "the"
-, Space
-, Text "great"
-, Space
-, Text "fulfiller"
-, Space
-, Text "of"
-, Space
-, Text "human"
-, Space
-, Text "need"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 align(alignment: center, 
-                       body: { text(body: [
-], 
-                                    size: 0.7em), 
-                               text(body: strong(body: text(body: [Essay on typography], 
-                                                            size: 0.7em)), 
-                                    size: 1.3em), 
-                               text(body: [ ], 
-                                    size: 0.7em), 
-                               linebreak(), 
-                               text(body: [T. Ypst], 
-                                    size: 0.7em), 
-                               parbreak() }), 
-                 parbreak(), 
-                 columns(body: { text(body: [
-Great typography is at the essence of great storytelling. It is the medium that
-transports meaning from parchment to reader, the wave that sparks a flame
-in booklovers and the great fulfiller of human need.], 
-                                      size: 0.7em), 
-                                 parbreak() }, 
-                         count: 2) })
diff --git a/test/out/compiler/show-bare-01.out b/test/out/compiler/show-bare-01.out
deleted file mode 100644
--- a/test/out/compiler/show-bare-01.out
+++ /dev/null
@@ -1,84 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/show-bare-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/show-bare-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/show-bare-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "A"
-, Space
-, Code
-    "test/typ/compiler/show-bare-01.typ"
-    ( line 3 , column 4 )
-    (Block
-       (Content
-          [ Emph
-              [ Text "B"
-              , Space
-              , Code
-                  "test/typ/compiler/show-bare-01.typ"
-                  ( line 3 , column 9 )
-                  (Show
-                     Nothing
-                     (FuncExpr
-                        [ NormalParam (Identifier "c") ]
-                        (Block
-                           (Content
-                              [ Strong
-                                  [ Code
-                                      "test/typ/compiler/show-bare-01.typ"
-                                      ( line 3 , column 23 )
-                                      (Ident (Identifier "c"))
-                                  ]
-                              ]))))
-              , Space
-              , Text "C"
-              ]
-          ]))
-, Space
-, Text "D"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [A ]), 
-                 emph(body: { text(body: [B ]), 
-                              strong(body: text(body: [ C])) }), 
-                 text(body: [ D]), 
-                 parbreak() })
diff --git a/test/out/compiler/show-bare-02.out b/test/out/compiler/show-bare-02.out
deleted file mode 100644
--- a/test/out/compiler/show-bare-02.out
+++ /dev/null
@@ -1,77 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/show-bare-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/show-bare-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/show-bare-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/show-bare-02.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
-       , KeyValArg (Identifier "size") (Literal (Numeric 1.5 Em))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/show-bare-02.typ"
-    ( line 4 , column 2 )
-    (Show
-       Nothing
-       (FuncCall
-          (FieldAccess
-             (Ident (Identifier "with")) (Ident (Identifier "text")))
-          [ KeyValArg (Identifier "fill") (Ident (Identifier "red")) ]))
-, SoftBreak
-, Text "Forest"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-], 
-                      fill: rgb(13%,61%,67%,100%), 
-                      size: 1.5em), 
-                 text(body: { text(body: [
-Forest], 
-                                   fill: rgb(13%,61%,67%,100%), 
-                                   size: 1.5em), 
-                              parbreak() }, 
-                      fill: rgb(100%,25%,21%,100%)) })
diff --git a/test/out/compiler/show-bare-03.out b/test/out/compiler/show-bare-03.out
deleted file mode 100644
--- a/test/out/compiler/show-bare-03.out
+++ /dev/null
@@ -1,53 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/show-bare-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/show-bare-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/show-bare-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/compiler/show-bare-03.typ"
-    ( line 2 , column 2 )
-    (Show Nothing (Block (Content [ Text "Shown" ])))
-, SoftBreak
-, Text "Ignored"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [Shown]) })
diff --git a/test/out/compiler/show-bare-04.out b/test/out/compiler/show-bare-04.out
deleted file mode 100644
--- a/test/out/compiler/show-bare-04.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/show-bare-05.out b/test/out/compiler/show-bare-05.out
deleted file mode 100644
--- a/test/out/compiler/show-bare-05.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/show-bare-06.out b/test/out/compiler/show-bare-06.out
deleted file mode 100644
--- a/test/out/compiler/show-bare-06.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/show-node-00.out b/test/out/compiler/show-node-00.out
deleted file mode 100644
--- a/test/out/compiler/show-node-00.out
+++ /dev/null
@@ -1,83 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/show-node-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/show-node-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/show-node-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/show-node-00.typ"
-    ( line 3 , column 2 )
-    (Show
-       (Just (Ident (Identifier "list")))
-       (FuncExpr
-          [ NormalParam (Identifier "it") ]
-          (Plus
-             (Plus
-                (Literal (String "("))
-                (FuncCall
-                   (FieldAccess
-                      (Ident (Identifier "join"))
-                      (FuncCall
-                         (FieldAccess
-                            (Ident (Identifier "map"))
-                            (FieldAccess
-                               (Ident (Identifier "children")) (Ident (Identifier "it"))))
-                         [ NormalArg
-                             (FuncExpr
-                                [ NormalParam (Identifier "v") ]
-                                (FieldAccess (Ident (Identifier "body")) (Ident (Identifier "v"))))
-                         ]))
-                   [ NormalArg (Literal (String ", ")) ]))
-             (Literal (String ")")))))
-, ParBreak
-, BulletListItem
-    [ Text "A"
-    , SoftBreak
-    , BulletListItem [ Text "B" ]
-    , SoftBreak
-    , BulletListItem [ Text "C" ]
-    ]
-, SoftBreak
-, BulletListItem [ Text "D" ]
-, SoftBreak
-, BulletListItem [ Text "E" , ParBreak ]
-]
-"test/typ/compiler/show-node-00.typ" (line 3, column 2):
-unexpected end of input
-Content does not have a method "body" or FieldAccess requires a dictionary
diff --git a/test/out/compiler/show-node-01.out b/test/out/compiler/show-node-01.out
deleted file mode 100644
--- a/test/out/compiler/show-node-01.out
+++ /dev/null
@@ -1,81 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/show-node-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/show-node-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/show-node-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/show-node-01.typ"
-    ( line 3 , column 2 )
-    (Show
-       (Just (Ident (Identifier "heading")))
-       (Block (Content [ Text "B" ])))
-, SoftBreak
-, Code
-    "test/typ/compiler/show-node-01.typ"
-    ( line 4 , column 2 )
-    (Show
-       (Just (Ident (Identifier "heading")))
-       (Set
-          (Ident (Identifier "text"))
-          [ KeyValArg (Identifier "size") (Literal (Numeric 10.0 Pt))
-          , KeyValArg (Identifier "weight") (Literal (Int 400))
-          ]))
-, SoftBreak
-, Text "A"
-, Space
-, Code
-    "test/typ/compiler/show-node-01.typ"
-    ( line 5 , column 4 )
-    (Block (Content [ Heading 1 [ Text "Heading" ] ]))
-, Space
-, Text "C"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-A ]), 
-                 heading(body: text(body: [Heading]), 
-                         level: 1), 
-                 text(body: [ C]), 
-                 parbreak() })
diff --git a/test/out/compiler/show-node-02.out b/test/out/compiler/show-node-02.out
deleted file mode 100644
--- a/test/out/compiler/show-node-02.out
+++ /dev/null
@@ -1,78 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/show-node-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/show-node-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/show-node-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/show-node-02.typ"
-    ( line 3 , column 2 )
-    (Show (Just (Ident (Identifier "heading"))) (Literal None))
-, ParBreak
-, Text "Where"
-, Space
-, Text "is"
-, SoftBreak
-, Heading
-    1
-    [ Text "There"
-    , Space
-    , Text "are"
-    , Space
-    , Text "no"
-    , Space
-    , Text "headings"
-    , Space
-    , Text "around"
-    , Space
-    , Text "here!"
-    ]
-, Text "my"
-, Space
-, Text "heading?"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [Where is
-]), 
-                 text(body: [my heading?]), 
-                 parbreak() })
diff --git a/test/out/compiler/show-node-03.out b/test/out/compiler/show-node-03.out
deleted file mode 100644
--- a/test/out/compiler/show-node-03.out
+++ /dev/null
@@ -1,159 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/show-node-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/show-node-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/show-node-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/show-node-03.typ"
-    ( line 3 , column 2 )
-    (Show
-       (Just (Ident (Identifier "heading")))
-       (FuncExpr
-          [ NormalParam (Identifier "it") ]
-          (FuncCall
-             (Ident (Identifier "block"))
-             [ NormalArg
-                 (Block
-                    (CodeBlock
-                       [ Set
-                           (Ident (Identifier "text"))
-                           [ NormalArg (Literal (Numeric 10.0 Pt)) ]
-                       , FuncCall
-                           (Ident (Identifier "box"))
-                           [ NormalArg
-                               (FuncCall
-                                  (Ident (Identifier "move"))
-                                  [ KeyValArg (Identifier "dy") (Negated (Literal (Numeric 1.0 Pt)))
-                                  , BlockArg [ Text "\128214" ]
-                                  ])
-                           ]
-                       , FuncCall
-                           (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 5.0 Pt)) ]
-                       , If
-                           [ ( Equals
-                                 (FieldAccess
-                                    (Ident (Identifier "level")) (Ident (Identifier "it")))
-                                 (Literal (Int 1))
-                             , Block
-                                 (CodeBlock
-                                    [ FuncCall
-                                        (Ident (Identifier "underline"))
-                                        [ NormalArg
-                                            (FuncCall
-                                               (Ident (Identifier "text"))
-                                               [ NormalArg (Literal (Numeric 1.25 Em))
-                                               , NormalArg (Ident (Identifier "blue"))
-                                               , NormalArg
-                                                   (FieldAccess
-                                                      (Ident (Identifier "body"))
-                                                      (Ident (Identifier "it")))
-                                               ])
-                                        ]
-                                    ])
-                             )
-                           , ( Literal (Boolean True)
-                             , Block
-                                 (CodeBlock
-                                    [ FuncCall
-                                        (Ident (Identifier "text"))
-                                        [ NormalArg (Ident (Identifier "red"))
-                                        , NormalArg
-                                            (FieldAccess
-                                               (Ident (Identifier "body"))
-                                               (Ident (Identifier "it")))
-                                        ]
-                                    ])
-                             )
-                           ]
-                       ]))
-             ])))
-, ParBreak
-, Heading 1 [ Text "Task" , Space , Text "1" ]
-, Text "Some"
-, Space
-, Text "text"
-, Text "."
-, ParBreak
-, Heading 2 [ Text "Subtask" ]
-, Text "Some"
-, Space
-, Text "more"
-, Space
-, Text "text"
-, Text "."
-, ParBreak
-, Heading 1 [ Text "Task" , Space , Text "2" ]
-, Text "Another"
-, Space
-, Text "text"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 block(body: { box(body: move(body: text(body: [📖], 
-                                                         size: 10.0pt), 
-                                              dy: -1.0pt)), 
-                               h(amount: 5.0pt), 
-                               underline(body: text(body: text(body: [Task 1]), 
-                                                    color: rgb(0%,45%,85%,100%), 
-                                                    size: 1.25em)) }), 
-                 text(body: [Some text.]), 
-                 parbreak(), 
-                 block(body: { box(body: move(body: text(body: [📖], 
-                                                         size: 10.0pt), 
-                                              dy: -1.0pt)), 
-                               h(amount: 5.0pt), 
-                               text(body: text(body: [Subtask]), 
-                                    color: rgb(100%,25%,21%,100%), 
-                                    size: 10.0pt) }), 
-                 text(body: [Some more text.]), 
-                 parbreak(), 
-                 block(body: { box(body: move(body: text(body: [📖], 
-                                                         size: 10.0pt), 
-                                              dy: -1.0pt)), 
-                               h(amount: 5.0pt), 
-                               underline(body: text(body: text(body: [Task 2]), 
-                                                    color: rgb(0%,45%,85%,100%), 
-                                                    size: 1.25em)) }), 
-                 text(body: [Another text.]), 
-                 parbreak() })
diff --git a/test/out/compiler/show-node-04.out b/test/out/compiler/show-node-04.out
deleted file mode 100644
--- a/test/out/compiler/show-node-04.out
+++ /dev/null
@@ -1,67 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/show-node-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/show-node-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/show-node-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/show-node-04.typ"
-    ( line 3 , column 2 )
-    (Show
-       (Just (Ident (Identifier "heading")))
-       (FuncExpr
-          [ NormalParam (Identifier "it") ]
-          (Block
-             (CodeBlock
-                [ Set
-                    (Ident (Identifier "text"))
-                    [ NormalArg (Ident (Identifier "red")) ]
-                , Show
-                    (Just (Literal (String "ding")))
-                    (Block (Content [ Text "\128718" ]))
-                , FieldAccess (Ident (Identifier "body")) (Ident (Identifier "it"))
-                ]))))
-, ParBreak
-, Heading 1 [ Text "Heading" ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [Heading]) })
diff --git a/test/out/compiler/show-node-05.out b/test/out/compiler/show-node-05.out
deleted file mode 100644
--- a/test/out/compiler/show-node-05.out
+++ /dev/null
@@ -1,85 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/show-node-05.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/show-node-05.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/show-node-05.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/show-node-05.typ"
-    ( line 3 , column 2 )
-    (Block
-       (CodeBlock
-          [ Let
-              (BasicBind (Just (Identifier "world")))
-              (Block (Content [ Space , Text "World" , Space ]))
-          , Show (Just (Literal (String "W"))) (Ident (Identifier "strong"))
-          , Ident (Identifier "world")
-          , Block
-              (CodeBlock
-                 [ Set
-                     (Ident (Identifier "text"))
-                     [ NormalArg (Ident (Identifier "blue")) ]
-                 , Show
-                     Nothing
-                     (FuncExpr
-                        [ NormalParam (Identifier "it") ]
-                        (Block
-                           (CodeBlock
-                              [ Show (Just (Literal (String "o"))) (Literal (String "\216"))
-                              , Ident (Identifier "it")
-                              ])))
-                 , Ident (Identifier "world")
-                 ])
-          , Ident (Identifier "world")
-          ]))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: { [ ], 
-                              strong(body: [W]), 
-                              [orld ] }), 
-                 parbreak(), 
-                 text(body: { [ ], 
-                              strong(body: [W]), 
-                              [orld ] }), 
-                 text(body: { [ ], 
-                              strong(body: [W]), 
-                              [orld ] }) })
diff --git a/test/out/compiler/show-node-06.out b/test/out/compiler/show-node-06.out
deleted file mode 100644
--- a/test/out/compiler/show-node-06.out
+++ /dev/null
@@ -1,56 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/show-node-06.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/show-node-06.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/show-node-06.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/compiler/show-node-06.typ"
-    ( line 2 , column 2 )
-    (Show
-       (Just (Ident (Identifier "heading")))
-       (Block (Content [ Text "1234" ])))
-, SoftBreak
-, Heading 1 [ Text "Heading" ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [1234]) })
diff --git a/test/out/compiler/show-node-07.out b/test/out/compiler/show-node-07.out
deleted file mode 100644
--- a/test/out/compiler/show-node-07.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/show-node-08.out b/test/out/compiler/show-node-08.out
deleted file mode 100644
--- a/test/out/compiler/show-node-08.out
+++ /dev/null
@@ -1,55 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/show-node-08.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/show-node-08.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/show-node-08.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/compiler/show-node-08.typ"
-    ( line 2 , column 2 )
-    (Show (Just (Ident (Identifier "text"))) (Literal None))
-, SoftBreak
-, Text "Hey"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-Hey]), 
-                 parbreak() })
diff --git a/test/out/compiler/show-node-09.out b/test/out/compiler/show-node-09.out
deleted file mode 100644
--- a/test/out/compiler/show-node-09.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/show-node-10.out b/test/out/compiler/show-node-10.out
deleted file mode 100644
--- a/test/out/compiler/show-node-10.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/show-node-11.out b/test/out/compiler/show-node-11.out
deleted file mode 100644
--- a/test/out/compiler/show-node-11.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/show-node-12.out b/test/out/compiler/show-node-12.out
deleted file mode 100644
--- a/test/out/compiler/show-node-12.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/show-recursive-00.out b/test/out/compiler/show-recursive-00.out
deleted file mode 100644
--- a/test/out/compiler/show-recursive-00.out
+++ /dev/null
@@ -1,59 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/show-recursive-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/show-recursive-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/show-recursive-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/show-recursive-00.typ"
-    ( line 3 , column 2 )
-    (Show
-       (Just (Ident (Identifier "heading")))
-       (FuncExpr
-          [ NormalParam (Identifier "it") ] (Ident (Identifier "it"))))
-, SoftBreak
-, Heading 1 [ Text "Heading" ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 heading(body: text(body: [Heading]), 
-                         level: 1) })
diff --git a/test/out/compiler/show-recursive-01.out b/test/out/compiler/show-recursive-01.out
deleted file mode 100644
--- a/test/out/compiler/show-recursive-01.out
+++ /dev/null
@@ -1,86 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/show-recursive-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/show-recursive-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/show-recursive-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/show-recursive-01.typ"
-    ( line 3 , column 2 )
-    (Show
-       (Just (Ident (Identifier "list")))
-       (FuncCall
-          (FieldAccess
-             (Ident (Identifier "with")) (Ident (Identifier "scale")))
-          [ KeyValArg (Identifier "origin") (Ident (Identifier "left"))
-          , KeyValArg (Identifier "x") (Literal (Numeric 80.0 Percent))
-          ]))
-, SoftBreak
-, Code
-    "test/typ/compiler/show-recursive-01.typ"
-    ( line 4 , column 2 )
-    (Show (Just (Ident (Identifier "heading"))) (Block (Content [])))
-, SoftBreak
-, Code
-    "test/typ/compiler/show-recursive-01.typ"
-    ( line 5 , column 2 )
-    (Show (Just (Ident (Identifier "enum"))) (Block (Content [])))
-, SoftBreak
-, BulletListItem [ Text "Actual" ]
-, SoftBreak
-, BulletListItem [ Text "Tight" ]
-, SoftBreak
-, BulletListItem [ Text "List" ]
-, SoftBreak
-, Heading 1 [ Text "Nope" ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 scale(body: list(children: (text(body: [Actual]), 
-                                             text(body: [Tight]), 
-                                             text(body: [List]))), 
-                       origin: left, 
-                       x: 80%) })
diff --git a/test/out/compiler/show-recursive-02.out b/test/out/compiler/show-recursive-02.out
deleted file mode 100644
--- a/test/out/compiler/show-recursive-02.out
+++ /dev/null
@@ -1,123 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/show-recursive-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/show-recursive-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/show-recursive-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/show-recursive-02.typ"
-    ( line 3 , column 2 )
-    (LetFunc
-       (Identifier "starwars")
-       [ NormalParam (Identifier "body") ]
-       (Block
-          (CodeBlock
-             [ Show
-                 (Just (Ident (Identifier "list")))
-                 (FuncExpr
-                    [ NormalParam (Identifier "it") ]
-                    (FuncCall
-                       (Ident (Identifier "block"))
-                       [ NormalArg
-                           (Block
-                              (CodeBlock
-                                 [ FuncCall
-                                     (Ident (Identifier "stack"))
-                                     [ KeyValArg (Identifier "dir") (Ident (Identifier "ltr"))
-                                     , NormalArg
-                                         (FuncCall
-                                            (Ident (Identifier "text"))
-                                            [ NormalArg (Ident (Identifier "red"))
-                                            , NormalArg (Ident (Identifier "it"))
-                                            ])
-                                     , NormalArg (Literal (Numeric 1.0 Fr))
-                                     , NormalArg
-                                         (FuncCall
-                                            (Ident (Identifier "scale"))
-                                            [ KeyValArg
-                                                (Identifier "x")
-                                                (Negated (Literal (Numeric 100.0 Percent)))
-                                            , NormalArg
-                                                (FuncCall
-                                                   (Ident (Identifier "text"))
-                                                   [ NormalArg (Ident (Identifier "blue"))
-                                                   , NormalArg (Ident (Identifier "it"))
-                                                   ])
-                                            ])
-                                     ]
-                                 ]))
-                       ]))
-             , Ident (Identifier "body")
-             ])))
-, ParBreak
-, BulletListItem
-    [ Text "Normal" , Space , Text "list" , SoftBreak ]
-, SoftBreak
-, Code
-    "test/typ/compiler/show-recursive-02.typ"
-    ( line 16 , column 2 )
-    (FuncCall
-       (Ident (Identifier "starwars"))
-       [ BlockArg
-           [ SoftBreak
-           , BulletListItem [ Text "Star" ]
-           , SoftBreak
-           , BulletListItem [ Text "Wars" ]
-           , SoftBreak
-           , BulletListItem [ Text "List" , ParBreak ]
-           ]
-       ])
-, ParBreak
-, BulletListItem [ Text "Normal" , Space , Text "list" , ParBreak ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 list(children: (text(body: [Normal list
-]))), 
-                 text(body: [
-]), 
-                 list(children: (text(body: [Star]), 
-                                 text(body: [Wars]), 
-                                 { text(body: [List]), 
-                                   parbreak() })), 
-                 parbreak(), 
-                 list(children: ({ text(body: [Normal list]), 
-                                   parbreak() })) })
diff --git a/test/out/compiler/show-recursive-03.out b/test/out/compiler/show-recursive-03.out
deleted file mode 100644
--- a/test/out/compiler/show-recursive-03.out
+++ /dev/null
@@ -1,101 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/show-recursive-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/show-recursive-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/show-recursive-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/show-recursive-03.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "rect"))
-       [ KeyValArg (Identifier "inset") (Literal (Numeric 3.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/compiler/show-recursive-03.typ"
-    ( line 4 , column 2 )
-    (Show
-       (Just (Ident (Identifier "list")))
-       (FuncCall
-          (FieldAccess
-             (Ident (Identifier "with")) (Ident (Identifier "rect")))
-          [ KeyValArg (Identifier "stroke") (Ident (Identifier "blue")) ]))
-, SoftBreak
-, Code
-    "test/typ/compiler/show-recursive-03.typ"
-    ( line 5 , column 2 )
-    (Show
-       (Just (Ident (Identifier "list")))
-       (FuncCall
-          (FieldAccess
-             (Ident (Identifier "with")) (Ident (Identifier "rect")))
-          [ KeyValArg (Identifier "stroke") (Ident (Identifier "red")) ]))
-, SoftBreak
-, Code
-    "test/typ/compiler/show-recursive-03.typ"
-    ( line 6 , column 2 )
-    (Show
-       (Just (Ident (Identifier "list"))) (Ident (Identifier "block")))
-, ParBreak
-, BulletListItem
-    [ Text "List"
-    , SoftBreak
-    , BulletListItem [ Text "Nested" ]
-    , SoftBreak
-    , BulletListItem [ Text "List" ]
-    ]
-, SoftBreak
-, BulletListItem [ Text "Recursive!" , ParBreak ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 block(body: list(children: ({ text(body: [List
-]), 
-                                               block(body: block(body: list(children: (text(body: [Nested]), 
-                                                                                       text(body: [List]))))) }, 
-                                             { text(body: [Recursive!]), 
-                                               parbreak() }))) })
diff --git a/test/out/compiler/show-selector-00.out b/test/out/compiler/show-selector-00.out
deleted file mode 100644
--- a/test/out/compiler/show-selector-00.out
+++ /dev/null
@@ -1,212 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/show-selector-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/show-selector-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/show-selector-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/show-selector-00.typ"
-    ( line 3 , column 2 )
-    (Show
-       (Just
-          (FuncCall
-             (FieldAccess
-                (Ident (Identifier "where")) (Ident (Identifier "raw")))
-             [ KeyValArg (Identifier "block") (Literal (Boolean False)) ]))
-       (FuncCall
-          (FieldAccess
-             (Ident (Identifier "with")) (Ident (Identifier "box")))
-          [ KeyValArg (Identifier "radius") (Literal (Numeric 2.0 Pt))
-          , KeyValArg
-              (Identifier "outset")
-              (Dict
-                 [ Reg ( Ident (Identifier "y") , Literal (Numeric 2.5 Pt) ) ])
-          , KeyValArg
-              (Identifier "inset")
-              (Dict
-                 [ Reg ( Ident (Identifier "x") , Literal (Numeric 3.0 Pt) )
-                 , Reg ( Ident (Identifier "y") , Literal (Numeric 0.0 Pt) )
-                 ])
-          , KeyValArg
-              (Identifier "fill")
-              (FuncCall
-                 (Ident (Identifier "luma")) [ NormalArg (Literal (Int 230)) ])
-          ]))
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/show-selector-00.typ"
-    ( line 11 , column 2 )
-    (Show
-       (Just
-          (FuncCall
-             (FieldAccess
-                (Ident (Identifier "where")) (Ident (Identifier "raw")))
-             [ KeyValArg (Identifier "block") (Literal (Boolean True)) ]))
-       (FuncCall
-          (FieldAccess
-             (Ident (Identifier "with")) (Ident (Identifier "block")))
-          [ KeyValArg
-              (Identifier "outset") (Negated (Literal (Numeric 3.0 Pt)))
-          , KeyValArg (Identifier "inset") (Literal (Numeric 11.0 Pt))
-          , KeyValArg
-              (Identifier "fill")
-              (FuncCall
-                 (Ident (Identifier "luma")) [ NormalArg (Literal (Int 230)) ])
-          , KeyValArg
-              (Identifier "stroke")
-              (Dict
-                 [ Reg
-                     ( Ident (Identifier "left")
-                     , Plus
-                         (Literal (Numeric 1.5 Pt))
-                         (FuncCall
-                            (Ident (Identifier "luma")) [ NormalArg (Literal (Int 180)) ])
-                     )
-                 ])
-          ]))
-, ParBreak
-, Code
-    "test/typ/compiler/show-selector-00.typ"
-    ( line 18 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg
-           (Identifier "margin")
-           (Dict
-              [ Reg ( Ident (Identifier "top") , Literal (Numeric 12.0 Pt) ) ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/show-selector-00.typ"
-    ( line 19 , column 2 )
-    (Set
-       (Ident (Identifier "par"))
-       [ KeyValArg (Identifier "justify") (Literal (Boolean True)) ])
-, ParBreak
-, Text "This"
-, Space
-, Text "code"
-, Space
-, Text "tests"
-, Space
-, RawInline "code"
-, SoftBreak
-, Text "with"
-, Space
-, Text "selectors"
-, Space
-, Text "and"
-, Space
-, Text "justification"
-, Text "."
-, ParBreak
-, RawBlock "rs" "code!(\"it\");\n"
-, ParBreak
-, Text "You"
-, Space
-, Text "can"
-, Space
-, Text "use"
-, Space
-, Text "the"
-, Space
-, RawBlock "rs" "*const T"
-, Space
-, Text "pointer"
-, Space
-, Text "or"
-, SoftBreak
-, Text "the"
-, Space
-, RawBlock "rs" "&mut T"
-, Space
-, Text "reference"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [This code tests ]), 
-                 box(body: raw(block: false, 
-                               lang: none, 
-                               text: "code"), 
-                     fill: luma(23000%), 
-                     inset: (x: 3.0pt, y: 0.0pt), 
-                     outset: (y: 2.5pt), 
-                     radius: 2.0pt), 
-                 text(body: [
-with selectors and justification.]), 
-                 parbreak(), 
-                 block(body: raw(block: true, 
-                                 lang: "rs", 
-                                 text: "code!(\"it\");\n"), 
-                       fill: luma(23000%), 
-                       inset: 11.0pt, 
-                       outset: -3.0pt, 
-                       stroke: (left: (thickness: 1.5pt,
-                                       color: luma(18000%)))), 
-                 parbreak(), 
-                 text(body: [You can use the ]), 
-                 block(body: raw(block: true, 
-                                 lang: "rs", 
-                                 text: "*const T"), 
-                       fill: luma(23000%), 
-                       inset: 11.0pt, 
-                       outset: -3.0pt, 
-                       stroke: (left: (thickness: 1.5pt,
-                                       color: luma(18000%)))), 
-                 text(body: [ pointer or
-the ]), 
-                 block(body: raw(block: true, 
-                                 lang: "rs", 
-                                 text: "&mut T"), 
-                       fill: luma(23000%), 
-                       inset: 11.0pt, 
-                       outset: -3.0pt, 
-                       stroke: (left: (thickness: 1.5pt,
-                                       color: luma(18000%)))), 
-                 text(body: [ reference.]), 
-                 parbreak() })
diff --git a/test/out/compiler/show-selector-01.out b/test/out/compiler/show-selector-01.out
deleted file mode 100644
--- a/test/out/compiler/show-selector-01.out
+++ /dev/null
@@ -1,95 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/show-selector-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/show-selector-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/show-selector-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/compiler/show-selector-01.typ"
-    ( line 2 , column 2 )
-    (Show
-       (Just
-          (FuncCall
-             (FieldAccess
-                (Ident (Identifier "where")) (Ident (Identifier "heading")))
-             [ KeyValArg (Identifier "level") (Literal (Int 1)) ]))
-       (Set
-          (Ident (Identifier "text"))
-          [ NormalArg (Ident (Identifier "red")) ]))
-, SoftBreak
-, Code
-    "test/typ/compiler/show-selector-01.typ"
-    ( line 3 , column 2 )
-    (Show
-       (Just
-          (FuncCall
-             (FieldAccess
-                (Ident (Identifier "where")) (Ident (Identifier "heading")))
-             [ KeyValArg (Identifier "level") (Literal (Int 2)) ]))
-       (Set
-          (Ident (Identifier "text"))
-          [ NormalArg (Ident (Identifier "blue")) ]))
-, SoftBreak
-, Code
-    "test/typ/compiler/show-selector-01.typ"
-    ( line 4 , column 2 )
-    (Show
-       (Just (Ident (Identifier "heading")))
-       (Set
-          (Ident (Identifier "text"))
-          [ NormalArg (Ident (Identifier "green")) ]))
-, SoftBreak
-, Heading 1 [ Text "Red" ]
-, Heading 2 [ Text "Blue" ]
-, Heading 3 [ Text "Green" ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 heading(body: text(body: [Red]), 
-                         level: 1), 
-                 heading(body: text(body: [Blue]), 
-                         level: 2), 
-                 heading(body: text(body: [Green]), 
-                         level: 3) })
diff --git a/test/out/compiler/show-selector-02.out b/test/out/compiler/show-selector-02.out
deleted file mode 100644
--- a/test/out/compiler/show-selector-02.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/show-text-00.out b/test/out/compiler/show-text-00.out
deleted file mode 100644
--- a/test/out/compiler/show-text-00.out
+++ /dev/null
@@ -1,81 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/show-text-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/show-text-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/show-text-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/show-text-00.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "font") (Literal (String "Roboto")) ])
-, SoftBreak
-, Code
-    "test/typ/compiler/show-text-00.typ"
-    ( line 4 , column 2 )
-    (Show
-       (Just (Literal (String "Der Spiegel")))
-       (Ident (Identifier "smallcaps")))
-, SoftBreak
-, Text "Die"
-, Space
-, Text "Zeitung"
-, Space
-, Text "Der"
-, Space
-, Text "Spiegel"
-, Space
-, Text "existiert"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-], 
-                      font: "Roboto"), 
-                 text(body: [
-Die Zeitung ], 
-                      font: "Roboto"), 
-                 smallcaps(body: [Der Spiegel]), 
-                 text(body: [ existiert.], 
-                      font: "Roboto"), 
-                 parbreak() })
diff --git a/test/out/compiler/show-text-01.out b/test/out/compiler/show-text-01.out
deleted file mode 100644
--- a/test/out/compiler/show-text-01.out
+++ /dev/null
@@ -1,156 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/show-text-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/show-text-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/show-text-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/show-text-01.typ"
-    ( line 3 , column 2 )
-    (Show
-       (Just (Literal (String "TeX")))
-       (Block
-          (Content
-             [ Text "T"
-             , Code
-                 "test/typ/compiler/show-text-01.typ"
-                 ( line 3 , column 17 )
-                 (FuncCall
-                    (Ident (Identifier "h"))
-                    [ NormalArg (Negated (Literal (Numeric 0.145 Em))) ])
-             , Code
-                 "test/typ/compiler/show-text-01.typ"
-                 ( line 3 , column 29 )
-                 (FuncCall
-                    (Ident (Identifier "box"))
-                    [ NormalArg
-                        (FuncCall
-                           (Ident (Identifier "move"))
-                           [ KeyValArg (Identifier "dy") (Literal (Numeric 0.233 Em))
-                           , BlockArg [ Text "E" ]
-                           ])
-                    ])
-             , Code
-                 "test/typ/compiler/show-text-01.typ"
-                 ( line 3 , column 55 )
-                 (FuncCall
-                    (Ident (Identifier "h"))
-                    [ NormalArg (Negated (Literal (Numeric 0.135 Em))) ])
-             , Text "X"
-             ])))
-, SoftBreak
-, Code
-    "test/typ/compiler/show-text-01.typ"
-    ( line 4 , column 2 )
-    (Show
-       (Just
-          (FuncCall
-             (Ident (Identifier "regex"))
-             [ NormalArg (Literal (String "(Lua)?(La)?TeX")) ]))
-       (FuncExpr
-          [ NormalParam (Identifier "name") ]
-          (FuncCall
-             (Ident (Identifier "box"))
-             [ NormalArg
-                 (FuncCall
-                    (Ident (Identifier "text"))
-                    [ KeyValArg
-                        (Identifier "font") (Literal (String "New Computer Modern"))
-                    , BlockArg
-                        [ Code
-                            "test/typ/compiler/show-text-01.typ"
-                            ( line 4 , column 79 )
-                            (Ident (Identifier "name"))
-                        ]
-                    ])
-             ])))
-, ParBreak
-, Text "TeX,"
-, Space
-, Text "LaTeX,"
-, Space
-, Text "LuaTeX"
-, Space
-, Text "and"
-, Space
-, Text "LuaLaTeX!"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 box(body: text(body: { text(body: [T]), 
-                                        h(amount: -0.145em), 
-                                        box(body: move(body: text(body: [E]), 
-                                                       dy: 0.233em)), 
-                                        h(amount: -0.135em), 
-                                        text(body: [X]) }, 
-                                font: "New Computer Modern")), 
-                 text(body: [, ]), 
-                 box(body: text(body: { text(body: [La]), 
-                                        text(body: [T]), 
-                                        h(amount: -0.145em), 
-                                        box(body: move(body: text(body: [E]), 
-                                                       dy: 0.233em)), 
-                                        h(amount: -0.135em), 
-                                        text(body: [X]) }, 
-                                font: "New Computer Modern")), 
-                 text(body: [, ]), 
-                 box(body: text(body: { text(body: [Lua]), 
-                                        text(body: [T]), 
-                                        h(amount: -0.145em), 
-                                        box(body: move(body: text(body: [E]), 
-                                                       dy: 0.233em)), 
-                                        h(amount: -0.135em), 
-                                        text(body: [X]) }, 
-                                font: "New Computer Modern")), 
-                 text(body: [ and ]), 
-                 box(body: text(body: { text(body: [LuaLa]), 
-                                        text(body: [T]), 
-                                        h(amount: -0.145em), 
-                                        box(body: move(body: text(body: [E]), 
-                                                       dy: 0.233em)), 
-                                        h(amount: -0.135em), 
-                                        text(body: [X]) }, 
-                                font: "New Computer Modern")), 
-                 text(body: [!]), 
-                 parbreak() })
diff --git a/test/out/compiler/show-text-02.out b/test/out/compiler/show-text-02.out
deleted file mode 100644
--- a/test/out/compiler/show-text-02.out
+++ /dev/null
@@ -1,71 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/show-text-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/show-text-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/show-text-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/show-text-02.typ"
-    ( line 3 , column 2 )
-    (Show
-       (Just (Literal (String "A"))) (Block (Content [ Text "BB" ])))
-, SoftBreak
-, Code
-    "test/typ/compiler/show-text-02.typ"
-    ( line 4 , column 2 )
-    (Show
-       (Just (Literal (String "B"))) (Block (Content [ Text "CC" ])))
-, SoftBreak
-, Text "AA"
-, Space
-, Text "("
-, Text "8)"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [BB]), 
-                 text(body: [BB]), 
-                 text(body: [ (8)]), 
-                 parbreak() })
diff --git a/test/out/compiler/show-text-03.out b/test/out/compiler/show-text-03.out
deleted file mode 100644
--- a/test/out/compiler/show-text-03.out
+++ /dev/null
@@ -1,80 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/show-text-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/show-text-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/show-text-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/show-text-03.typ"
-    ( line 3 , column 2 )
-    (Show
-       (Just
-          (FuncCall
-             (Ident (Identifier "regex"))
-             [ NormalArg (Literal (String "(?i)\\bworld\\b")) ]))
-       (Block (Content [ Text "\127757" ])))
-, ParBreak
-, Text "Treeworld,"
-, Space
-, Text "the"
-, Space
-, Text "World"
-, Space
-, Text "of"
-, Space
-, Text "worlds,"
-, Space
-, Text "is"
-, Space
-, Text "a"
-, Space
-, Text "world"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [Treeworld, the ]), 
-                 text(body: [🌍]), 
-                 text(body: [ of worlds, is a ]), 
-                 text(body: [🌍]), 
-                 text(body: [.]), 
-                 parbreak() })
diff --git a/test/out/compiler/show-text-04.out b/test/out/compiler/show-text-04.out
deleted file mode 100644
--- a/test/out/compiler/show-text-04.out
+++ /dev/null
@@ -1,157 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/show-text-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/show-text-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/show-text-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/show-text-04.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "par"))
-       [ KeyValArg (Identifier "justify") (Literal (Boolean True)) ])
-, SoftBreak
-, Code
-    "test/typ/compiler/show-text-04.typ"
-    ( line 4 , column 2 )
-    (Show
-       (Just
-          (FuncCall
-             (Ident (Identifier "regex"))
-             [ NormalArg (Literal (String "\\S")) ]))
-       (FuncExpr
-          [ NormalParam (Identifier "letter") ]
-          (FuncCall
-             (Ident (Identifier "box"))
-             [ KeyValArg (Identifier "stroke") (Literal (Numeric 1.0 Pt))
-             , KeyValArg (Identifier "inset") (Literal (Numeric 2.0 Pt))
-             , NormalArg
-                 (FuncCall
-                    (Ident (Identifier "upper"))
-                    [ NormalArg (Ident (Identifier "letter")) ])
-             ])))
-, SoftBreak
-, Code
-    "test/typ/compiler/show-text-04.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 5)) ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 box(body: upper(text: [L]), 
-                     inset: 2.0pt, 
-                     stroke: 1.0pt), 
-                 box(body: upper(text: [o]), 
-                     inset: 2.0pt, 
-                     stroke: 1.0pt), 
-                 box(body: upper(text: [r]), 
-                     inset: 2.0pt, 
-                     stroke: 1.0pt), 
-                 box(body: upper(text: [e]), 
-                     inset: 2.0pt, 
-                     stroke: 1.0pt), 
-                 box(body: upper(text: [m]), 
-                     inset: 2.0pt, 
-                     stroke: 1.0pt), 
-                 text(body: [ ]), 
-                 box(body: upper(text: [i]), 
-                     inset: 2.0pt, 
-                     stroke: 1.0pt), 
-                 box(body: upper(text: [p]), 
-                     inset: 2.0pt, 
-                     stroke: 1.0pt), 
-                 box(body: upper(text: [s]), 
-                     inset: 2.0pt, 
-                     stroke: 1.0pt), 
-                 box(body: upper(text: [u]), 
-                     inset: 2.0pt, 
-                     stroke: 1.0pt), 
-                 box(body: upper(text: [m]), 
-                     inset: 2.0pt, 
-                     stroke: 1.0pt), 
-                 text(body: [ ]), 
-                 box(body: upper(text: [d]), 
-                     inset: 2.0pt, 
-                     stroke: 1.0pt), 
-                 box(body: upper(text: [o]), 
-                     inset: 2.0pt, 
-                     stroke: 1.0pt), 
-                 box(body: upper(text: [l]), 
-                     inset: 2.0pt, 
-                     stroke: 1.0pt), 
-                 box(body: upper(text: [o]), 
-                     inset: 2.0pt, 
-                     stroke: 1.0pt), 
-                 box(body: upper(text: [r]), 
-                     inset: 2.0pt, 
-                     stroke: 1.0pt), 
-                 text(body: [ ]), 
-                 box(body: upper(text: [s]), 
-                     inset: 2.0pt, 
-                     stroke: 1.0pt), 
-                 box(body: upper(text: [i]), 
-                     inset: 2.0pt, 
-                     stroke: 1.0pt), 
-                 box(body: upper(text: [t]), 
-                     inset: 2.0pt, 
-                     stroke: 1.0pt), 
-                 text(body: [ ]), 
-                 box(body: upper(text: [a]), 
-                     inset: 2.0pt, 
-                     stroke: 1.0pt), 
-                 box(body: upper(text: [m]), 
-                     inset: 2.0pt, 
-                     stroke: 1.0pt), 
-                 box(body: upper(text: [e]), 
-                     inset: 2.0pt, 
-                     stroke: 1.0pt), 
-                 box(body: upper(text: [t]), 
-                     inset: 2.0pt, 
-                     stroke: 1.0pt), 
-                 box(body: upper(text: [,]), 
-                     inset: 2.0pt, 
-                     stroke: 1.0pt), 
-                 parbreak() })
diff --git a/test/out/compiler/show-text-05.out b/test/out/compiler/show-text-05.out
deleted file mode 100644
--- a/test/out/compiler/show-text-05.out
+++ /dev/null
@@ -1,104 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/show-text-05.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/show-text-05.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/show-text-05.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/show-text-05.typ"
-    ( line 3 , column 2 )
-    (Show
-       (Just
-          (FuncCall
-             (Ident (Identifier "regex"))
-             [ NormalArg (Literal (String "(?i)rust")) ]))
-       (FuncExpr
-          [ NormalParam (Identifier "it") ]
-          (Block
-             (Content
-                [ Code
-                    "test/typ/compiler/show-text-05.typ"
-                    ( line 3 , column 34 )
-                    (Ident (Identifier "it"))
-                , Space
-                , Text "("
-                , Text "\128640)"
-                ]))))
-, SoftBreak
-, Text "Rust"
-, Space
-, Text "is"
-, Space
-, Text "memory"
-, Text "-"
-, Text "safe"
-, Space
-, Text "and"
-, Space
-, Text "blazingly"
-, Space
-, Text "fast"
-, Text "."
-, Space
-, Text "Let"
-, Quote '\''
-, Text "s"
-, Space
-, Text "rewrite"
-, Space
-, Text "everything"
-, Space
-, Text "in"
-, Space
-, Text "rust"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [Rust]), 
-                 text(body: [ (🚀)]), 
-                 text(body: [ is memory-safe and blazingly fast. Let’s rewrite everything in ]), 
-                 text(body: [rust]), 
-                 text(body: [ (🚀)]), 
-                 text(body: [.]), 
-                 parbreak() })
diff --git a/test/out/compiler/show-text-06.out b/test/out/compiler/show-text-06.out
deleted file mode 100644
--- a/test/out/compiler/show-text-06.out
+++ /dev/null
@@ -1,79 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/show-text-06.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/show-text-06.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/show-text-06.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/show-text-06.typ"
-    ( line 3 , column 2 )
-    (Show
-       (Just (Literal (String "hello")))
-       (FuncExpr
-          [ NormalParam (Identifier "it") ]
-          (FuncCall
-             (FieldAccess
-                (Ident (Identifier "join"))
-                (FuncCall
-                   (FieldAccess
-                      (Ident (Identifier "map"))
-                      (FuncCall
-                         (FieldAccess
-                            (Ident (Identifier "split"))
-                            (FieldAccess
-                               (Ident (Identifier "text")) (Ident (Identifier "it"))))
-                         [ NormalArg (Literal (String "")) ]))
-                   [ NormalArg (Ident (Identifier "upper")) ]))
-             [ NormalArg (Literal (String "|")) ])))
-, SoftBreak
-, Text "Oh,"
-, Space
-, Text "hello"
-, Space
-, Text "there!"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-Oh, ]), 
-                 text(body: [|H|E|L|L|O|]), 
-                 text(body: [ there!]), 
-                 parbreak() })
diff --git a/test/out/compiler/show-text-07.out b/test/out/compiler/show-text-07.out
deleted file mode 100644
--- a/test/out/compiler/show-text-07.out
+++ /dev/null
@@ -1,85 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/show-text-07.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/show-text-07.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/show-text-07.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/show-text-07.typ"
-    ( line 3 , column 2 )
-    (Show
-       (Just (Ident (Identifier "list")))
-       (FuncExpr
-          [ NormalParam (Identifier "it") ]
-          (Block
-             (Content
-                [ SoftBreak
-                , Code
-                    "test/typ/compiler/show-text-07.typ"
-                    ( line 4 , column 4 )
-                    (Show
-                       (Just (Literal (String "World")))
-                       (Block (Content [ Text "\127758" ])))
-                , SoftBreak
-                , Code
-                    "test/typ/compiler/show-text-07.typ"
-                    ( line 5 , column 4 )
-                    (Ident (Identifier "it"))
-                , ParBreak
-                ]))))
-, ParBreak
-, Text "World"
-, SoftBreak
-, BulletListItem [ Text "World" , ParBreak ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [World
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 list(children: ({ text(body: { [], 
-                                                text(body: [🌎]), 
-                                                [] }), 
-                                   parbreak() })), 
-                 parbreak() })
diff --git a/test/out/compiler/show-text-08.out b/test/out/compiler/show-text-08.out
deleted file mode 100644
--- a/test/out/compiler/show-text-08.out
+++ /dev/null
@@ -1,72 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/show-text-08.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/show-text-08.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/show-text-08.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, SoftBreak
-, Code
-    "test/typ/compiler/show-text-08.typ"
-    ( line 4 , column 2 )
-    (Show
-       (Just (Literal (String "GRAPH")))
-       (FuncCall
-          (Ident (Identifier "image"))
-          [ NormalArg (Literal (String "/assets/files/graph.png")) ]))
-, ParBreak
-, Text "The"
-, Space
-, Text "GRAPH"
-, Space
-, Text "has"
-, Space
-, Text "nodes"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [The ]), 
-                 image(path: "/assets/files/graph.png"), 
-                 text(body: [ has nodes.]), 
-                 parbreak() })
diff --git a/test/out/compiler/spread-00.out b/test/out/compiler/spread-00.out
deleted file mode 100644
--- a/test/out/compiler/spread-00.out
+++ /dev/null
@@ -1,101 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/spread-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/spread-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/spread-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/spread-00.typ"
-    ( line 3 , column 2 )
-    (Block
-       (CodeBlock
-          [ LetFunc
-              (Identifier "f")
-              [ DefaultParam (Identifier "style") (Literal (String "normal"))
-              , DefaultParam (Identifier "weight") (Literal (String "regular"))
-              ]
-              (Block
-                 (CodeBlock
-                    [ Plus
-                        (Plus
-                           (Plus
-                              (Plus (Literal (String "(style: ")) (Ident (Identifier "style")))
-                              (Literal (String ", weight: ")))
-                           (Ident (Identifier "weight")))
-                        (Literal (String ")"))
-                    ]))
-          , LetFunc
-              (Identifier "myf")
-              [ SinkParam (Just (Identifier "args")) ]
-              (FuncCall
-                 (Ident (Identifier "f"))
-                 [ KeyValArg (Identifier "weight") (Literal (String "bold"))
-                 , SpreadArg (Ident (Identifier "args"))
-                 ])
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg (FuncCall (Ident (Identifier "myf")) [])
-              , NormalArg (Literal (String "(style: normal, weight: bold)"))
-              ]
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "myf"))
-                     [ KeyValArg (Identifier "weight") (Literal (String "black")) ])
-              , NormalArg (Literal (String "(style: normal, weight: black)"))
-              ]
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "myf"))
-                     [ KeyValArg (Identifier "style") (Literal (String "italic")) ])
-              , NormalArg (Literal (String "(style: italic, weight: bold)"))
-              ]
-          ]))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/spread-01.out b/test/out/compiler/spread-01.out
deleted file mode 100644
--- a/test/out/compiler/spread-01.out
+++ /dev/null
@@ -1,82 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/spread-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/spread-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/spread-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/spread-01.typ"
-    ( line 3 , column 2 )
-    (Block
-       (CodeBlock
-          [ LetFunc
-              (Identifier "f")
-              [ NormalParam (Identifier "b")
-              , DefaultParam (Identifier "c") (Literal (String "!"))
-              ]
-              (Plus (Ident (Identifier "b")) (Ident (Identifier "c")))
-          , LetFunc
-              (Identifier "g")
-              [ NormalParam (Identifier "a")
-              , SinkParam (Just (Identifier "sink"))
-              ]
-              (Plus
-                 (Ident (Identifier "a"))
-                 (FuncCall
-                    (Ident (Identifier "f"))
-                    [ SpreadArg (Ident (Identifier "sink")) ]))
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "g"))
-                     [ NormalArg (Literal (String "a"))
-                     , NormalArg (Literal (String "b"))
-                     , KeyValArg (Identifier "c") (Literal (String "c"))
-                     ])
-              , NormalArg (Literal (String "abc"))
-              ]
-          ]))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/spread-02.out b/test/out/compiler/spread-02.out
deleted file mode 100644
--- a/test/out/compiler/spread-02.out
+++ /dev/null
@@ -1,84 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/spread-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/spread-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/spread-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/spread-02.typ"
-    ( line 3 , column 2 )
-    (Block
-       (CodeBlock
-          [ LetFunc
-              (Identifier "save")
-              [ SinkParam (Just (Identifier "args")) ]
-              (Block
-                 (CodeBlock
-                    [ FuncCall
-                        (Ident (Identifier "test"))
-                        [ NormalArg
-                            (FuncCall
-                               (Ident (Identifier "type"))
-                               [ NormalArg (Ident (Identifier "args")) ])
-                        , NormalArg (Literal (String "arguments"))
-                        ]
-                    , FuncCall
-                        (Ident (Identifier "test"))
-                        [ NormalArg
-                            (FuncCall
-                               (Ident (Identifier "repr"))
-                               [ NormalArg (Ident (Identifier "args")) ])
-                        , NormalArg (Literal (String "(three: true, 1, 2)"))
-                        ]
-                    ]))
-          , FuncCall
-              (Ident (Identifier "save"))
-              [ NormalArg (Literal (Int 1))
-              , NormalArg (Literal (Int 2))
-              , KeyValArg (Identifier "three") (Literal (Boolean True))
-              ]
-          ]))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/spread-03.out b/test/out/compiler/spread-03.out
deleted file mode 100644
--- a/test/out/compiler/spread-03.out
+++ /dev/null
@@ -1,131 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/spread-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/spread-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/spread-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/spread-03.typ"
-    ( line 3 , column 2 )
-    (Block
-       (CodeBlock
-          [ Let
-              (BasicBind (Just (Identifier "more")))
-              (Array
-                 [ Reg (Literal (Int 3))
-                 , Reg (Negated (Literal (Int 3)))
-                 , Reg (Literal (Int 6))
-                 , Reg (Literal (Int 10))
-                 ])
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg
-                  (FuncCall
-                     (FieldAccess
-                        (Ident (Identifier "min")) (Ident (Identifier "calc")))
-                     [ NormalArg (Literal (Int 1))
-                     , NormalArg (Literal (Int 2))
-                     , SpreadArg (Ident (Identifier "more"))
-                     ])
-              , NormalArg (Negated (Literal (Int 3)))
-              ]
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg
-                  (FuncCall
-                     (FieldAccess
-                        (Ident (Identifier "max")) (Ident (Identifier "calc")))
-                     [ SpreadArg (Ident (Identifier "more"))
-                     , NormalArg (Literal (Int 9))
-                     ])
-              , NormalArg (Literal (Int 10))
-              ]
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg
-                  (FuncCall
-                     (FieldAccess
-                        (Ident (Identifier "max")) (Ident (Identifier "calc")))
-                     [ SpreadArg (Ident (Identifier "more"))
-                     , NormalArg (Literal (Int 11))
-                     ])
-              , NormalArg (Literal (Int 11))
-              ]
-          ]))
-, ParBreak
-, Code
-    "test/typ/compiler/spread-03.typ"
-    ( line 10 , column 2 )
-    (Block
-       (CodeBlock
-          [ Let
-              (BasicBind (Just (Identifier "more")))
-              (Dict
-                 [ Reg ( Ident (Identifier "c") , Literal (Int 3) )
-                 , Reg ( Ident (Identifier "d") , Literal (Int 4) )
-                 ])
-          , LetFunc
-              (Identifier "tostr")
-              [ SinkParam (Just (Identifier "args")) ]
-              (FuncCall
-                 (Ident (Identifier "repr"))
-                 [ NormalArg (Ident (Identifier "args")) ])
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "tostr"))
-                     [ KeyValArg (Identifier "a") (Literal (Int 1))
-                     , SpreadArg (Ident (Identifier "more"))
-                     , KeyValArg (Identifier "b") (Literal (Int 2))
-                     ])
-              , NormalArg (Literal (String "(a: 1, c: 3, d: 4, b: 2)"))
-              ]
-          ]))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 parbreak(), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/spread-04.out b/test/out/compiler/spread-04.out
deleted file mode 100644
--- a/test/out/compiler/spread-04.out
+++ /dev/null
@@ -1,84 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/spread-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/spread-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/spread-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/spread-04.typ"
-    ( line 3 , column 2 )
-    (LetFunc (Identifier "f") [] (Literal None))
-, SoftBreak
-, Code
-    "test/typ/compiler/spread-04.typ"
-    ( line 4 , column 2 )
-    (FuncCall (Ident (Identifier "f")) [ SpreadArg (Literal None) ])
-, SoftBreak
-, Code
-    "test/typ/compiler/spread-04.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "f"))
-       [ SpreadArg
-           (If [ ( Literal (Boolean False) , Block (CodeBlock []) ) ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/spread-04.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "f"))
-       [ SpreadArg
-           (For
-              (BasicBind (Just (Identifier "x")))
-              (Array [])
-              (Block (Content [])))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak() })
diff --git a/test/out/compiler/spread-05.out b/test/out/compiler/spread-05.out
deleted file mode 100644
--- a/test/out/compiler/spread-05.out
+++ /dev/null
@@ -1,73 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/spread-05.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/spread-05.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/spread-05.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/spread-05.typ"
-    ( line 3 , column 2 )
-    (LetFunc
-       (Identifier "f")
-       [ SinkParam Nothing , NormalParam (Identifier "a") ]
-       (Ident (Identifier "a")))
-, SoftBreak
-, Code
-    "test/typ/compiler/spread-05.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "f"))
-              [ NormalArg (Literal (Int 1))
-              , NormalArg (Literal (Int 2))
-              , NormalArg (Literal (Int 3))
-              ])
-       , NormalArg (Literal (Int 3))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/spread-06.out b/test/out/compiler/spread-06.out
deleted file mode 100644
--- a/test/out/compiler/spread-06.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/spread-07.out b/test/out/compiler/spread-07.out
deleted file mode 100644
--- a/test/out/compiler/spread-07.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/spread-08.out b/test/out/compiler/spread-08.out
deleted file mode 100644
--- a/test/out/compiler/spread-08.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/spread-09.out b/test/out/compiler/spread-09.out
deleted file mode 100644
--- a/test/out/compiler/spread-09.out
+++ /dev/null
@@ -1,127 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/spread-09.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/spread-09.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/spread-09.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/spread-09.typ"
-    ( line 3 , column 2 )
-    (Block
-       (CodeBlock
-          [ Let
-              (BasicBind (Just (Identifier "l")))
-              (Array
-                 [ Reg (Literal (Int 1))
-                 , Reg (Literal (Int 2))
-                 , Reg (Literal (Int 3))
-                 ])
-          , Let
-              (BasicBind (Just (Identifier "r")))
-              (Array
-                 [ Reg (Literal (Int 5))
-                 , Reg (Literal (Int 6))
-                 , Reg (Literal (Int 7))
-                 ])
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg
-                  (Array
-                     [ Spr (Ident (Identifier "l"))
-                     , Reg (Literal (Int 4))
-                     , Spr (Ident (Identifier "r"))
-                     ])
-              , NormalArg
-                  (FuncCall
-                     (Ident (Identifier "range"))
-                     [ NormalArg (Literal (Int 1)) , NormalArg (Literal (Int 8)) ])
-              ]
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg (Dict [ Spr (Literal None) ]) , NormalArg (Array []) ]
-          ]))
-, ParBreak
-, Code
-    "test/typ/compiler/spread-09.typ"
-    ( line 10 , column 2 )
-    (Block
-       (CodeBlock
-          [ Let
-              (BasicBind (Just (Identifier "x")))
-              (Dict [ Reg ( Ident (Identifier "a") , Literal (Int 1) ) ])
-          , Let
-              (BasicBind (Just (Identifier "y")))
-              (Dict [ Reg ( Ident (Identifier "b") , Literal (Int 2) ) ])
-          , Let
-              (BasicBind (Just (Identifier "z")))
-              (Dict [ Reg ( Ident (Identifier "a") , Literal (Int 3) ) ])
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg
-                  (Dict
-                     [ Spr (Ident (Identifier "x"))
-                     , Spr (Ident (Identifier "y"))
-                     , Spr (Ident (Identifier "z"))
-                     ])
-              , NormalArg
-                  (Dict
-                     [ Reg ( Ident (Identifier "a") , Literal (Int 3) )
-                     , Reg ( Ident (Identifier "b") , Literal (Int 2) )
-                     ])
-              ]
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg
-                  (Dict
-                     [ Spr (Dict [ Reg ( Ident (Identifier "a") , Literal (Int 1) ) ])
-                     , Reg ( Ident (Identifier "b") , Literal (Int 2) )
-                     ])
-              , NormalArg
-                  (Dict
-                     [ Reg ( Ident (Identifier "a") , Literal (Int 1) )
-                     , Reg ( Ident (Identifier "b") , Literal (Int 2) )
-                     ])
-              ]
-          ]))
-, ParBreak
-]
-"test/typ/compiler/spread-09.typ" (line 3, column 2):
-unexpected end of input
-expecting end of input
-Could not spread TNone into dictionary
diff --git a/test/out/compiler/spread-10.out b/test/out/compiler/spread-10.out
deleted file mode 100644
--- a/test/out/compiler/spread-10.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/spread-11.out b/test/out/compiler/spread-11.out
deleted file mode 100644
--- a/test/out/compiler/spread-11.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/spread-12.out b/test/out/compiler/spread-12.out
deleted file mode 100644
--- a/test/out/compiler/spread-12.out
+++ /dev/null
@@ -1,106 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/spread-12.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/spread-12.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/spread-12.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/spread-12.typ"
-    ( line 3 , column 2 )
-    (Block
-       (CodeBlock
-          [ LetFunc
-              (Identifier "f")
-              [ SinkParam (Just (Identifier "a"))
-              , NormalParam (Identifier "b")
-              ]
-              (Array
-                 [ Reg (Ident (Identifier "a")) , Reg (Ident (Identifier "b")) ])
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "repr"))
-                     [ NormalArg
-                         (FuncCall (Ident (Identifier "f")) [ NormalArg (Literal (Int 1)) ])
-                     ])
-              , NormalArg (Literal (String "((), 1)"))
-              ]
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "repr"))
-                     [ NormalArg
-                         (FuncCall
-                            (Ident (Identifier "f"))
-                            [ NormalArg (Literal (Int 1))
-                            , NormalArg (Literal (Int 2))
-                            , NormalArg (Literal (Int 3))
-                            ])
-                     ])
-              , NormalArg (Literal (String "((1, 2), 3)"))
-              ]
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "repr"))
-                     [ NormalArg
-                         (FuncCall
-                            (Ident (Identifier "f"))
-                            [ NormalArg (Literal (Int 1))
-                            , NormalArg (Literal (Int 2))
-                            , NormalArg (Literal (Int 3))
-                            , NormalArg (Literal (Int 4))
-                            , NormalArg (Literal (Int 5))
-                            ])
-                     ])
-              , NormalArg (Literal (String "((1, 2, 3, 4), 5)"))
-              ]
-          ]))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/spread-13.out b/test/out/compiler/spread-13.out
deleted file mode 100644
--- a/test/out/compiler/spread-13.out
+++ /dev/null
@@ -1,96 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/spread-13.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/spread-13.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/spread-13.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/spread-13.typ"
-    ( line 3 , column 2 )
-    (Block
-       (CodeBlock
-          [ LetFunc
-              (Identifier "f")
-              [ NormalParam (Identifier "a")
-              , SinkParam (Just (Identifier "b"))
-              , NormalParam (Identifier "c")
-              ]
-              (Array
-                 [ Reg (Ident (Identifier "a"))
-                 , Reg (Ident (Identifier "b"))
-                 , Reg (Ident (Identifier "c"))
-                 ])
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "repr"))
-                     [ NormalArg
-                         (FuncCall
-                            (Ident (Identifier "f"))
-                            [ NormalArg (Literal (Int 1)) , NormalArg (Literal (Int 2)) ])
-                     ])
-              , NormalArg (Literal (String "(1, (), 2)"))
-              ]
-          , FuncCall
-              (Ident (Identifier "test"))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "repr"))
-                     [ NormalArg
-                         (FuncCall
-                            (Ident (Identifier "f"))
-                            [ NormalArg (Literal (Int 1))
-                            , NormalArg (Literal (Int 2))
-                            , NormalArg (Literal (Int 3))
-                            , NormalArg (Literal (Int 4))
-                            , NormalArg (Literal (Int 5))
-                            ])
-                     ])
-              , NormalArg (Literal (String "(1, (2, 3, 4), 5)"))
-              ]
-          ]))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/spread-14.out b/test/out/compiler/spread-14.out
deleted file mode 100644
--- a/test/out/compiler/spread-14.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/string-00.out b/test/out/compiler/string-00.out
deleted file mode 100644
--- a/test/out/compiler/string-00.out
+++ /dev/null
@@ -1,61 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/string-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/string-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/string-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/string-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "len")) (Literal (String "Hello World!")))
-              [])
-       , NormalArg (Literal (Int 12))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/string-01.out b/test/out/compiler/string-01.out
deleted file mode 100644
--- a/test/out/compiler/string-01.out
+++ /dev/null
@@ -1,123 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/string-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/string-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/string-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/string-01.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "first")) (Literal (String "Hello")))
-              [])
-       , NormalArg (Literal (String "H"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-01.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "last")) (Literal (String "Hello")))
-              [])
-       , NormalArg (Literal (String "o"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-01.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "first"))
-                 (Literal
-                    (String
-                       "\127987\65039\8205\127752A\127987\65039\8205\9895\65039")))
-              [])
-       , NormalArg (Literal (String "\127987\65039\8205\127752"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-01.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "last"))
-                 (Literal
-                    (String
-                       "\127987\65039\8205\127752A\127987\65039\8205\9895\65039")))
-              [])
-       , NormalArg (Literal (String "\127987\65039\8205\9895\65039"))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [❌(]), 
-                 text(body: ["🏳"]), 
-                 text(body: [ /= ]), 
-                 text(body: ["🏳️‍🌈"]), 
-                 text(body: [)]), 
-                 text(body: [
-]), 
-                 text(body: [❌(]), 
-                 text(body: ["️"]), 
-                 text(body: [ /= ]), 
-                 text(body: ["🏳️‍⚧️"]), 
-                 text(body: [)]), 
-                 parbreak() })
diff --git a/test/out/compiler/string-02.out b/test/out/compiler/string-02.out
deleted file mode 100644
--- a/test/out/compiler/string-02.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/string-03.out b/test/out/compiler/string-03.out
deleted file mode 100644
--- a/test/out/compiler/string-03.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/string-04.out b/test/out/compiler/string-04.out
deleted file mode 100644
--- a/test/out/compiler/string-04.out
+++ /dev/null
@@ -1,126 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/string-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/string-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/string-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/string-04.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess (Ident (Identifier "at")) (Literal (String "Hello")))
-              [ NormalArg (Literal (Int 1)) ])
-       , NormalArg (Literal (String "e"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-04.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess (Ident (Identifier "at")) (Literal (String "Hello")))
-              [ NormalArg (Literal (Int 4)) ])
-       , NormalArg (Literal (String "o"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-04.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess (Ident (Identifier "at")) (Literal (String "Hello")))
-              [ NormalArg (Negated (Literal (Int 1))) ])
-       , NormalArg (Literal (String "o"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-04.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess (Ident (Identifier "at")) (Literal (String "Hello")))
-              [ NormalArg (Negated (Literal (Int 2))) ])
-       , NormalArg (Literal (String "l"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-04.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "at"))
-                 (Literal (String "Hey: \127987\65039\8205\127752 there!")))
-              [ NormalArg (Literal (Int 5)) ])
-       , NormalArg (Literal (String "\127987\65039\8205\127752"))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [❌(]), 
-                 text(body: ["🏳"]), 
-                 text(body: [ /= ]), 
-                 text(body: ["🏳️‍🌈"]), 
-                 text(body: [)]), 
-                 parbreak() })
diff --git a/test/out/compiler/string-05.out b/test/out/compiler/string-05.out
deleted file mode 100644
--- a/test/out/compiler/string-05.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/string-06.out b/test/out/compiler/string-06.out
deleted file mode 100644
--- a/test/out/compiler/string-06.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/string-07.out b/test/out/compiler/string-07.out
deleted file mode 100644
--- a/test/out/compiler/string-07.out
+++ /dev/null
@@ -1,116 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/string-07.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/string-07.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/string-07.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/string-07.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess (Ident (Identifier "slice")) (Literal (String "abc")))
-              [ NormalArg (Literal (Int 1)) , NormalArg (Literal (Int 2)) ])
-       , NormalArg (Literal (String "b"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-07.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "slice")) (Literal (String "abc\127969def")))
-              [ NormalArg (Literal (Int 2)) , NormalArg (Literal (Int 7)) ])
-       , NormalArg (Literal (String "c\127969"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-07.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "slice")) (Literal (String "abc\127969def")))
-              [ NormalArg (Literal (Int 2))
-              , NormalArg (Negated (Literal (Int 2)))
-              ])
-       , NormalArg (Literal (String "c\127969d"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-07.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "slice")) (Literal (String "abc\127969def")))
-              [ NormalArg (Negated (Literal (Int 3)))
-              , NormalArg (Negated (Literal (Int 1)))
-              ])
-       , NormalArg (Literal (String "de"))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [❌(]), 
-                 text(body: ["c🏡def"]), 
-                 text(body: [ /= ]), 
-                 text(body: ["c🏡"]), 
-                 text(body: [)]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/string-08.out b/test/out/compiler/string-08.out
deleted file mode 100644
--- a/test/out/compiler/string-08.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/string-09.out b/test/out/compiler/string-09.out
deleted file mode 100644
--- a/test/out/compiler/string-09.out
+++ /dev/null
@@ -1,136 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/string-09.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/string-09.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/string-09.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/string-09.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "clusters")) (Literal (String "abc")))
-              [])
-       , NormalArg
-           (Array
-              [ Reg (Literal (String "a"))
-              , Reg (Literal (String "b"))
-              , Reg (Literal (String "c"))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-09.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "clusters")) (Literal (String "abc")))
-              [])
-       , NormalArg
-           (Array
-              [ Reg (Literal (String "a"))
-              , Reg (Literal (String "b"))
-              , Reg (Literal (String "c"))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-09.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "clusters"))
-                 (Literal (String "\127987\65039\8205\127752!")))
-              [])
-       , NormalArg
-           (Array
-              [ Reg (Literal (String "\127987\65039\8205\127752"))
-              , Reg (Literal (String "!"))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-09.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "codepoints"))
-                 (Literal (String "\127987\65039\8205\127752!")))
-              [])
-       , NormalArg
-           (Array
-              [ Reg (Literal (String "\127987"))
-              , Reg (Literal (String "\65039"))
-              , Reg (Literal (String "\8205"))
-              , Reg (Literal (String "\127752"))
-              , Reg (Literal (String "!"))
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [❌(]), 
-                 text(body: [("🏳", "️", "‍", "🌈", "!")]), 
-                 text(body: [ /= ]), 
-                 text(body: [("🏳️‍🌈", "!")]), 
-                 text(body: [)]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/string-10.out b/test/out/compiler/string-10.out
deleted file mode 100644
--- a/test/out/compiler/string-10.out
+++ /dev/null
@@ -1,181 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/string-10.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/string-10.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/string-10.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/string-10.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "contains")) (Literal (String "abc")))
-              [ NormalArg (Literal (String "b")) ])
-       , NormalArg (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-10.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (InCollection (Literal (String "b")) (Literal (String "abc")))
-       , NormalArg (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-10.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "contains")) (Literal (String "1234f")))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "regex"))
-                     [ NormalArg (Literal (String "\\d")) ])
-              ])
-       , NormalArg (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-10.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (InCollection
-              (FuncCall
-                 (Ident (Identifier "regex"))
-                 [ NormalArg (Literal (String "\\d")) ])
-              (Literal (String "1234f")))
-       , NormalArg (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-10.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "contains")) (Literal (String "abc")))
-              [ NormalArg (Literal (String "d")) ])
-       , NormalArg (Literal (Boolean False))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-10.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (InCollection
-              (Literal (String "1234g")) (Literal (String "1234f")))
-       , NormalArg (Literal (Boolean False))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-10.typ"
-    ( line 9 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "contains")) (Literal (String "abc")))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "regex"))
-                     [ NormalArg (Literal (String "^[abc]$")) ])
-              ])
-       , NormalArg (Literal (Boolean False))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-10.typ"
-    ( line 10 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "contains")) (Literal (String "abc")))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "regex"))
-                     [ NormalArg (Literal (String "^[abc]+$")) ])
-              ])
-       , NormalArg (Literal (Boolean True))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/string-11.out b/test/out/compiler/string-11.out
deleted file mode 100644
--- a/test/out/compiler/string-11.out
+++ /dev/null
@@ -1,173 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/string-11.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/string-11.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/string-11.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/string-11.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "starts-with")) (Literal (String "Typst")))
-              [ NormalArg (Literal (String "Ty")) ])
-       , NormalArg (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-11.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "starts-with")) (Literal (String "Typst")))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "regex"))
-                     [ NormalArg (Literal (String "[Tt]ys")) ])
-              ])
-       , NormalArg (Literal (Boolean False))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-11.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "starts-with")) (Literal (String "Typst")))
-              [ NormalArg (Literal (String "st")) ])
-       , NormalArg (Literal (Boolean False))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-11.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "ends-with")) (Literal (String "Typst")))
-              [ NormalArg (Literal (String "st")) ])
-       , NormalArg (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-11.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "ends-with")) (Literal (String "Typst")))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "regex"))
-                     [ NormalArg (Literal (String "\\d*")) ])
-              ])
-       , NormalArg (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-11.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "ends-with")) (Literal (String "Typst")))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "regex"))
-                     [ NormalArg (Literal (String "\\d+")) ])
-              ])
-       , NormalArg (Literal (Boolean False))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-11.typ"
-    ( line 9 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "ends-with")) (Literal (String "Typ12")))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "regex"))
-                     [ NormalArg (Literal (String "\\d+")) ])
-              ])
-       , NormalArg (Literal (Boolean True))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/string-12.out b/test/out/compiler/string-12.out
deleted file mode 100644
--- a/test/out/compiler/string-12.out
+++ /dev/null
@@ -1,121 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/string-12.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/string-12.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/string-12.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/string-12.typ"
-    ( line 3 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "date")))
-       (FuncCall
-          (Ident (Identifier "regex"))
-          [ NormalArg (Literal (String "\\d{2}:\\d{2}")) ]))
-, SoftBreak
-, Code
-    "test/typ/compiler/string-12.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "find")) (Literal (String "Hello World")))
-              [ NormalArg (Literal (String "World")) ])
-       , NormalArg (Literal (String "World"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-12.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "position")) (Literal (String "Hello World")))
-              [ NormalArg (Literal (String "World")) ])
-       , NormalArg (Literal (Int 6))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-12.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "find")) (Literal (String "It's 12:13 now")))
-              [ NormalArg (Ident (Identifier "date")) ])
-       , NormalArg (Literal (String "12:13"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-12.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "position"))
-                 (Literal (String "It's 12:13 now")))
-              [ NormalArg (Ident (Identifier "date")) ])
-       , NormalArg (Literal (Int 5))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/string-13.out b/test/out/compiler/string-13.out
deleted file mode 100644
--- a/test/out/compiler/string-13.out
+++ /dev/null
@@ -1,255 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/string-13.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/string-13.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/string-13.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/string-13.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "match")) (Literal (String "Is there a")))
-              [ NormalArg (Literal (String "for this?")) ])
-       , NormalArg (Literal None)
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-13.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "match"))
-                 (Literal (String "The time of my life.")))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "regex"))
-                     [ NormalArg (Literal (String "[mit]+e")) ])
-              ])
-       , NormalArg
-           (Dict
-              [ Reg ( Ident (Identifier "start") , Literal (Int 4) )
-              , Reg ( Ident (Identifier "end") , Literal (Int 8) )
-              , Reg ( Ident (Identifier "text") , Literal (String "time") )
-              , Reg ( Ident (Identifier "captures") , Array [] )
-              ])
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/string-13.typ"
-    ( line 10 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "matches")) (Literal (String "Hello there")))
-              [ NormalArg (Literal (String "\\d")) ])
-       , NormalArg (Array [])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-13.typ"
-    ( line 11 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "matches")) (Literal (String "Day by Day.")))
-              [ NormalArg (Literal (String "Day")) ])
-       , NormalArg
-           (Array
-              [ Reg
-                  (Dict
-                     [ Reg ( Ident (Identifier "start") , Literal (Int 0) )
-                     , Reg ( Ident (Identifier "end") , Literal (Int 3) )
-                     , Reg ( Ident (Identifier "text") , Literal (String "Day") )
-                     , Reg ( Ident (Identifier "captures") , Array [] )
-                     ])
-              , Reg
-                  (Dict
-                     [ Reg ( Ident (Identifier "start") , Literal (Int 7) )
-                     , Reg ( Ident (Identifier "end") , Literal (Int 10) )
-                     , Reg ( Ident (Identifier "text") , Literal (String "Day") )
-                     , Reg ( Ident (Identifier "captures") , Array [] )
-                     ])
-              ])
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/string-13.typ"
-    ( line 17 , column 2 )
-    (LetFunc
-       (Identifier "timesum")
-       [ NormalParam (Identifier "text") ]
-       (Block
-          (CodeBlock
-             [ Let (BasicBind (Just (Identifier "time"))) (Literal (Int 0))
-             , For
-                 (BasicBind (Just (Identifier "match")))
-                 (FuncCall
-                    (FieldAccess
-                       (Ident (Identifier "matches")) (Ident (Identifier "text")))
-                    [ NormalArg
-                        (FuncCall
-                           (Ident (Identifier "regex"))
-                           [ NormalArg (Literal (String "(\\d+):(\\d+)")) ])
-                    ])
-                 (Block
-                    (CodeBlock
-                       [ Let
-                           (BasicBind (Just (Identifier "caps")))
-                           (FieldAccess
-                              (Ident (Identifier "captures")) (Ident (Identifier "match")))
-                       , Assign
-                           (Ident (Identifier "time"))
-                           (Plus
-                              (Ident (Identifier "time"))
-                              (Plus
-                                 (Times
-                                    (Literal (Int 60))
-                                    (FuncCall
-                                       (Ident (Identifier "int"))
-                                       [ NormalArg
-                                           (FuncCall
-                                              (FieldAccess
-                                                 (Ident (Identifier "at"))
-                                                 (Ident (Identifier "caps")))
-                                              [ NormalArg (Literal (Int 0)) ])
-                                       ]))
-                                 (FuncCall
-                                    (Ident (Identifier "int"))
-                                    [ NormalArg
-                                        (FuncCall
-                                           (FieldAccess
-                                              (Ident (Identifier "at")) (Ident (Identifier "caps")))
-                                           [ NormalArg (Literal (Int 1)) ])
-                                    ])))
-                       ]))
-             , Plus
-                 (Plus
-                    (FuncCall
-                       (Ident (Identifier "str"))
-                       [ NormalArg
-                           (FuncCall
-                              (Ident (Identifier "int"))
-                              [ NormalArg
-                                  (Divided (Ident (Identifier "time")) (Literal (Int 60)))
-                              ])
-                       ])
-                    (Literal (String ":")))
-                 (FuncCall
-                    (Ident (Identifier "str"))
-                    [ NormalArg
-                        (FuncCall
-                           (FieldAccess
-                              (Ident (Identifier "rem")) (Ident (Identifier "calc")))
-                           [ NormalArg (Ident (Identifier "time"))
-                           , NormalArg (Literal (Int 60))
-                           ])
-                    ])
-             ])))
-, ParBreak
-, Code
-    "test/typ/compiler/string-13.typ"
-    ( line 26 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "timesum")) [ NormalArg (Literal (String "")) ])
-       , NormalArg (Literal (String "0:0"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-13.typ"
-    ( line 27 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "timesum"))
-              [ NormalArg (Literal (String "2:70")) ])
-       , NormalArg (Literal (String "3:10"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-13.typ"
-    ( line 28 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "timesum"))
-              [ NormalArg (Literal (String "1:20, 2:10, 0:40")) ])
-       , NormalArg (Literal (String "4:10"))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak(), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak(), 
-                 parbreak(), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/string-14.out b/test/out/compiler/string-14.out
deleted file mode 100644
--- a/test/out/compiler/string-14.out
+++ /dev/null
@@ -1,198 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/string-14.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/string-14.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/string-14.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/string-14.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "replace")) (Literal (String "ABC")))
-              [ NormalArg (Literal (String ""))
-              , NormalArg (Literal (String "-"))
-              ])
-       , NormalArg (Literal (String "-A-B-C-"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-14.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "replace")) (Literal (String "Ok")))
-              [ NormalArg (Literal (String "Ok"))
-              , NormalArg (Literal (String "Nope"))
-              , KeyValArg (Identifier "count") (Literal (Int 0))
-              ])
-       , NormalArg (Literal (String "Ok"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-14.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "replace")) (Literal (String "to add?")))
-              [ NormalArg (Literal (String ""))
-              , NormalArg (Literal (String "How "))
-              , KeyValArg (Identifier "count") (Literal (Int 1))
-              ])
-       , NormalArg (Literal (String "How to add?"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-14.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "replace")) (Literal (String "AB C DEF GH J")))
-              [ NormalArg (Literal (String " "))
-              , NormalArg (Literal (String ","))
-              , KeyValArg (Identifier "count") (Literal (Int 2))
-              ])
-       , NormalArg (Literal (String "AB,C,DEF GH J"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-14.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "replace"))
-                 (FuncCall
-                    (FieldAccess
-                       (Ident (Identifier "replace"))
-                       (FuncCall
-                          (FieldAccess
-                             (Ident (Identifier "replace"))
-                             (FuncCall
-                                (FieldAccess
-                                   (Ident (Identifier "replace")) (Literal (String "Walcemo")))
-                                [ NormalArg (Literal (String "o"))
-                                , NormalArg (Literal (String "k"))
-                                ]))
-                          [ NormalArg (Literal (String "e"))
-                          , NormalArg (Literal (String "o"))
-                          ]))
-                    [ NormalArg (Literal (String "k"))
-                    , NormalArg (Literal (String "e"))
-                    ]))
-              [ NormalArg (Literal (String "a"))
-              , NormalArg (Literal (String "e"))
-              ])
-       , NormalArg (Literal (String "Welcome"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-14.typ"
-    ( line 14 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "replace")) (Literal (String "123")))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "regex"))
-                     [ NormalArg (Literal (String "\\d$")) ])
-              , NormalArg (Literal (String "_"))
-              ])
-       , NormalArg (Literal (String "12_"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-14.typ"
-    ( line 15 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "replace")) (Literal (String "123")))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "regex"))
-                     [ NormalArg (Literal (String "\\d{1,2}$")) ])
-              , NormalArg (Literal (String "__"))
-              ])
-       , NormalArg (Literal (String "1__"))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/string-15.out b/test/out/compiler/string-15.out
deleted file mode 100644
--- a/test/out/compiler/string-15.out
+++ /dev/null
@@ -1,476 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/string-15.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/string-15.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/string-15.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, SoftBreak
-, Code
-    "test/typ/compiler/string-15.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "replace")) (Literal (String "abc")))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "regex"))
-                     [ NormalArg (Literal (String "[a-z]")) ])
-              , NormalArg
-                  (FuncExpr
-                     [ NormalParam (Identifier "m") ]
-                     (Block
-                        (CodeBlock
-                           [ Plus
-                               (Plus
-                                  (FuncCall
-                                     (Ident (Identifier "str"))
-                                     [ NormalArg
-                                         (FieldAccess
-                                            (Ident (Identifier "start")) (Ident (Identifier "m")))
-                                     ])
-                                  (FieldAccess
-                                     (Ident (Identifier "text")) (Ident (Identifier "m"))))
-                               (FuncCall
-                                  (Ident (Identifier "str"))
-                                  [ NormalArg
-                                      (FieldAccess
-                                         (Ident (Identifier "end")) (Ident (Identifier "m")))
-                                  ])
-                           ])))
-              ])
-       , NormalArg (Literal (String "0a11b22c3"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-15.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "replace")) (Literal (String "abcd, efgh")))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "regex"))
-                     [ NormalArg (Literal (String "\\w+")) ])
-              , NormalArg
-                  (FuncExpr
-                     [ NormalParam (Identifier "m") ]
-                     (Block
-                        (CodeBlock
-                           [ FuncCall
-                               (Ident (Identifier "upper"))
-                               [ NormalArg
-                                   (FieldAccess
-                                      (Ident (Identifier "text")) (Ident (Identifier "m")))
-                               ]
-                           ])))
-              ])
-       , NormalArg (Literal (String "ABCD, EFGH"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-15.typ"
-    ( line 10 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "replace")) (Literal (String "hello : world")))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "regex"))
-                     [ NormalArg (Literal (String "^(.+)\\s*(:)\\s*(.+)$")) ])
-              , NormalArg
-                  (FuncExpr
-                     [ NormalParam (Identifier "m") ]
-                     (Block
-                        (CodeBlock
-                           [ Plus
-                               (Plus
-                                  (Plus
-                                     (FuncCall
-                                        (Ident (Identifier "upper"))
-                                        [ NormalArg
-                                            (FuncCall
-                                               (FieldAccess
-                                                  (Ident (Identifier "at"))
-                                                  (FieldAccess
-                                                     (Ident (Identifier "captures"))
-                                                     (Ident (Identifier "m"))))
-                                               [ NormalArg (Literal (Int 0)) ])
-                                        ])
-                                     (FuncCall
-                                        (FieldAccess
-                                           (Ident (Identifier "at"))
-                                           (FieldAccess
-                                              (Ident (Identifier "captures"))
-                                              (Ident (Identifier "m"))))
-                                        [ NormalArg (Literal (Int 1)) ]))
-                                  (Literal (String " ")))
-                               (FuncCall
-                                  (Ident (Identifier "upper"))
-                                  [ NormalArg
-                                      (FuncCall
-                                         (FieldAccess
-                                            (Ident (Identifier "at"))
-                                            (FieldAccess
-                                               (Ident (Identifier "captures"))
-                                               (Ident (Identifier "m"))))
-                                         [ NormalArg (Literal (Int 2)) ])
-                                  ])
-                           ])))
-              ])
-       , NormalArg (Literal (String "HELLO : WORLD"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-15.typ"
-    ( line 13 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "replace"))
-                 (Literal (String "hello world, lorem ipsum")))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "regex"))
-                     [ NormalArg (Literal (String "(\\w+) (\\w+)")) ])
-              , NormalArg
-                  (FuncExpr
-                     [ NormalParam (Identifier "m") ]
-                     (Block
-                        (CodeBlock
-                           [ Plus
-                               (Plus
-                                  (FuncCall
-                                     (FieldAccess
-                                        (Ident (Identifier "at"))
-                                        (FieldAccess
-                                           (Ident (Identifier "captures"))
-                                           (Ident (Identifier "m"))))
-                                     [ NormalArg (Literal (Int 1)) ])
-                                  (Literal (String " ")))
-                               (FuncCall
-                                  (FieldAccess
-                                     (Ident (Identifier "at"))
-                                     (FieldAccess
-                                        (Ident (Identifier "captures")) (Ident (Identifier "m"))))
-                                  [ NormalArg (Literal (Int 0)) ])
-                           ])))
-              ])
-       , NormalArg (Literal (String "world hello, ipsum lorem"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-15.typ"
-    ( line 16 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "replace"))
-                 (Literal (String "hello world, lorem ipsum")))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "regex"))
-                     [ NormalArg (Literal (String "(\\w+) (\\w+)")) ])
-              , KeyValArg (Identifier "count") (Literal (Int 1))
-              , NormalArg
-                  (FuncExpr
-                     [ NormalParam (Identifier "m") ]
-                     (Block
-                        (CodeBlock
-                           [ Plus
-                               (Plus
-                                  (FuncCall
-                                     (FieldAccess
-                                        (Ident (Identifier "at"))
-                                        (FieldAccess
-                                           (Ident (Identifier "captures"))
-                                           (Ident (Identifier "m"))))
-                                     [ NormalArg (Literal (Int 1)) ])
-                                  (Literal (String " ")))
-                               (FuncCall
-                                  (FieldAccess
-                                     (Ident (Identifier "at"))
-                                     (FieldAccess
-                                        (Ident (Identifier "captures")) (Ident (Identifier "m"))))
-                                  [ NormalArg (Literal (Int 0)) ])
-                           ])))
-              ])
-       , NormalArg (Literal (String "world hello, lorem ipsum"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-15.typ"
-    ( line 19 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "replace")) (Literal (String "123 456")))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "regex"))
-                     [ NormalArg (Literal (String "[a-z]+")) ])
-              , NormalArg (Literal (String "a"))
-              ])
-       , NormalArg (Literal (String "123 456"))
-       ])
-, ParBreak
-, Code
-    "test/typ/compiler/string-15.typ"
-    ( line 21 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "replace")) (Literal (String "abc")))
-              [ NormalArg (Literal (String ""))
-              , NormalArg
-                  (FuncExpr [ NormalParam (Identifier "m") ] (Literal (String "-")))
-              ])
-       , NormalArg (Literal (String "-a-b-c-"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-15.typ"
-    ( line 22 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "replace")) (Literal (String "abc")))
-              [ NormalArg (Literal (String ""))
-              , NormalArg
-                  (FuncExpr [ NormalParam (Identifier "m") ] (Literal (String "-")))
-              , KeyValArg (Identifier "count") (Literal (Int 1))
-              ])
-       , NormalArg (Literal (String "-abc"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-15.typ"
-    ( line 23 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "replace")) (Literal (String "123")))
-              [ NormalArg (Literal (String "abc"))
-              , NormalArg
-                  (FuncExpr [ NormalParam (Identifier "m") ] (Literal (String "")))
-              ])
-       , NormalArg (Literal (String "123"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-15.typ"
-    ( line 24 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "replace")) (Literal (String "123")))
-              [ NormalArg (Literal (String "abc"))
-              , NormalArg
-                  (FuncExpr [ NormalParam (Identifier "m") ] (Literal (String "")))
-              , KeyValArg (Identifier "count") (Literal (Int 2))
-              ])
-       , NormalArg (Literal (String "123"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-15.typ"
-    ( line 25 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "replace")) (Literal (String "a123b123c")))
-              [ NormalArg (Literal (String "123"))
-              , NormalArg
-                  (FuncExpr
-                     [ NormalParam (Identifier "m") ]
-                     (Block
-                        (CodeBlock
-                           [ Plus
-                               (Plus
-                                  (FuncCall
-                                     (Ident (Identifier "str"))
-                                     [ NormalArg
-                                         (FieldAccess
-                                            (Ident (Identifier "start")) (Ident (Identifier "m")))
-                                     ])
-                                  (Literal (String "-")))
-                               (FuncCall
-                                  (Ident (Identifier "str"))
-                                  [ NormalArg
-                                      (FieldAccess
-                                         (Ident (Identifier "end")) (Ident (Identifier "m")))
-                                  ])
-                           ])))
-              ])
-       , NormalArg (Literal (String "a1-4b5-8c"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-15.typ"
-    ( line 28 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "replace")) (Literal (String "halla warld")))
-              [ NormalArg (Literal (String "a"))
-              , NormalArg
-                  (FuncExpr
-                     [ NormalParam (Identifier "m") ]
-                     (Block
-                        (CodeBlock
-                           [ If
-                               [ ( Equals
-                                     (FieldAccess
-                                        (Ident (Identifier "start")) (Ident (Identifier "m")))
-                                     (Literal (Int 1))
-                                 , Block (CodeBlock [ Literal (String "e") ])
-                                 )
-                               , ( Or
-                                     (Equals
-                                        (FieldAccess
-                                           (Ident (Identifier "start")) (Ident (Identifier "m")))
-                                        (Literal (Int 4)))
-                                     (Equals
-                                        (FieldAccess
-                                           (Ident (Identifier "start")) (Ident (Identifier "m")))
-                                        (Literal (Int 7)))
-                                 , Block (CodeBlock [ Literal (String "o") ])
-                                 )
-                               ]
-                           ])))
-              ])
-       , NormalArg (Literal (String "hello world"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-15.typ"
-    ( line 32 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "replace")) (Literal (String "aaa")))
-              [ NormalArg (Literal (String "a"))
-              , NormalArg
-                  (FuncExpr
-                     [ NormalParam (Identifier "m") ]
-                     (FuncCall
-                        (Ident (Identifier "str"))
-                        [ NormalArg
-                            (FuncCall
-                               (FieldAccess
-                                  (Ident (Identifier "len"))
-                                  (FieldAccess
-                                     (Ident (Identifier "captures")) (Ident (Identifier "m"))))
-                               [])
-                        ]))
-              ])
-       , NormalArg (Literal (String "000"))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak(), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/string-16.out b/test/out/compiler/string-16.out
deleted file mode 100644
--- a/test/out/compiler/string-16.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/string-17.out b/test/out/compiler/string-17.out
deleted file mode 100644
--- a/test/out/compiler/string-17.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/string-18.out b/test/out/compiler/string-18.out
deleted file mode 100644
--- a/test/out/compiler/string-18.out
+++ /dev/null
@@ -1,420 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/string-18.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/string-18.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/string-18.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/string-18.typ"
-    ( line 3 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "str")))
-       (Literal (String "Typst, LaTeX, Word, InDesign")))
-, SoftBreak
-, Code
-    "test/typ/compiler/string-18.typ"
-    ( line 4 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "array")))
-       (Array
-          [ Reg (Literal (String "Typst"))
-          , Reg (Literal (String "LaTeX"))
-          , Reg (Literal (String "Word"))
-          , Reg (Literal (String "InDesign"))
-          ]))
-, SoftBreak
-, Code
-    "test/typ/compiler/string-18.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "map"))
-                 (FuncCall
-                    (FieldAccess
-                       (Ident (Identifier "split")) (Ident (Identifier "str")))
-                    [ NormalArg (Literal (String ",")) ]))
-              [ NormalArg
-                  (FuncExpr
-                     [ NormalParam (Identifier "s") ]
-                     (FuncCall
-                        (FieldAccess (Ident (Identifier "trim")) (Ident (Identifier "s")))
-                        []))
-              ])
-       , NormalArg (Ident (Identifier "array"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-18.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess (Ident (Identifier "trim")) (Literal (String ""))) [])
-       , NormalArg (Literal (String ""))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-18.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "trim")) (Literal (String " abc ")))
-              [ KeyValArg (Identifier "at") (Ident (Identifier "start")) ])
-       , NormalArg (Literal (String "abc "))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-18.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "trim")) (Literal (String " abc ")))
-              [ KeyValArg (Identifier "at") (Ident (Identifier "end"))
-              , KeyValArg (Identifier "repeat") (Literal (Boolean True))
-              ])
-       , NormalArg (Literal (String " abc"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-18.typ"
-    ( line 9 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "trim")) (Literal (String "  abc")))
-              [ KeyValArg (Identifier "at") (Ident (Identifier "start"))
-              , KeyValArg (Identifier "repeat") (Literal (Boolean False))
-              ])
-       , NormalArg (Literal (String "abc"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-18.typ"
-    ( line 10 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "trim")) (Literal (String "aabcaa")))
-              [ NormalArg (Literal (String "a"))
-              , KeyValArg (Identifier "repeat") (Literal (Boolean False))
-              ])
-       , NormalArg (Literal (String "abca"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-18.typ"
-    ( line 11 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "trim")) (Literal (String "aabca")))
-              [ NormalArg (Literal (String "a"))
-              , KeyValArg (Identifier "at") (Ident (Identifier "start"))
-              ])
-       , NormalArg (Literal (String "bca"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-18.typ"
-    ( line 12 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "trim")) (Literal (String "aabcaa")))
-              [ NormalArg (Literal (String "a"))
-              , KeyValArg (Identifier "at") (Ident (Identifier "end"))
-              , KeyValArg (Identifier "repeat") (Literal (Boolean False))
-              ])
-       , NormalArg (Literal (String "aabca"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-18.typ"
-    ( line 13 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess (Ident (Identifier "trim")) (Literal (String "")))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "regex")) [ NormalArg (Literal (String ".")) ])
-              ])
-       , NormalArg (Literal (String ""))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-18.typ"
-    ( line 14 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "trim")) (Literal (String "123abc456")))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "regex"))
-                     [ NormalArg (Literal (String "\\d")) ])
-              ])
-       , NormalArg (Literal (String "abc"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-18.typ"
-    ( line 15 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "trim")) (Literal (String "123abc456")))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "regex"))
-                     [ NormalArg (Literal (String "\\d")) ])
-              , KeyValArg (Identifier "repeat") (Literal (Boolean False))
-              ])
-       , NormalArg (Literal (String "23abc45"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-18.typ"
-    ( line 16 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "trim")) (Literal (String "123a4b5c678")))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "regex"))
-                     [ NormalArg (Literal (String "\\d")) ])
-              , KeyValArg (Identifier "repeat") (Literal (Boolean True))
-              ])
-       , NormalArg (Literal (String "a4b5c"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-18.typ"
-    ( line 17 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "trim")) (Literal (String "123a4b5c678")))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "regex"))
-                     [ NormalArg (Literal (String "\\d")) ])
-              , KeyValArg (Identifier "repeat") (Literal (Boolean False))
-              ])
-       , NormalArg (Literal (String "23a4b5c67"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-18.typ"
-    ( line 18 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "trim")) (Literal (String "123abc456")))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "regex"))
-                     [ NormalArg (Literal (String "\\d")) ])
-              , KeyValArg (Identifier "at") (Ident (Identifier "start"))
-              ])
-       , NormalArg (Literal (String "abc456"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-18.typ"
-    ( line 19 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "trim")) (Literal (String "123abc456")))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "regex"))
-                     [ NormalArg (Literal (String "\\d")) ])
-              , KeyValArg (Identifier "at") (Ident (Identifier "end"))
-              ])
-       , NormalArg (Literal (String "123abc"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-18.typ"
-    ( line 20 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "trim")) (Literal (String "123abc456")))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "regex"))
-                     [ NormalArg (Literal (String "\\d+")) ])
-              , KeyValArg (Identifier "at") (Ident (Identifier "end"))
-              , KeyValArg (Identifier "repeat") (Literal (Boolean False))
-              ])
-       , NormalArg (Literal (String "123abc"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-18.typ"
-    ( line 21 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "trim")) (Literal (String "123abc456")))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "regex"))
-                     [ NormalArg (Literal (String "\\d{1,2}$")) ])
-              , KeyValArg (Identifier "repeat") (Literal (Boolean False))
-              ])
-       , NormalArg (Literal (String "123abc4"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-18.typ"
-    ( line 22 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "trim")) (Literal (String "hello world")))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "regex")) [ NormalArg (Literal (String ".")) ])
-              ])
-       , NormalArg (Literal (String ""))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/string-19.out b/test/out/compiler/string-19.out
deleted file mode 100644
--- a/test/out/compiler/string-19.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/string-20.out b/test/out/compiler/string-20.out
deleted file mode 100644
--- a/test/out/compiler/string-20.out
+++ /dev/null
@@ -1,130 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/string-20.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/string-20.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/string-20.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/string-20.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess (Ident (Identifier "split")) (Literal (String "abc")))
-              [ NormalArg (Literal (String "")) ])
-       , NormalArg
-           (Array
-              [ Reg (Literal (String ""))
-              , Reg (Literal (String "a"))
-              , Reg (Literal (String "b"))
-              , Reg (Literal (String "c"))
-              , Reg (Literal (String ""))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-20.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess (Ident (Identifier "split")) (Literal (String "abc")))
-              [ NormalArg (Literal (String "b")) ])
-       , NormalArg
-           (Array [ Reg (Literal (String "a")) , Reg (Literal (String "c")) ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-20.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "split")) (Literal (String "a123c")))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "regex"))
-                     [ NormalArg (Literal (String "\\d")) ])
-              ])
-       , NormalArg
-           (Array
-              [ Reg (Literal (String "a"))
-              , Reg (Literal (String ""))
-              , Reg (Literal (String ""))
-              , Reg (Literal (String "c"))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compiler/string-20.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "split")) (Literal (String "a123c")))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "regex"))
-                     [ NormalArg (Literal (String "\\d+")) ])
-              ])
-       , NormalArg
-           (Array [ Reg (Literal (String "a")) , Reg (Literal (String "c")) ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/string-21.out b/test/out/compiler/string-21.out
deleted file mode 100644
--- a/test/out/compiler/string-21.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/while-00.out b/test/out/compiler/while-00.out
deleted file mode 100644
--- a/test/out/compiler/while-00.out
+++ /dev/null
@@ -1,136 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/while-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/while-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/while-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compiler/while-00.typ"
-    ( line 3 , column 2 )
-    (Let (BasicBind (Just (Identifier "i"))) (Literal (Int 0)))
-, SoftBreak
-, Code
-    "test/typ/compiler/while-00.typ"
-    ( line 4 , column 2 )
-    (While
-       (LessThan (Ident (Identifier "i")) (Literal (Int 10)))
-       (Block
-          (Content
-             [ SoftBreak
-             , Code
-                 "test/typ/compiler/while-00.typ"
-                 ( line 5 , column 4 )
-                 (Assign
-                    (Ident (Identifier "i"))
-                    (Plus (Ident (Identifier "i")) (Literal (Int 2))))
-             , SoftBreak
-             , Code
-                 "test/typ/compiler/while-00.typ"
-                 ( line 6 , column 4 )
-                 (Ident (Identifier "i"))
-             , ParBreak
-             ])))
-, ParBreak
-, Comment
-, Code
-    "test/typ/compiler/while-00.typ"
-    ( line 10 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "iter"))) (Literal (Boolean True)))
-, SoftBreak
-, Code
-    "test/typ/compiler/while-00.typ"
-    ( line 11 , column 2 )
-    (While
-       (Ident (Identifier "iter"))
-       (Block
-          (CodeBlock
-             [ Assign (Ident (Identifier "iter")) (Literal (Boolean False))
-             , Literal (String "Hi.")
-             ])))
-, ParBreak
-, Code
-    "test/typ/compiler/while-00.typ"
-    ( line 16 , column 2 )
-    (While
-       (Literal (Boolean False))
-       (Block (CodeBlock [ Ident (Identifier "dont-care") ])))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [2]), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [4]), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [6]), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [8]), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [10]), 
-                 parbreak(), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 text(body: [Hi.]), 
-                 parbreak(), 
-                 parbreak() })
diff --git a/test/out/compiler/while-01.out b/test/out/compiler/while-01.out
deleted file mode 100644
--- a/test/out/compiler/while-01.out
+++ /dev/null
@@ -1,95 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compiler/while-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compiler/while-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compiler/while-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, SoftBreak
-, Code
-    "test/typ/compiler/while-01.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (While (Literal (Boolean False)) (Block (CodeBlock [])))
-       , NormalArg (Literal None)
-       ])
-, ParBreak
-, Code
-    "test/typ/compiler/while-01.typ"
-    ( line 7 , column 2 )
-    (Let (BasicBind (Just (Identifier "i"))) (Literal (Int 0)))
-, SoftBreak
-, Code
-    "test/typ/compiler/while-01.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "type"))
-              [ NormalArg
-                  (While
-                     (LessThan (Ident (Identifier "i")) (Literal (Int 1)))
-                     (Block
-                        (Content
-                           [ Code
-                               "test/typ/compiler/while-01.typ"
-                               ( line 8 , column 26 )
-                               (Assign
-                                  (Ident (Identifier "i"))
-                                  (Plus (Ident (Identifier "i")) (Literal (Int 1))))
-                           ])))
-              ])
-       , NormalArg (Literal (String "content"))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compiler/while-02.out b/test/out/compiler/while-02.out
deleted file mode 100644
--- a/test/out/compiler/while-02.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/while-03.out b/test/out/compiler/while-03.out
deleted file mode 100644
--- a/test/out/compiler/while-03.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/while-04.out b/test/out/compiler/while-04.out
deleted file mode 100644
--- a/test/out/compiler/while-04.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compiler/while-05.out b/test/out/compiler/while-05.out
deleted file mode 100644
--- a/test/out/compiler/while-05.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/calc-00.out b/test/out/compute/calc-00.out
deleted file mode 100644
--- a/test/out/compute/calc-00.out
+++ /dev/null
@@ -1,181 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compute/calc-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compute/calc-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compute/calc-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compute/calc-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "int")) [ NormalArg (Literal (Boolean False)) ])
-       , NormalArg (Literal (Int 0))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-00.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "int")) [ NormalArg (Literal (Boolean True)) ])
-       , NormalArg (Literal (Int 1))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-00.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "int")) [ NormalArg (Literal (Int 10)) ])
-       , NormalArg (Literal (Int 10))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-00.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "int")) [ NormalArg (Literal (String "150")) ])
-       , NormalArg (Literal (Int 150))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-00.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "int"))
-              [ NormalArg (Divided (Literal (Int 10)) (Literal (Int 3))) ])
-       , NormalArg (Literal (Int 3))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-00.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "float")) [ NormalArg (Literal (Int 10)) ])
-       , NormalArg (Literal (Float 10.0))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-00.typ"
-    ( line 9 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "float"))
-              [ NormalArg
-                  (Times
-                     (Literal (Numeric 50.0 Percent)) (Literal (Numeric 30.0 Percent)))
-              ])
-       , NormalArg (Literal (Float 0.15))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-00.typ"
-    ( line 10 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "float"))
-              [ NormalArg (Literal (String "31.4e-1")) ])
-       , NormalArg (Literal (Float 3.14))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-00.typ"
-    ( line 11 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "type"))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "float")) [ NormalArg (Literal (Int 10)) ])
-              ])
-       , NormalArg (Literal (String "float"))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compute/calc-01.out b/test/out/compute/calc-01.out
deleted file mode 100644
--- a/test/out/compute/calc-01.out
+++ /dev/null
@@ -1,82 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compute/calc-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compute/calc-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compute/calc-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/compute/calc-01.typ"
-    ( line 2 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "round")) (Ident (Identifier "calc")))
-              [ NormalArg
-                  (FieldAccess (Ident (Identifier "e")) (Ident (Identifier "calc")))
-              , KeyValArg (Identifier "digits") (Literal (Int 2))
-              ])
-       , NormalArg (Literal (Float 2.72))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-01.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "round")) (Ident (Identifier "calc")))
-              [ NormalArg
-                  (FieldAccess (Ident (Identifier "pi")) (Ident (Identifier "calc")))
-              , KeyValArg (Identifier "digits") (Literal (Int 2))
-              ])
-       , NormalArg (Literal (Float 3.14))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compute/calc-02.out b/test/out/compute/calc-02.out
deleted file mode 100644
--- a/test/out/compute/calc-02.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/calc-03.out b/test/out/compute/calc-03.out
deleted file mode 100644
--- a/test/out/compute/calc-03.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/calc-04.out b/test/out/compute/calc-04.out
deleted file mode 100644
--- a/test/out/compute/calc-04.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/calc-05.out b/test/out/compute/calc-05.out
deleted file mode 100644
--- a/test/out/compute/calc-05.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/calc-06.out b/test/out/compute/calc-06.out
deleted file mode 100644
--- a/test/out/compute/calc-06.out
+++ /dev/null
@@ -1,157 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compute/calc-06.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compute/calc-06.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compute/calc-06.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compute/calc-06.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "abs")) (Ident (Identifier "calc")))
-              [ NormalArg (Negated (Literal (Int 3))) ])
-       , NormalArg (Literal (Int 3))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-06.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "abs")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Int 3)) ])
-       , NormalArg (Literal (Int 3))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-06.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "abs")) (Ident (Identifier "calc")))
-              [ NormalArg (Negated (Literal (Float 0.0))) ])
-       , NormalArg (Literal (Float 0.0))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-06.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "abs")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Float 0.0)) ])
-       , NormalArg (Negated (Literal (Float 0.0)))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-06.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "abs")) (Ident (Identifier "calc")))
-              [ NormalArg (Negated (Literal (Float 3.14))) ])
-       , NormalArg (Literal (Float 3.14))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-06.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "abs")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Numeric 50.0 Percent)) ])
-       , NormalArg (Literal (Numeric 50.0 Percent))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-06.typ"
-    ( line 9 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "abs")) (Ident (Identifier "calc")))
-              [ NormalArg (Negated (Literal (Numeric 25.0 Percent))) ])
-       , NormalArg (Literal (Numeric 25.0 Percent))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compute/calc-07.out b/test/out/compute/calc-07.out
deleted file mode 100644
--- a/test/out/compute/calc-07.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/calc-08.out b/test/out/compute/calc-08.out
deleted file mode 100644
--- a/test/out/compute/calc-08.out
+++ /dev/null
@@ -1,109 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compute/calc-08.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compute/calc-08.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compute/calc-08.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compute/calc-08.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "even")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Int 2)) ])
-       , NormalArg (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-08.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "odd")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Int 2)) ])
-       , NormalArg (Literal (Boolean False))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-08.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "odd")) (Ident (Identifier "calc")))
-              [ NormalArg (Negated (Literal (Int 1))) ])
-       , NormalArg (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-08.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "even")) (Ident (Identifier "calc")))
-              [ NormalArg (Negated (Literal (Int 11))) ])
-       , NormalArg (Literal (Boolean False))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compute/calc-09.out b/test/out/compute/calc-09.out
deleted file mode 100644
--- a/test/out/compute/calc-09.out
+++ /dev/null
@@ -1,133 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compute/calc-09.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compute/calc-09.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compute/calc-09.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compute/calc-09.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "rem")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Int 1)) , NormalArg (Literal (Int 1)) ])
-       , NormalArg (Literal (Int 0))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-09.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "rem")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Int 5)) , NormalArg (Literal (Int 3)) ])
-       , NormalArg (Literal (Int 2))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-09.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "rem")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Int 5))
-              , NormalArg (Negated (Literal (Int 3)))
-              ])
-       , NormalArg (Literal (Int 2))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-09.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "rem")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Float 22.5))
-              , NormalArg (Literal (Int 10))
-              ])
-       , NormalArg (Literal (Float 2.5))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-09.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "rem")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Int 9)) , NormalArg (Literal (Float 4.5)) ])
-       , NormalArg (Literal (Int 0))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [❌(]), 
-                 text(body: [1]), 
-                 text(body: [ /= ]), 
-                 text(body: [0]), 
-                 text(body: [)]), 
-                 parbreak() })
diff --git a/test/out/compute/calc-10.out b/test/out/compute/calc-10.out
deleted file mode 100644
--- a/test/out/compute/calc-10.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/calc-11.out b/test/out/compute/calc-11.out
deleted file mode 100644
--- a/test/out/compute/calc-11.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/calc-12.out b/test/out/compute/calc-12.out
deleted file mode 100644
--- a/test/out/compute/calc-12.out
+++ /dev/null
@@ -1,129 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compute/calc-12.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compute/calc-12.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compute/calc-12.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compute/calc-12.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "quo")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Int 1)) , NormalArg (Literal (Int 1)) ])
-       , NormalArg (Literal (Int 1))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-12.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "quo")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Int 5)) , NormalArg (Literal (Int 3)) ])
-       , NormalArg (Literal (Int 1))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-12.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "quo")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Int 5))
-              , NormalArg (Negated (Literal (Int 3)))
-              ])
-       , NormalArg (Negated (Literal (Int 1)))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-12.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "quo")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Float 22.5))
-              , NormalArg (Literal (Int 10))
-              ])
-       , NormalArg (Literal (Int 2))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-12.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "quo")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Int 9)) , NormalArg (Literal (Float 4.5)) ])
-       , NormalArg (Literal (Int 2))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compute/calc-13.out b/test/out/compute/calc-13.out
deleted file mode 100644
--- a/test/out/compute/calc-13.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/calc-14.out b/test/out/compute/calc-14.out
deleted file mode 100644
--- a/test/out/compute/calc-14.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/calc-15.out b/test/out/compute/calc-15.out
deleted file mode 100644
--- a/test/out/compute/calc-15.out
+++ /dev/null
@@ -1,117 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compute/calc-15.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compute/calc-15.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compute/calc-15.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compute/calc-15.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "min")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Int 2))
-              , NormalArg (Negated (Literal (Int 4)))
-              ])
-       , NormalArg (Negated (Literal (Int 4)))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-15.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "min")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Float 3.5))
-              , NormalArg (Literal (Float 100.0))
-              , NormalArg (Negated (Literal (Float 0.1)))
-              , NormalArg (Literal (Int 3))
-              ])
-       , NormalArg (Negated (Literal (Float 0.1)))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-15.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "max")) (Ident (Identifier "calc")))
-              [ NormalArg (Negated (Literal (Int 3)))
-              , NormalArg (Literal (Int 11))
-              ])
-       , NormalArg (Literal (Int 11))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-15.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "min")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (String "hi")) ])
-       , NormalArg (Literal (String "hi"))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compute/calc-16.out b/test/out/compute/calc-16.out
deleted file mode 100644
--- a/test/out/compute/calc-16.out
+++ /dev/null
@@ -1,77 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compute/calc-16.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compute/calc-16.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compute/calc-16.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compute/calc-16.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "pow")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Int 10)) , NormalArg (Literal (Int 0)) ])
-       , NormalArg (Literal (Int 1))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-16.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "pow")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Int 2)) , NormalArg (Literal (Int 4)) ])
-       , NormalArg (Literal (Int 16))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compute/calc-17.out b/test/out/compute/calc-17.out
deleted file mode 100644
--- a/test/out/compute/calc-17.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/calc-18.out b/test/out/compute/calc-18.out
deleted file mode 100644
--- a/test/out/compute/calc-18.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/calc-19.out b/test/out/compute/calc-19.out
deleted file mode 100644
--- a/test/out/compute/calc-19.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/calc-20.out b/test/out/compute/calc-20.out
deleted file mode 100644
--- a/test/out/compute/calc-20.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/calc-21.out b/test/out/compute/calc-21.out
deleted file mode 100644
--- a/test/out/compute/calc-21.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/calc-22.out b/test/out/compute/calc-22.out
deleted file mode 100644
--- a/test/out/compute/calc-22.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/calc-23.out b/test/out/compute/calc-23.out
deleted file mode 100644
--- a/test/out/compute/calc-23.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/calc-24.out b/test/out/compute/calc-24.out
deleted file mode 100644
--- a/test/out/compute/calc-24.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/calc-25.out b/test/out/compute/calc-25.out
deleted file mode 100644
--- a/test/out/compute/calc-25.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/calc-26.out b/test/out/compute/calc-26.out
deleted file mode 100644
--- a/test/out/compute/calc-26.out
+++ /dev/null
@@ -1,77 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compute/calc-26.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compute/calc-26.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compute/calc-26.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compute/calc-26.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "fact")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Int 0)) ])
-       , NormalArg (Literal (Int 1))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-26.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "fact")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Int 5)) ])
-       , NormalArg (Literal (Int 120))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compute/calc-27.out b/test/out/compute/calc-27.out
deleted file mode 100644
--- a/test/out/compute/calc-27.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/calc-28.out b/test/out/compute/calc-28.out
deleted file mode 100644
--- a/test/out/compute/calc-28.out
+++ /dev/null
@@ -1,109 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compute/calc-28.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compute/calc-28.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compute/calc-28.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compute/calc-28.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "perm")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Int 0)) , NormalArg (Literal (Int 0)) ])
-       , NormalArg (Literal (Int 1))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-28.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "perm")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Int 5)) , NormalArg (Literal (Int 3)) ])
-       , NormalArg (Literal (Int 60))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-28.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "perm")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Int 5)) , NormalArg (Literal (Int 5)) ])
-       , NormalArg (Literal (Int 120))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-28.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "perm")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Int 5)) , NormalArg (Literal (Int 6)) ])
-       , NormalArg (Literal (Int 0))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compute/calc-29.out b/test/out/compute/calc-29.out
deleted file mode 100644
--- a/test/out/compute/calc-29.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/calc-30.out b/test/out/compute/calc-30.out
deleted file mode 100644
--- a/test/out/compute/calc-30.out
+++ /dev/null
@@ -1,125 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compute/calc-30.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compute/calc-30.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compute/calc-30.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compute/calc-30.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "binom")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Int 0)) , NormalArg (Literal (Int 0)) ])
-       , NormalArg (Literal (Int 1))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-30.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "binom")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Int 5)) , NormalArg (Literal (Int 3)) ])
-       , NormalArg (Literal (Int 10))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-30.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "binom")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Int 5)) , NormalArg (Literal (Int 5)) ])
-       , NormalArg (Literal (Int 1))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-30.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "binom")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Int 5)) , NormalArg (Literal (Int 6)) ])
-       , NormalArg (Literal (Int 0))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-30.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "binom")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Int 6)) , NormalArg (Literal (Int 2)) ])
-       , NormalArg (Literal (Int 15))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compute/calc-31.out b/test/out/compute/calc-31.out
deleted file mode 100644
--- a/test/out/compute/calc-31.out
+++ /dev/null
@@ -1,161 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compute/calc-31.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compute/calc-31.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compute/calc-31.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compute/calc-31.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "gcd")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Int 112)) , NormalArg (Literal (Int 77)) ])
-       , NormalArg (Literal (Int 7))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-31.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "gcd")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Int 12)) , NormalArg (Literal (Int 96)) ])
-       , NormalArg (Literal (Int 12))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-31.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "gcd")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Int 13)) , NormalArg (Literal (Int 9)) ])
-       , NormalArg (Literal (Int 1))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-31.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "gcd")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Int 13))
-              , NormalArg (Negated (Literal (Int 9)))
-              ])
-       , NormalArg (Literal (Int 1))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-31.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "gcd")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Int 272557))
-              , NormalArg (Literal (Int 272557))
-              ])
-       , NormalArg (Literal (Int 272557))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-31.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "gcd")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Int 0)) , NormalArg (Literal (Int 0)) ])
-       , NormalArg (Literal (Int 0))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-31.typ"
-    ( line 9 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "gcd")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Int 7)) , NormalArg (Literal (Int 0)) ])
-       , NormalArg (Literal (Int 7))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compute/calc-32.out b/test/out/compute/calc-32.out
deleted file mode 100644
--- a/test/out/compute/calc-32.out
+++ /dev/null
@@ -1,161 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compute/calc-32.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compute/calc-32.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compute/calc-32.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compute/calc-32.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "lcm")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Int 112)) , NormalArg (Literal (Int 77)) ])
-       , NormalArg (Literal (Int 1232))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-32.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "lcm")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Int 12)) , NormalArg (Literal (Int 96)) ])
-       , NormalArg (Literal (Int 96))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-32.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "lcm")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Int 13)) , NormalArg (Literal (Int 9)) ])
-       , NormalArg (Literal (Int 117))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-32.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "lcm")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Int 13))
-              , NormalArg (Negated (Literal (Int 9)))
-              ])
-       , NormalArg (Literal (Int 117))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-32.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "lcm")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Int 272557))
-              , NormalArg (Literal (Int 272557))
-              ])
-       , NormalArg (Literal (Int 272557))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-32.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "lcm")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Int 0)) , NormalArg (Literal (Int 0)) ])
-       , NormalArg (Literal (Int 0))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-32.typ"
-    ( line 9 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "lcm")) (Ident (Identifier "calc")))
-              [ NormalArg (Literal (Int 8)) , NormalArg (Literal (Int 0)) ])
-       , NormalArg (Literal (Int 0))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compute/calc-33.out b/test/out/compute/calc-33.out
deleted file mode 100644
--- a/test/out/compute/calc-33.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/calc-34.out b/test/out/compute/calc-34.out
deleted file mode 100644
--- a/test/out/compute/calc-34.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/calc-35.out b/test/out/compute/calc-35.out
deleted file mode 100644
--- a/test/out/compute/calc-35.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/calc-36.out b/test/out/compute/calc-36.out
deleted file mode 100644
--- a/test/out/compute/calc-36.out
+++ /dev/null
@@ -1,242 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compute/calc-36.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compute/calc-36.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compute/calc-36.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compute/calc-36.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "range")) [ NormalArg (Literal (Int 4)) ])
-       , NormalArg
-           (Array
-              [ Reg (Literal (Int 0))
-              , Reg (Literal (Int 1))
-              , Reg (Literal (Int 2))
-              , Reg (Literal (Int 3))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-36.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "range"))
-              [ NormalArg (Literal (Int 1)) , NormalArg (Literal (Int 4)) ])
-       , NormalArg
-           (Array
-              [ Reg (Literal (Int 1))
-              , Reg (Literal (Int 2))
-              , Reg (Literal (Int 3))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-36.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "range"))
-              [ NormalArg (Negated (Literal (Int 4)))
-              , NormalArg (Literal (Int 2))
-              ])
-       , NormalArg
-           (Array
-              [ Reg (Negated (Literal (Int 4)))
-              , Reg (Negated (Literal (Int 3)))
-              , Reg (Negated (Literal (Int 2)))
-              , Reg (Negated (Literal (Int 1)))
-              , Reg (Literal (Int 0))
-              , Reg (Literal (Int 1))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-36.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "range"))
-              [ NormalArg (Literal (Int 10)) , NormalArg (Literal (Int 5)) ])
-       , NormalArg (Array [])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-36.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "range"))
-              [ NormalArg (Literal (Int 10))
-              , KeyValArg (Identifier "step") (Literal (Int 3))
-              ])
-       , NormalArg
-           (Array
-              [ Reg (Literal (Int 0))
-              , Reg (Literal (Int 3))
-              , Reg (Literal (Int 6))
-              , Reg (Literal (Int 9))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-36.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "range"))
-              [ NormalArg (Literal (Int 1))
-              , NormalArg (Literal (Int 4))
-              , KeyValArg (Identifier "step") (Literal (Int 1))
-              ])
-       , NormalArg
-           (Array
-              [ Reg (Literal (Int 1))
-              , Reg (Literal (Int 2))
-              , Reg (Literal (Int 3))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-36.typ"
-    ( line 9 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "range"))
-              [ NormalArg (Literal (Int 1))
-              , NormalArg (Literal (Int 8))
-              , KeyValArg (Identifier "step") (Literal (Int 2))
-              ])
-       , NormalArg
-           (Array
-              [ Reg (Literal (Int 1))
-              , Reg (Literal (Int 3))
-              , Reg (Literal (Int 5))
-              , Reg (Literal (Int 7))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-36.typ"
-    ( line 10 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "range"))
-              [ NormalArg (Literal (Int 5))
-              , NormalArg (Literal (Int 2))
-              , KeyValArg (Identifier "step") (Negated (Literal (Int 1)))
-              ])
-       , NormalArg
-           (Array
-              [ Reg (Literal (Int 5))
-              , Reg (Literal (Int 4))
-              , Reg (Literal (Int 3))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/calc-36.typ"
-    ( line 11 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "range"))
-              [ NormalArg (Literal (Int 10))
-              , NormalArg (Literal (Int 0))
-              , KeyValArg (Identifier "step") (Negated (Literal (Int 3)))
-              ])
-       , NormalArg
-           (Array
-              [ Reg (Literal (Int 10))
-              , Reg (Literal (Int 7))
-              , Reg (Literal (Int 4))
-              , Reg (Literal (Int 1))
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compute/calc-37.out b/test/out/compute/calc-37.out
deleted file mode 100644
--- a/test/out/compute/calc-37.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/calc-38.out b/test/out/compute/calc-38.out
deleted file mode 100644
--- a/test/out/compute/calc-38.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/calc-39.out b/test/out/compute/calc-39.out
deleted file mode 100644
--- a/test/out/compute/calc-39.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/calc-40.out b/test/out/compute/calc-40.out
deleted file mode 100644
--- a/test/out/compute/calc-40.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/construct-00.out b/test/out/compute/construct-00.out
deleted file mode 100644
--- a/test/out/compute/construct-00.out
+++ /dev/null
@@ -1,193 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compute/construct-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compute/construct-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compute/construct-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compute/construct-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "rgb"))
-              [ NormalArg (Literal (Numeric 0.0 Percent))
-              , NormalArg (Literal (Numeric 30.0 Percent))
-              , NormalArg (Literal (Numeric 70.0 Percent))
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rgb"))
-              [ NormalArg (Literal (String "004db3")) ])
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compute/construct-00.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "rgb"))
-              [ NormalArg (Literal (Int 255))
-              , NormalArg (Literal (Int 0))
-              , NormalArg (Literal (Int 0))
-              , NormalArg (Literal (Numeric 50.0 Percent))
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rgb"))
-              [ NormalArg (Literal (String "ff000080")) ])
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/compute/construct-00.typ"
-    ( line 9 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "lighten"))
-                 (FuncCall
-                    (Ident (Identifier "rgb"))
-                    [ NormalArg (Literal (Int 25))
-                    , NormalArg (Literal (Int 35))
-                    , NormalArg (Literal (Int 45))
-                    ]))
-              [ NormalArg (Literal (Numeric 10.0 Percent)) ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rgb"))
-              [ NormalArg (Literal (Int 48))
-              , NormalArg (Literal (Int 57))
-              , NormalArg (Literal (Int 66))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/construct-00.typ"
-    ( line 10 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "darken"))
-                 (FuncCall
-                    (Ident (Identifier "rgb"))
-                    [ NormalArg (Literal (Int 40))
-                    , NormalArg (Literal (Int 30))
-                    , NormalArg (Literal (Int 20))
-                    ]))
-              [ NormalArg (Literal (Numeric 10.0 Percent)) ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rgb"))
-              [ NormalArg (Literal (Int 36))
-              , NormalArg (Literal (Int 27))
-              , NormalArg (Literal (Int 18))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/construct-00.typ"
-    ( line 11 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "negate"))
-                 (FuncCall
-                    (Ident (Identifier "rgb"))
-                    [ NormalArg (Literal (String "#133337")) ]))
-              [])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rgb"))
-              [ NormalArg (Literal (Int 236))
-              , NormalArg (Literal (Int 204))
-              , NormalArg (Literal (Int 200))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/construct-00.typ"
-    ( line 12 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "lighten")) (Ident (Identifier "white")))
-              [ NormalArg (Literal (Numeric 100.0 Percent)) ])
-       , NormalArg (Ident (Identifier "white"))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [❌(]), 
-                 text(body: [rgb(0%,30%,70%,100%)]), 
-                 text(body: [ /= ]), 
-                 text(body: [rgb(0%,30%,70%,100%)]), 
-                 text(body: [)]), 
-                 parbreak(), 
-                 text(body: [❌(]), 
-                 text(body: [rgb(100%,0%,0%,50%)]), 
-                 text(body: [ /= ]), 
-                 text(body: [rgb(100%,0%,0%,50%)]), 
-                 text(body: [)]), 
-                 parbreak(), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compute/construct-01.out b/test/out/compute/construct-01.out
deleted file mode 100644
--- a/test/out/compute/construct-01.out
+++ /dev/null
@@ -1,76 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compute/construct-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compute/construct-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compute/construct-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/compute/construct-01.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "stack"))
-       [ KeyValArg (Identifier "dir") (Ident (Identifier "ltr"))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg
-                  (Identifier "fill")
-                  (FuncCall
-                     (Ident (Identifier "luma")) [ NormalArg (Literal (Int 0)) ])
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg
-                  (Identifier "fill")
-                  (FuncCall
-                     (Ident (Identifier "luma"))
-                     [ NormalArg (Literal (Numeric 80.0 Percent)) ])
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 stack(children: (rect(fill: luma(0%)), 
-                                  rect(fill: luma(80%))), 
-                       dir: ltr), 
-                 parbreak() })
diff --git a/test/out/compute/construct-02.out b/test/out/compute/construct-02.out
deleted file mode 100644
--- a/test/out/compute/construct-02.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/construct-03.out b/test/out/compute/construct-03.out
deleted file mode 100644
--- a/test/out/compute/construct-03.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/construct-04.out b/test/out/compute/construct-04.out
deleted file mode 100644
--- a/test/out/compute/construct-04.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/construct-05.out b/test/out/compute/construct-05.out
deleted file mode 100644
--- a/test/out/compute/construct-05.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/construct-06.out b/test/out/compute/construct-06.out
deleted file mode 100644
--- a/test/out/compute/construct-06.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/construct-07.out b/test/out/compute/construct-07.out
deleted file mode 100644
--- a/test/out/compute/construct-07.out
+++ /dev/null
@@ -1,131 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compute/construct-07.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compute/construct-07.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compute/construct-07.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compute/construct-07.typ"
-    ( line 3 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "envelope")))
-       (FuncCall
-          (Ident (Identifier "symbol"))
-          [ NormalArg (Literal (String "\128386"))
-          , NormalArg
-              (Array
-                 [ Reg (Literal (String "stamped"))
-                 , Reg (Literal (String "\128387"))
-                 ])
-          , NormalArg
-              (Array
-                 [ Reg (Literal (String "stamped.pen"))
-                 , Reg (Literal (String "\128390"))
-                 ])
-          , NormalArg
-              (Array
-                 [ Reg (Literal (String "lightning"))
-                 , Reg (Literal (String "\128388"))
-                 ])
-          , NormalArg
-              (Array
-                 [ Reg (Literal (String "fly"))
-                 , Reg (Literal (String "\128389"))
-                 ])
-          ]))
-, ParBreak
-, Code
-    "test/typ/compute/construct-07.typ"
-    ( line 11 , column 2 )
-    (Ident (Identifier "envelope"))
-, SoftBreak
-, Code
-    "test/typ/compute/construct-07.typ"
-    ( line 12 , column 2 )
-    (FieldAccess
-       (Ident (Identifier "stamped")) (Ident (Identifier "envelope")))
-, SoftBreak
-, Code
-    "test/typ/compute/construct-07.typ"
-    ( line 13 , column 2 )
-    (FieldAccess
-       (Ident (Identifier "pen")) (Ident (Identifier "envelope")))
-, SoftBreak
-, Code
-    "test/typ/compute/construct-07.typ"
-    ( line 14 , column 2 )
-    (FieldAccess
-       (Ident (Identifier "pen"))
-       (FieldAccess
-          (Ident (Identifier "stamped")) (Ident (Identifier "envelope"))))
-, SoftBreak
-, Code
-    "test/typ/compute/construct-07.typ"
-    ( line 15 , column 2 )
-    (FieldAccess
-       (Ident (Identifier "lightning")) (Ident (Identifier "envelope")))
-, SoftBreak
-, Code
-    "test/typ/compute/construct-07.typ"
-    ( line 16 , column 2 )
-    (FieldAccess
-       (Ident (Identifier "fly")) (Ident (Identifier "envelope")))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [🖂]), 
-                 text(body: [
-]), 
-                 text(body: [🖃]), 
-                 text(body: [
-]), 
-                 text(body: [🖆]), 
-                 text(body: [
-]), 
-                 text(body: [🖆]), 
-                 text(body: [
-]), 
-                 text(body: [🖄]), 
-                 text(body: [
-]), 
-                 text(body: [🖅]), 
-                 parbreak() })
diff --git a/test/out/compute/construct-08.out b/test/out/compute/construct-08.out
deleted file mode 100644
--- a/test/out/compute/construct-08.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/construct-09.out b/test/out/compute/construct-09.out
deleted file mode 100644
--- a/test/out/compute/construct-09.out
+++ /dev/null
@@ -1,94 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compute/construct-09.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compute/construct-09.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compute/construct-09.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compute/construct-09.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "str")) [ NormalArg (Literal (Int 123)) ])
-       , NormalArg (Literal (String "123"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/construct-09.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "str")) [ NormalArg (Literal (Float 50.14)) ])
-       , NormalArg (Literal (String "50.14"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/construct-09.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (GreaterThan
-              (FuncCall
-                 (FieldAccess
-                    (Ident (Identifier "len"))
-                    (FuncCall
-                       (Ident (Identifier "str"))
-                       [ NormalArg (Divided (Literal (Int 10)) (Literal (Int 3))) ]))
-                 [])
-              (Literal (Int 10)))
-       , NormalArg (Literal (Boolean True))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compute/construct-10.out b/test/out/compute/construct-10.out
deleted file mode 100644
--- a/test/out/compute/construct-10.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/construct-11.out b/test/out/compute/construct-11.out
deleted file mode 100644
--- a/test/out/compute/construct-11.out
+++ /dev/null
@@ -1,63 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compute/construct-11.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compute/construct-11.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compute/construct-11.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/compute/construct-11.typ"
-    ( line 2 , column 2 )
-    (FuncCall
-       (Ident (Identifier "assert"))
-       [ NormalArg
-           (Equals
-              (FuncCall
-                 (Ident (Identifier "range"))
-                 [ NormalArg (Literal (Int 2)) , NormalArg (Literal (Int 5)) ])
-              (Array
-                 [ Reg (Literal (Int 2))
-                 , Reg (Literal (Int 3))
-                 , Reg (Literal (Int 4))
-                 ]))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak() })
diff --git a/test/out/compute/data-00.out b/test/out/compute/data-00.out
deleted file mode 100644
--- a/test/out/compute/data-00.out
+++ /dev/null
@@ -1,68 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compute/data-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compute/data-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compute/data-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compute/data-00.typ"
-    ( line 3 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "data")))
-       (FuncCall
-          (Ident (Identifier "read"))
-          [ NormalArg (Literal (String "/assets/files/hello.txt")) ]))
-, SoftBreak
-, Code
-    "test/typ/compute/data-00.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "data"))
-       , NormalArg (Literal (String "Hello, world!"))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compute/data-01.out b/test/out/compute/data-01.out
deleted file mode 100644
--- a/test/out/compute/data-01.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/data-02.out b/test/out/compute/data-02.out
deleted file mode 100644
--- a/test/out/compute/data-02.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/data-03.out b/test/out/compute/data-03.out
deleted file mode 100644
--- a/test/out/compute/data-03.out
+++ /dev/null
@@ -1,126 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compute/data-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compute/data-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compute/data-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/compute/data-03.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal Auto) ])
-, SoftBreak
-, Code
-    "test/typ/compute/data-03.typ"
-    ( line 5 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "data")))
-       (FuncCall
-          (Ident (Identifier "csv"))
-          [ NormalArg (Literal (String "/assets/files/zoo.csv")) ]))
-, SoftBreak
-, Code
-    "test/typ/compute/data-03.typ"
-    ( line 6 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "cells")))
-       (Plus
-          (FuncCall
-             (FieldAccess
-                (Ident (Identifier "map"))
-                (FuncCall
-                   (FieldAccess (Ident (Identifier "at")) (Ident (Identifier "data")))
-                   [ NormalArg (Literal (Int 0)) ]))
-             [ NormalArg (Ident (Identifier "strong")) ])
-          (FuncCall
-             (FieldAccess
-                (Ident (Identifier "flatten"))
-                (FuncCall
-                   (FieldAccess
-                      (Ident (Identifier "slice")) (Ident (Identifier "data")))
-                   [ NormalArg (Literal (Int 1)) ]))
-             [])))
-, SoftBreak
-, Code
-    "test/typ/compute/data-03.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "table"))
-       [ KeyValArg
-           (Identifier "columns")
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "len"))
-                 (FuncCall
-                    (FieldAccess (Ident (Identifier "at")) (Ident (Identifier "data")))
-                    [ NormalArg (Literal (Int 0)) ]))
-              [])
-       , SpreadArg (Ident (Identifier "cells"))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 table(children: (strong(body: [Name]), 
-                                  strong(body: [Species]), 
-                                  strong(body: [Weight]), 
-                                  strong(body: [Length]), 
-                                  [Debby], 
-                                  [Rhinoceros], 
-                                  [1900kg], 
-                                  [390cm], 
-                                  [Fluffy], 
-                                  [Tiger], 
-                                  [115kg], 
-                                  [310cm], 
-                                  [Sleepy], 
-                                  [Dolphin], 
-                                  [150kg], 
-                                  [180cm]), 
-                       columns: 4), 
-                 parbreak() })
diff --git a/test/out/compute/data-04.out b/test/out/compute/data-04.out
deleted file mode 100644
--- a/test/out/compute/data-04.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/data-05.out b/test/out/compute/data-05.out
deleted file mode 100644
--- a/test/out/compute/data-05.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/data-06.out b/test/out/compute/data-06.out
deleted file mode 100644
--- a/test/out/compute/data-06.out
+++ /dev/null
@@ -1,106 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compute/data-06.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compute/data-06.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compute/data-06.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compute/data-06.typ"
-    ( line 3 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "data")))
-       (FuncCall
-          (Ident (Identifier "json"))
-          [ NormalArg (Literal (String "/assets/files/zoo.json")) ]))
-, SoftBreak
-, Code
-    "test/typ/compute/data-06.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "len")) (Ident (Identifier "data")))
-              [])
-       , NormalArg (Literal (Int 3))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/data-06.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FieldAccess
-              (Ident (Identifier "name"))
-              (FuncCall
-                 (FieldAccess (Ident (Identifier "at")) (Ident (Identifier "data")))
-                 [ NormalArg (Literal (Int 0)) ]))
-       , NormalArg (Literal (String "Debby"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/data-06.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FieldAccess
-              (Ident (Identifier "weight"))
-              (FuncCall
-                 (FieldAccess (Ident (Identifier "at")) (Ident (Identifier "data")))
-                 [ NormalArg (Literal (Int 2)) ]))
-       , NormalArg (Literal (Int 150))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compute/data-07.out b/test/out/compute/data-07.out
deleted file mode 100644
--- a/test/out/compute/data-07.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/data-08.out b/test/out/compute/data-08.out
deleted file mode 100644
--- a/test/out/compute/data-08.out
+++ /dev/null
@@ -1,202 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compute/data-08.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compute/data-08.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compute/data-08.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compute/data-08.typ"
-    ( line 3 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "data")))
-       (FuncCall
-          (Ident (Identifier "toml"))
-          [ NormalArg (Literal (String "/assets/files/toml-types.toml"))
-          ]))
-, SoftBreak
-, Code
-    "test/typ/compute/data-08.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FieldAccess
-              (Ident (Identifier "string")) (Ident (Identifier "data")))
-       , NormalArg (Literal (String "wonderful"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/data-08.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FieldAccess
-              (Ident (Identifier "integer")) (Ident (Identifier "data")))
-       , NormalArg (Literal (Int 42))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/data-08.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FieldAccess
-              (Ident (Identifier "float")) (Ident (Identifier "data")))
-       , NormalArg (Literal (Float 3.14))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/data-08.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FieldAccess
-              (Ident (Identifier "boolean")) (Ident (Identifier "data")))
-       , NormalArg (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/data-08.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FieldAccess
-              (Ident (Identifier "date_time")) (Ident (Identifier "data")))
-       , NormalArg (Literal (String "2023-02-01T15:38:57Z"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/data-08.typ"
-    ( line 9 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FieldAccess
-              (Ident (Identifier "array")) (Ident (Identifier "data")))
-       , NormalArg
-           (Array
-              [ Reg (Literal (Int 1))
-              , Reg (Literal (String "string"))
-              , Reg (Literal (Float 3.0))
-              , Reg (Literal (Boolean False))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/data-08.typ"
-    ( line 10 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FieldAccess
-              (Ident (Identifier "inline_table")) (Ident (Identifier "data")))
-       , NormalArg
-           (Dict
-              [ Reg ( Literal (String "first") , Literal (String "amazing") )
-              , Reg ( Literal (String "second") , Literal (String "greater") )
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/data-08.typ"
-    ( line 11 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FieldAccess
-              (Ident (Identifier "element"))
-              (FieldAccess
-                 (Ident (Identifier "table")) (Ident (Identifier "data"))))
-       , NormalArg (Literal (Int 5))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/data-08.typ"
-    ( line 12 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FieldAccess
-              (Ident (Identifier "others"))
-              (FieldAccess
-                 (Ident (Identifier "table")) (Ident (Identifier "data"))))
-       , NormalArg
-           (Array
-              [ Reg (Literal (Boolean False))
-              , Reg (Literal (String "indeed"))
-              , Reg (Literal (Int 7))
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compute/data-09.out b/test/out/compute/data-09.out
deleted file mode 100644
--- a/test/out/compute/data-09.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/data-10.out b/test/out/compute/data-10.out
deleted file mode 100644
--- a/test/out/compute/data-10.out
+++ /dev/null
@@ -1,209 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compute/data-10.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compute/data-10.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compute/data-10.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compute/data-10.typ"
-    ( line 3 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "data")))
-       (FuncCall
-          (Ident (Identifier "yaml"))
-          [ NormalArg (Literal (String "/assets/files/yaml-types.yaml"))
-          ]))
-, SoftBreak
-, Code
-    "test/typ/compute/data-10.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "len")) (Ident (Identifier "data")))
-              [])
-       , NormalArg (Literal (Int 7))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/data-10.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FieldAccess
-              (Ident (Identifier "null_key")) (Ident (Identifier "data")))
-       , NormalArg (Array [ Reg (Literal None) , Reg (Literal None) ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/data-10.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FieldAccess
-              (Ident (Identifier "string")) (Ident (Identifier "data")))
-       , NormalArg (Literal (String "text"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/data-10.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FieldAccess
-              (Ident (Identifier "integer")) (Ident (Identifier "data")))
-       , NormalArg (Literal (Int 5))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/data-10.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FieldAccess
-              (Ident (Identifier "float")) (Ident (Identifier "data")))
-       , NormalArg (Literal (Float 1.12))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/data-10.typ"
-    ( line 9 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FieldAccess
-              (Ident (Identifier "mapping")) (Ident (Identifier "data")))
-       , NormalArg
-           (Dict
-              [ Reg ( Literal (String "1") , Literal (String "one") )
-              , Reg ( Literal (String "2") , Literal (String "two") )
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/data-10.typ"
-    ( line 10 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FieldAccess
-              (Ident (Identifier "seq")) (Ident (Identifier "data")))
-       , NormalArg
-           (Array
-              [ Reg (Literal (Int 1))
-              , Reg (Literal (Int 2))
-              , Reg (Literal (Int 3))
-              , Reg (Literal (Int 4))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/data-10.typ"
-    ( line 11 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FieldAccess
-              (Ident (Identifier "bool")) (Ident (Identifier "data")))
-       , NormalArg (Literal (Boolean False))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/data-10.typ"
-    ( line 12 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "contains"))
-                 (FuncCall
-                    (FieldAccess
-                       (Ident (Identifier "keys")) (Ident (Identifier "data")))
-                    []))
-              [ NormalArg (Literal (String "true")) ])
-       , NormalArg (Literal (Boolean False))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [❌(]), 
-                 text(body: [8]), 
-                 text(body: [ /= ]), 
-                 text(body: [7]), 
-                 text(body: [)]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [❌(]), 
-                 text(body: [true]), 
-                 text(body: [ /= ]), 
-                 text(body: [false]), 
-                 text(body: [)]), 
-                 parbreak() })
diff --git a/test/out/compute/data-11.out b/test/out/compute/data-11.out
deleted file mode 100644
--- a/test/out/compute/data-11.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/data-12.out b/test/out/compute/data-12.out
deleted file mode 100644
--- a/test/out/compute/data-12.out
+++ /dev/null
@@ -1,137 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compute/data-12.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compute/data-12.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compute/data-12.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compute/data-12.typ"
-    ( line 3 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "data")))
-       (FuncCall
-          (Ident (Identifier "xml"))
-          [ NormalArg (Literal (String "/assets/files/data.xml")) ]))
-, SoftBreak
-, Code
-    "test/typ/compute/data-12.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "data"))
-       , NormalArg
-           (Array
-              [ Reg
-                  (Dict
-                     [ Reg ( Ident (Identifier "tag") , Literal (String "data") )
-                     , Reg ( Ident (Identifier "attrs") , Dict [] )
-                     , Reg
-                         ( Ident (Identifier "children")
-                         , Array
-                             [ Reg (Literal (String "\n  "))
-                             , Reg
-                                 (Dict
-                                    [ Reg ( Ident (Identifier "tag") , Literal (String "hello") )
-                                    , Reg
-                                        ( Ident (Identifier "attrs")
-                                        , Dict
-                                            [ Reg
-                                                ( Ident (Identifier "name")
-                                                , Literal (String "hi")
-                                                )
-                                            ]
-                                        )
-                                    , Reg
-                                        ( Ident (Identifier "children")
-                                        , Array [ Reg (Literal (String "1")) ]
-                                        )
-                                    ])
-                             , Reg (Literal (String "\n  "))
-                             , Reg
-                                 (Dict
-                                    [ Reg ( Ident (Identifier "tag") , Literal (String "data") )
-                                    , Reg ( Ident (Identifier "attrs") , Dict [] )
-                                    , Reg
-                                        ( Ident (Identifier "children")
-                                        , Array
-                                            [ Reg (Literal (String "\n    "))
-                                            , Reg
-                                                (Dict
-                                                   [ Reg
-                                                       ( Ident (Identifier "tag")
-                                                       , Literal (String "hello")
-                                                       )
-                                                   , Reg ( Ident (Identifier "attrs") , Dict [] )
-                                                   , Reg
-                                                       ( Ident (Identifier "children")
-                                                       , Array [ Reg (Literal (String "World")) ]
-                                                       )
-                                                   ])
-                                            , Reg (Literal (String "\n    "))
-                                            , Reg
-                                                (Dict
-                                                   [ Reg
-                                                       ( Ident (Identifier "tag")
-                                                       , Literal (String "hello")
-                                                       )
-                                                   , Reg ( Ident (Identifier "attrs") , Dict [] )
-                                                   , Reg
-                                                       ( Ident (Identifier "children")
-                                                       , Array [ Reg (Literal (String "World")) ]
-                                                       )
-                                                   ])
-                                            , Reg (Literal (String "\n  "))
-                                            ]
-                                        )
-                                    ])
-                             , Reg (Literal (String "\n"))
-                             ]
-                         )
-                     ])
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compute/data-13.out b/test/out/compute/data-13.out
deleted file mode 100644
--- a/test/out/compute/data-13.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/foundations-00.out b/test/out/compute/foundations-00.out
deleted file mode 100644
--- a/test/out/compute/foundations-00.out
+++ /dev/null
@@ -1,88 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compute/foundations-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compute/foundations-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compute/foundations-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/compute/foundations-00.typ"
-    ( line 2 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "type")) [ NormalArg (Literal (Int 1)) ])
-       , NormalArg (Literal (String "integer"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/foundations-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "type"))
-              [ NormalArg (Ident (Identifier "ltr")) ])
-       , NormalArg (Literal (String "direction"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/foundations-00.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "type"))
-              [ NormalArg (Divided (Literal (Int 10)) (Literal (Int 3))) ])
-       , NormalArg (Literal (String "float"))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compute/foundations-01.out b/test/out/compute/foundations-01.out
deleted file mode 100644
--- a/test/out/compute/foundations-01.out
+++ /dev/null
@@ -1,80 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compute/foundations-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compute/foundations-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compute/foundations-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/compute/foundations-01.typ"
-    ( line 2 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "repr"))
-              [ NormalArg (Ident (Identifier "ltr")) ])
-       , NormalArg (Literal (String "ltr"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/foundations-01.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "repr"))
-              [ NormalArg
-                  (Array
-                     [ Reg (Literal (Int 1))
-                     , Reg (Literal (Int 2))
-                     , Reg (Literal (Boolean False))
-                     ])
-              ])
-       , NormalArg (Literal (String "(1, 2, false)"))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compute/foundations-02.out b/test/out/compute/foundations-02.out
deleted file mode 100644
--- a/test/out/compute/foundations-02.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/foundations-03.out b/test/out/compute/foundations-03.out
deleted file mode 100644
--- a/test/out/compute/foundations-03.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/foundations-04.out b/test/out/compute/foundations-04.out
deleted file mode 100644
--- a/test/out/compute/foundations-04.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/foundations-05.out b/test/out/compute/foundations-05.out
deleted file mode 100644
--- a/test/out/compute/foundations-05.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/foundations-06.out b/test/out/compute/foundations-06.out
deleted file mode 100644
--- a/test/out/compute/foundations-06.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/foundations-07.out b/test/out/compute/foundations-07.out
deleted file mode 100644
--- a/test/out/compute/foundations-07.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/foundations-08.out b/test/out/compute/foundations-08.out
deleted file mode 100644
--- a/test/out/compute/foundations-08.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/foundations-09.out b/test/out/compute/foundations-09.out
deleted file mode 100644
--- a/test/out/compute/foundations-09.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/foundations-10.out b/test/out/compute/foundations-10.out
deleted file mode 100644
--- a/test/out/compute/foundations-10.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/foundations-11.out b/test/out/compute/foundations-11.out
deleted file mode 100644
--- a/test/out/compute/foundations-11.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/foundations-12.out b/test/out/compute/foundations-12.out
deleted file mode 100644
--- a/test/out/compute/foundations-12.out
+++ /dev/null
@@ -1,74 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compute/foundations-12.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compute/foundations-12.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compute/foundations-12.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compute/foundations-12.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "assert"))
-       [ NormalArg (GreaterThan (Literal (Int 5)) (Literal (Int 3))) ])
-, SoftBreak
-, Code
-    "test/typ/compute/foundations-12.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (FieldAccess
-          (Ident (Identifier "eq")) (Ident (Identifier "assert")))
-       [ NormalArg (Literal (Int 15)) , NormalArg (Literal (Int 15)) ])
-, SoftBreak
-, Code
-    "test/typ/compute/foundations-12.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (FieldAccess
-          (Ident (Identifier "ne")) (Ident (Identifier "assert")))
-       [ NormalArg (Literal (Int 10)) , NormalArg (Literal (Int 12)) ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak() })
diff --git a/test/out/compute/foundations-13.out b/test/out/compute/foundations-13.out
deleted file mode 100644
--- a/test/out/compute/foundations-13.out
+++ /dev/null
@@ -1,89 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compute/foundations-13.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compute/foundations-13.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compute/foundations-13.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/compute/foundations-13.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "type")) [ NormalArg (Literal (Int 1)) ])
-       , NormalArg (Literal (String "integer"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/foundations-13.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "type"))
-              [ NormalArg (Ident (Identifier "ltr")) ])
-       , NormalArg (Literal (String "direction"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/compute/foundations-13.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "type"))
-              [ NormalArg (Divided (Literal (Int 10)) (Literal (Int 3))) ])
-       , NormalArg (Literal (String "float"))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/compute/foundations-14.out b/test/out/compute/foundations-14.out
deleted file mode 100644
--- a/test/out/compute/foundations-14.out
+++ /dev/null
@@ -1,56 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compute/foundations-14.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compute/foundations-14.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compute/foundations-14.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/compute/foundations-14.typ"
-    ( line 2 , column 2 )
-    (FuncCall
-       (Ident (Identifier "eval"))
-       [ NormalArg
-           (Plus (Literal (String "[_Hello")) (Literal (String " World!_]")))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 emph(body: text(body: [Hello World!])), 
-                 parbreak() })
diff --git a/test/out/compute/foundations-15.out b/test/out/compute/foundations-15.out
deleted file mode 100644
--- a/test/out/compute/foundations-15.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/foundations-16.out b/test/out/compute/foundations-16.out
deleted file mode 100644
--- a/test/out/compute/foundations-16.out
+++ /dev/null
@@ -1,84 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/compute/foundations-16.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/compute/foundations-16.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/compute/foundations-16.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/compute/foundations-16.typ"
-    ( line 2 , column 2 )
-    (Show
-       (Just (Ident (Identifier "raw")))
-       (FuncExpr
-          [ NormalParam (Identifier "it") ]
-          (FuncCall
-             (Ident (Identifier "text"))
-             [ KeyValArg (Identifier "font") (Literal (String "PT Sans"))
-             , NormalArg
-                 (FuncCall
-                    (Ident (Identifier "eval"))
-                    [ NormalArg
-                        (Plus
-                           (Plus
-                              (Literal (String "["))
-                              (FieldAccess
-                                 (Ident (Identifier "text")) (Ident (Identifier "it"))))
-                           (Literal (String "]")))
-                    ])
-             ])))
-, ParBreak
-, Text "Interacting"
-, SoftBreak
-, RawBlock "" "#set text(blue)\nBlue #move(dy: -0.15em)[\127754]\n"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [Interacting
-]), 
-                 text(body: { text(body: [
-Blue ], 
-                                   color: rgb(0%,45%,85%,100%)), 
-                              move(body: text(body: [🌊], 
-                                              color: rgb(0%,45%,85%,100%)), 
-                                   dy: -0.15em), 
-                              parbreak() }, 
-                      font: "PT Sans"), 
-                 parbreak() })
diff --git a/test/out/compute/foundations-17.out b/test/out/compute/foundations-17.out
deleted file mode 100644
--- a/test/out/compute/foundations-17.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/foundations-18.out b/test/out/compute/foundations-18.out
deleted file mode 100644
--- a/test/out/compute/foundations-18.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/foundations-19.out b/test/out/compute/foundations-19.out
deleted file mode 100644
--- a/test/out/compute/foundations-19.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/foundations-20.out b/test/out/compute/foundations-20.out
deleted file mode 100644
--- a/test/out/compute/foundations-20.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/foundations-21.out b/test/out/compute/foundations-21.out
deleted file mode 100644
--- a/test/out/compute/foundations-21.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/compute/foundations-22.out b/test/out/compute/foundations-22.out
deleted file mode 100644
--- a/test/out/compute/foundations-22.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/layout/align-00.out b/test/out/layout/align-00.out
deleted file mode 100644
--- a/test/out/layout/align-00.out
+++ /dev/null
@@ -1,165 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/align-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/align-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/align-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/layout/align-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 100.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/layout/align-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "stack"))
-       [ KeyValArg (Identifier "dir") (Ident (Identifier "ltr"))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "align"))
-              [ NormalArg (Ident (Identifier "left"))
-              , NormalArg
-                  (FuncCall
-                     (Ident (Identifier "square"))
-                     [ KeyValArg (Identifier "size") (Literal (Numeric 15.0 Pt))
-                     , KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
-                     ])
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "align"))
-              [ NormalArg (Ident (Identifier "center"))
-              , NormalArg
-                  (FuncCall
-                     (Ident (Identifier "square"))
-                     [ KeyValArg (Identifier "size") (Literal (Numeric 20.0 Pt))
-                     , KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
-                     ])
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "align"))
-              [ NormalArg (Ident (Identifier "right"))
-              , NormalArg
-                  (FuncCall
-                     (Ident (Identifier "square"))
-                     [ KeyValArg (Identifier "size") (Literal (Numeric 15.0 Pt))
-                     , KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
-                     ])
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/align-00.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "align"))
-       [ NormalArg
-           (Plus (Ident (Identifier "center")) (Ident (Identifier "horizon")))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
-              , KeyValArg (Identifier "height") (Literal (Numeric 10.0 Pt))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/align-00.typ"
-    ( line 9 , column 2 )
-    (FuncCall
-       (Ident (Identifier "align"))
-       [ NormalArg (Ident (Identifier "bottom"))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "stack"))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "align"))
-                     [ NormalArg (Ident (Identifier "center"))
-                     , NormalArg
-                         (FuncCall
-                            (Ident (Identifier "rect"))
-                            [ KeyValArg (Identifier "fill") (Ident (Identifier "green"))
-                            , KeyValArg (Identifier "height") (Literal (Numeric 10.0 Pt))
-                            ])
-                     ])
-              , NormalArg
-                  (FuncCall
-                     (Ident (Identifier "rect"))
-                     [ KeyValArg (Identifier "fill") (Ident (Identifier "red"))
-                     , KeyValArg (Identifier "height") (Literal (Numeric 10.0 Pt))
-                     , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
-                     ])
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 stack(children: (align(alignment: left, 
-                                        body: square(fill: rgb(13%,61%,67%,100%), 
-                                                     size: 15.0pt)), 
-                                  align(alignment: center, 
-                                        body: square(fill: rgb(13%,61%,67%,100%), 
-                                                     size: 20.0pt)), 
-                                  align(alignment: right, 
-                                        body: square(fill: rgb(13%,61%,67%,100%), 
-                                                     size: 15.0pt))), 
-                       dir: ltr), 
-                 text(body: [
-]), 
-                 align(alignment: Axes(center, horizon), 
-                       body: rect(fill: rgb(13%,61%,67%,100%), 
-                                  height: 10.0pt)), 
-                 text(body: [
-]), 
-                 align(alignment: bottom, 
-                       body: stack(children: (align(alignment: center, 
-                                                    body: rect(fill: rgb(18%,80%,25%,100%), 
-                                                               height: 10.0pt)), 
-                                              rect(fill: rgb(100%,25%,21%,100%), 
-                                                   height: 10.0pt, 
-                                                   width: 100%)))), 
-                 parbreak() })
diff --git a/test/out/layout/align-01.out b/test/out/layout/align-01.out
deleted file mode 100644
--- a/test/out/layout/align-01.out
+++ /dev/null
@@ -1,70 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/align-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/align-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/align-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/align-01.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "align"))
-       [ NormalArg (Ident (Identifier "center"))
-       , BlockArg
-           [ SoftBreak
-           , Text "Lorem"
-           , Space
-           , Text "Ipsum"
-           , ParBreak
-           , Text "Dolor"
-           , ParBreak
-           ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 align(alignment: center, 
-                       body: { text(body: [
-Lorem Ipsum]), 
-                               parbreak(), 
-                               text(body: [Dolor]), 
-                               parbreak() }), 
-                 parbreak() })
diff --git a/test/out/layout/align-02.out b/test/out/layout/align-02.out
deleted file mode 100644
--- a/test/out/layout/align-02.out
+++ /dev/null
@@ -1,134 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/align-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/align-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/align-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/align-02.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "rotate"))
-       [ NormalArg (Negated (Literal (Numeric 30.0 Deg)))
-       , KeyValArg
-           (Identifier "origin")
-           (Plus (Ident (Identifier "end")) (Ident (Identifier "horizon")))
-       , BlockArg [ Text "Hello" ]
-       ])
-, ParBreak
-, Code
-    "test/typ/layout/align-02.typ"
-    ( line 5 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "lang") (Literal (String "de")) ])
-, SoftBreak
-, Code
-    "test/typ/layout/align-02.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "align"))
-       [ NormalArg (Ident (Identifier "start"))
-       , BlockArg [ Text "Start" ]
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/align-02.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "align"))
-       [ NormalArg (Ident (Identifier "end"))
-       , BlockArg [ Text "Ende" ]
-       ])
-, ParBreak
-, Code
-    "test/typ/layout/align-02.typ"
-    ( line 9 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "lang") (Literal (String "ar")) ])
-, SoftBreak
-, Code
-    "test/typ/layout/align-02.typ"
-    ( line 10 , column 2 )
-    (FuncCall
-       (Ident (Identifier "align"))
-       [ NormalArg (Ident (Identifier "start"))
-       , BlockArg [ Text "\1610\1576\1583\1571" ]
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/align-02.typ"
-    ( line 11 , column 2 )
-    (FuncCall
-       (Ident (Identifier "align"))
-       [ NormalArg (Ident (Identifier "end"))
-       , BlockArg [ Text "\1606\1607\1575\1610\1577" ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 rotate(angle: -30.0deg, 
-                        body: text(body: [Hello]), 
-                        origin: Axes(end, horizon)), 
-                 parbreak(), 
-                 text(body: [
-], lang: "de"), 
-                 align(alignment: start, 
-                       body: text(body: [Start], 
-                                  lang: "de")), 
-                 text(body: [
-], lang: "de"), 
-                 align(alignment: end, 
-                       body: text(body: [Ende], 
-                                  lang: "de")), 
-                 parbreak(), 
-                 text(body: [
-], lang: "ar"), 
-                 align(alignment: start, 
-                       body: text(body: [يبدأ], 
-                                  lang: "ar")), 
-                 text(body: [
-], lang: "ar"), 
-                 align(alignment: end, 
-                       body: text(body: [نهاية], 
-                                  lang: "ar")), 
-                 parbreak() })
diff --git a/test/out/layout/align-03.out b/test/out/layout/align-03.out
deleted file mode 100644
--- a/test/out/layout/align-03.out
+++ /dev/null
@@ -1,96 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/align-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/align-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/align-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/align-03.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "type"))
-              [ NormalArg (Ident (Identifier "center")) ])
-       , NormalArg (Literal (String "alignment"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/align-03.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "type"))
-              [ NormalArg (Ident (Identifier "horizon")) ])
-       , NormalArg (Literal (String "alignment"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/align-03.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "type"))
-              [ NormalArg
-                  (Plus (Ident (Identifier "center")) (Ident (Identifier "horizon")))
-              ])
-       , NormalArg (Literal (String "2d alignment"))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [❌(]), 
-                 text(body: [alignment]), 
-                 text(body: [ /= ]), 
-                 text(body: ["2d alignment"]), 
-                 text(body: [)]), 
-                 parbreak() })
diff --git a/test/out/layout/align-04.out b/test/out/layout/align-04.out
deleted file mode 100644
--- a/test/out/layout/align-04.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/layout/align-05.out b/test/out/layout/align-05.out
deleted file mode 100644
--- a/test/out/layout/align-05.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/layout/block-sizing-00.out b/test/out/layout/block-sizing-00.out
deleted file mode 100644
--- a/test/out/layout/block-sizing-00.out
+++ /dev/null
@@ -1,118 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/block-sizing-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/block-sizing-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/block-sizing-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/layout/block-sizing-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 100.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/layout/block-sizing-00.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "align"))
-       [ NormalArg (Ident (Identifier "center")) ])
-, ParBreak
-, Code
-    "test/typ/layout/block-sizing-00.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 10)) ])
-, SoftBreak
-, Code
-    "test/typ/layout/block-sizing-00.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "block"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 80.0 Percent))
-       , KeyValArg (Identifier "height") (Literal (Numeric 60.0 Pt))
-       , KeyValArg (Identifier "fill") (Ident (Identifier "aqua"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/block-sizing-00.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 6)) ])
-, SoftBreak
-, Code
-    "test/typ/layout/block-sizing-00.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "block"))
-       [ KeyValArg (Identifier "breakable") (Literal (Boolean False))
-       , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
-       , KeyValArg (Identifier "inset") (Literal (Numeric 4.0 Pt))
-       , KeyValArg (Identifier "fill") (Ident (Identifier "aqua"))
-       , NormalArg
-           (Plus
-              (FuncCall
-                 (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 8)) ])
-              (FuncCall (Ident (Identifier "colbreak")) []))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do]), 
-                 text(body: [
-]), 
-                 block(fill: rgb(49%,85%,100%,100%), 
-                       height: 60.0pt, 
-                       width: 80%), 
-                 text(body: [
-]), 
-                 text(body: [Lorem ipsum dolor sit amet, consectetur]), 
-                 text(body: [
-]), 
-                 block(body: { [Lorem ipsum dolor sit amet, consectetur adipiscing elit,], 
-                               colbreak() }, 
-                       breakable: false, 
-                       fill: rgb(49%,85%,100%,100%), 
-                       inset: 4.0pt, 
-                       width: 100%), 
-                 parbreak() })
diff --git a/test/out/layout/block-sizing-01.out b/test/out/layout/block-sizing-01.out
deleted file mode 100644
--- a/test/out/layout/block-sizing-01.out
+++ /dev/null
@@ -1,112 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/block-sizing-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/block-sizing-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/block-sizing-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, SoftBreak
-, Code
-    "test/typ/layout/block-sizing-01.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 120.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/layout/block-sizing-01.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "block"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 60.0 Pt))
-       , KeyValArg (Identifier "height") (Literal (Numeric 80.0 Pt))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "layout"))
-              [ NormalArg
-                  (FuncExpr
-                     [ NormalParam (Identifier "size") ]
-                     (Block
-                        (Content
-                           [ SoftBreak
-                           , Text "This"
-                           , Space
-                           , Text "block"
-                           , Space
-                           , Text "has"
-                           , Space
-                           , Text "a"
-                           , Space
-                           , Text "width"
-                           , Space
-                           , Text "of"
-                           , Space
-                           , Code
-                               "test/typ/layout/block-sizing-01.typ"
-                               ( line 6 , column 30 )
-                               (FieldAccess
-                                  (Ident (Identifier "width")) (Ident (Identifier "size")))
-                           , Space
-                           , Text "and"
-                           , Space
-                           , Text "height"
-                           , Space
-                           , Text "of"
-                           , Space
-                           , Code
-                               "test/typ/layout/block-sizing-01.typ"
-                               ( line 6 , column 56 )
-                               (FieldAccess
-                                  (Ident (Identifier "height")) (Ident (Identifier "size")))
-                           , ParBreak
-                           ])))
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 block(body: layout(func: ), 
-                       height: 80.0pt, 
-                       width: 60.0pt), 
-                 parbreak() })
diff --git a/test/out/layout/block-spacing-00.out b/test/out/layout/block-spacing-00.out
deleted file mode 100644
--- a/test/out/layout/block-spacing-00.out
+++ /dev/null
@@ -1,73 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/block-spacing-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/block-spacing-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/block-spacing-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/layout/block-spacing-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "block"))
-       [ KeyValArg (Identifier "spacing") (Literal (Numeric 10.0 Pt)) ])
-, SoftBreak
-, Text "Hello"
-, ParBreak
-, Text "There"
-, ParBreak
-, Code
-    "test/typ/layout/block-spacing-00.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "block"))
-       [ KeyValArg (Identifier "spacing") (Literal (Numeric 20.0 Pt))
-       , BlockArg [ Text "Further" , Space , Text "down" ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-Hello]), 
-                 parbreak(), 
-                 text(body: [There]), 
-                 parbreak(), 
-                 block(body: text(body: [Further down]), 
-                       spacing: 20.0pt), 
-                 parbreak() })
diff --git a/test/out/layout/clip-00.out b/test/out/layout/clip-00.out
deleted file mode 100644
--- a/test/out/layout/clip-00.out
+++ /dev/null
@@ -1,125 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/clip-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/clip-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/clip-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "Hello"
-, Space
-, Code
-    "test/typ/layout/clip-00.typ"
-    ( line 3 , column 8 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 1.0 Em))
-       , KeyValArg (Identifier "height") (Literal (Numeric 1.0 Em))
-       , KeyValArg (Identifier "clip") (Literal (Boolean False))
-       , BlockArg
-           [ Code
-               "test/typ/layout/clip-00.typ"
-               ( line 3 , column 51 )
-               (FuncCall
-                  (Ident (Identifier "rect"))
-                  [ KeyValArg (Identifier "width") (Literal (Numeric 3.0 Em))
-                  , KeyValArg (Identifier "height") (Literal (Numeric 3.0 Em))
-                  , KeyValArg (Identifier "fill") (Ident (Identifier "red"))
-                  ])
-           ]
-       ])
-, SoftBreak
-, Text "world"
-, Space
-, Text "1"
-, ParBreak
-, Text "Space"
-, ParBreak
-, Text "Hello"
-, Space
-, Code
-    "test/typ/layout/clip-00.typ"
-    ( line 8 , column 8 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 1.0 Em))
-       , KeyValArg (Identifier "height") (Literal (Numeric 1.0 Em))
-       , KeyValArg (Identifier "clip") (Literal (Boolean True))
-       , BlockArg
-           [ Code
-               "test/typ/layout/clip-00.typ"
-               ( line 8 , column 50 )
-               (FuncCall
-                  (Ident (Identifier "rect"))
-                  [ KeyValArg (Identifier "width") (Literal (Numeric 3.0 Em))
-                  , KeyValArg (Identifier "height") (Literal (Numeric 3.0 Em))
-                  , KeyValArg (Identifier "fill") (Ident (Identifier "red"))
-                  ])
-           ]
-       ])
-, Space
-, SoftBreak
-, Text "world"
-, Space
-, Text "2"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [Hello ]), 
-                 box(body: rect(fill: rgb(100%,25%,21%,100%), 
-                                height: 3.0em, 
-                                width: 3.0em), 
-                     clip: false, 
-                     height: 1.0em, 
-                     width: 1.0em), 
-                 text(body: [
-world 1]), 
-                 parbreak(), 
-                 text(body: [Space]), 
-                 parbreak(), 
-                 text(body: [Hello ]), 
-                 box(body: rect(fill: rgb(100%,25%,21%,100%), 
-                                height: 3.0em, 
-                                width: 3.0em), 
-                     clip: true, 
-                     height: 1.0em, 
-                     width: 1.0em), 
-                 text(body: [ 
-world 2]), 
-                 parbreak() })
diff --git a/test/out/layout/clip-01.out b/test/out/layout/clip-01.out
deleted file mode 100644
--- a/test/out/layout/clip-01.out
+++ /dev/null
@@ -1,151 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/clip-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/clip-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/clip-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/clip-01.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "block"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 5.0 Em))
-       , KeyValArg (Identifier "height") (Literal (Numeric 2.0 Em))
-       , KeyValArg (Identifier "clip") (Literal (Boolean False))
-       , KeyValArg
-           (Identifier "stroke")
-           (Plus (Literal (Numeric 1.0 Pt)) (Ident (Identifier "black")))
-       , BlockArg
-           [ SoftBreak
-           , Text "But,"
-           , Space
-           , Text "soft!"
-           , Space
-           , Text "what"
-           , Space
-           , Text "light"
-           , Space
-           , Text "through"
-           , Space
-           , ParBreak
-           ]
-       ])
-, ParBreak
-, Code
-    "test/typ/layout/clip-01.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 2.0 Em)) ])
-, ParBreak
-, Code
-    "test/typ/layout/clip-01.typ"
-    ( line 9 , column 2 )
-    (FuncCall
-       (Ident (Identifier "block"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 5.0 Em))
-       , KeyValArg (Identifier "height") (Literal (Numeric 2.0 Em))
-       , KeyValArg (Identifier "clip") (Literal (Boolean True))
-       , KeyValArg
-           (Identifier "stroke")
-           (Plus (Literal (Numeric 1.0 Pt)) (Ident (Identifier "black")))
-       , BlockArg
-           [ SoftBreak
-           , Text "But,"
-           , Space
-           , Text "soft!"
-           , Space
-           , Text "what"
-           , Space
-           , Text "light"
-           , Space
-           , Text "through"
-           , Space
-           , Text "yonder"
-           , Space
-           , Text "window"
-           , Space
-           , Text "breaks?"
-           , Space
-           , Text "It"
-           , Space
-           , Text "is"
-           , Space
-           , Text "the"
-           , Space
-           , Text "east,"
-           , Space
-           , Text "and"
-           , Space
-           , Text "Juliet"
-           , SoftBreak
-           , Text "is"
-           , Space
-           , Text "the"
-           , Space
-           , Text "sun"
-           , Text "."
-           , ParBreak
-           ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 block(body: { text(body: [
-But, soft! what light through ]), 
-                               parbreak() }, 
-                       clip: false, 
-                       height: 2.0em, 
-                       stroke: (thickness: 1.0pt,
-                                color: rgb(0%,0%,0%,100%)), 
-                       width: 5.0em), 
-                 parbreak(), 
-                 v(amount: 2.0em), 
-                 parbreak(), 
-                 block(body: { text(body: [
-But, soft! what light through yonder window breaks? It is the east, and Juliet
-is the sun.]), 
-                               parbreak() }, 
-                       clip: true, 
-                       height: 2.0em, 
-                       stroke: (thickness: 1.0pt,
-                                color: rgb(0%,0%,0%,100%)), 
-                       width: 5.0em), 
-                 parbreak() })
diff --git a/test/out/layout/clip-02.out b/test/out/layout/clip-02.out
deleted file mode 100644
--- a/test/out/layout/clip-02.out
+++ /dev/null
@@ -1,102 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/clip-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/clip-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/clip-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "Emoji"
-, Text ":"
-, Space
-, Code
-    "test/typ/layout/clip-02.typ"
-    ( line 3 , column 9 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 0.5 Em))
-       , KeyValArg
-           (Identifier "stroke")
-           (Plus (Literal (Numeric 1.0 Pt)) (Ident (Identifier "black")))
-       , BlockArg
-           [ Text "\128042,"
-           , Space
-           , Text "\127755,"
-           , Space
-           , Text "\127966"
-           ]
-       ])
-, ParBreak
-, Text "Emoji"
-, Text ":"
-, Space
-, Code
-    "test/typ/layout/clip-02.typ"
-    ( line 5 , column 9 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 0.5 Em))
-       , KeyValArg (Identifier "clip") (Literal (Boolean True))
-       , KeyValArg
-           (Identifier "stroke")
-           (Plus (Literal (Numeric 1.0 Pt)) (Ident (Identifier "black")))
-       , BlockArg
-           [ Text "\128042,"
-           , Space
-           , Text "\127755,"
-           , Space
-           , Text "\127966"
-           ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [Emoji: ]), 
-                 box(body: text(body: [🐪, 🌋, 🏞]), 
-                     height: 0.5em, 
-                     stroke: (thickness: 1.0pt,
-                              color: rgb(0%,0%,0%,100%))), 
-                 parbreak(), 
-                 text(body: [Emoji: ]), 
-                 box(body: text(body: [🐪, 🌋, 🏞]), 
-                     clip: true, 
-                     height: 0.5em, 
-                     stroke: (thickness: 1.0pt,
-                              color: rgb(0%,0%,0%,100%))), 
-                 parbreak() })
diff --git a/test/out/layout/clip-03.out b/test/out/layout/clip-03.out
deleted file mode 100644
--- a/test/out/layout/clip-03.out
+++ /dev/null
@@ -1,120 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/clip-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/clip-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/clip-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, SoftBreak
-, Code
-    "test/typ/layout/clip-03.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 60.0 Pt)) ])
-, ParBreak
-, Text "First!"
-, ParBreak
-, Code
-    "test/typ/layout/clip-03.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "block"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 4.0 Em))
-       , KeyValArg (Identifier "clip") (Literal (Boolean True))
-       , KeyValArg
-           (Identifier "stroke")
-           (Plus (Literal (Numeric 1.0 Pt)) (Ident (Identifier "black")))
-       , BlockArg
-           [ SoftBreak
-           , Text "But,"
-           , Space
-           , Text "soft!"
-           , Space
-           , Text "what"
-           , Space
-           , Text "light"
-           , Space
-           , Text "through"
-           , Space
-           , Text "yonder"
-           , Space
-           , Text "window"
-           , Space
-           , Text "breaks?"
-           , Space
-           , Text "It"
-           , Space
-           , Text "is"
-           , Space
-           , Text "the"
-           , Space
-           , Text "east,"
-           , Space
-           , Text "and"
-           , Space
-           , Text "Juliet"
-           , SoftBreak
-           , Text "is"
-           , Space
-           , Text "the"
-           , Space
-           , Text "sun"
-           , Text "."
-           , ParBreak
-           ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [First!]), 
-                 parbreak(), 
-                 block(body: { text(body: [
-But, soft! what light through yonder window breaks? It is the east, and Juliet
-is the sun.]), 
-                               parbreak() }, 
-                       clip: true, 
-                       height: 4.0em, 
-                       stroke: (thickness: 1.0pt,
-                                color: rgb(0%,0%,0%,100%))), 
-                 parbreak() })
diff --git a/test/out/layout/columns-00.out b/test/out/layout/columns-00.out
deleted file mode 100644
--- a/test/out/layout/columns-00.out
+++ /dev/null
@@ -1,177 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/columns-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/columns-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/columns-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/columns-00.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 3.25 Cm))
-       , KeyValArg (Identifier "width") (Literal (Numeric 7.05 Cm))
-       , KeyValArg (Identifier "columns") (Literal (Int 2))
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/columns-00.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "lang") (Literal (String "ar"))
-       , KeyValArg
-           (Identifier "font")
-           (Array
-              [ Reg (Literal (String "Noto Sans Arabic"))
-              , Reg (Literal (String "Linux Libertine"))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/columns-00.typ"
-    ( line 5 , column 2 )
-    (Set
-       (Ident (Identifier "columns"))
-       [ KeyValArg (Identifier "gutter") (Literal (Numeric 30.0 Pt)) ])
-, ParBreak
-, Code
-    "test/typ/layout/columns-00.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ KeyValArg (Identifier "fill") (Ident (Identifier "green"))
-       , KeyValArg (Identifier "height") (Literal (Numeric 8.0 Pt))
-       , KeyValArg (Identifier "width") (Literal (Numeric 6.0 Pt))
-       ])
-, Space
-, Text "\1608\1578\1581\1601\1610\1586"
-, SoftBreak
-, Text "\1575\1604\1593\1583\1610\1583"
-, Space
-, Text "\1605\1606"
-, Space
-, Text "\1575\1604\1578\1601\1575\1593\1604\1575\1578"
-, Space
-, Text "\1575\1604\1603\1610\1605\1610\1575\1574\1610\1577"
-, Text "."
-, Space
-, Text "("
-, Text "DNA)"
-, Space
-, Text "\1605\1606"
-, Space
-, Text "\1571\1607\1605"
-, Space
-, Text "\1575\1604\1571\1581\1605\1575\1590"
-, Space
-, Text "\1575\1604\1606\1608\1608\1610\1577"
-, Space
-, Text "\1575\1604\1578\1610"
-, Space
-, Text "\1578\1615\1588\1603\1616\1617\1604"
-, SoftBreak
-, Text "\1573\1604\1609"
-, Space
-, Text "\1580\1575\1606\1576"
-, Space
-, Text "\1603\1604"
-, Space
-, Text "\1605\1606"
-, Space
-, Text "\1575\1604\1576\1585\1608\1578\1610\1606\1575\1578"
-, Space
-, Text "\1608\1575\1604\1604\1610\1576\1610\1583\1575\1578"
-, Space
-, Text "\1608\1575\1604\1587\1603\1585\1610\1575\1578"
-, Space
-, Text "\1575\1604\1605\1578\1593\1583\1583\1577"
-, SoftBreak
-, Code
-    "test/typ/layout/columns-00.typ"
-    ( line 10 , column 2 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
-       , KeyValArg (Identifier "height") (Literal (Numeric 8.0 Pt))
-       , KeyValArg (Identifier "width") (Literal (Numeric 6.0 Pt))
-       ])
-, SoftBreak
-, Text "\1575\1604\1580\1586\1610\1574\1575\1578"
-, Space
-, Text "\1575\1604\1590\1582\1605\1577"
-, Space
-, Text "\1575\1604\1571\1585\1576\1593\1577"
-, Space
-, Text "\1575\1604\1590\1585\1608\1585\1610\1577"
-, Space
-, Text "\1604\1604\1581\1610\1575\1577"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-], 
-                      font: ("Noto Sans Arabic", 
-                             "Linux Libertine"), 
-                      lang: "ar"), 
-                 parbreak(), 
-                 box(fill: rgb(18%,80%,25%,100%), 
-                     height: 8.0pt, 
-                     width: 6.0pt), 
-                 text(body: [ وتحفيز
-العديد من التفاعلات الكيميائية. (DNA) من أهم الأحماض النووية التي تُشكِّل
-إلى جانب كل من البروتينات والليبيدات والسكريات المتعددة
-], 
-                      font: ("Noto Sans Arabic", 
-                             "Linux Libertine"), 
-                      lang: "ar"), 
-                 box(fill: rgb(13%,61%,67%,100%), 
-                     height: 8.0pt, 
-                     width: 6.0pt), 
-                 text(body: [
-الجزيئات الضخمة الأربعة الضرورية للحياة.], 
-                      font: ("Noto Sans Arabic", 
-                             "Linux Libertine"), 
-                      lang: "ar"), 
-                 parbreak() })
diff --git a/test/out/layout/columns-01.out b/test/out/layout/columns-01.out
deleted file mode 100644
--- a/test/out/layout/columns-01.out
+++ /dev/null
@@ -1,152 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/columns-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/columns-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/columns-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/columns-01.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal Auto) ])
-, ParBreak
-, Code
-    "test/typ/layout/columns-01.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "rect"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 180.0 Pt))
-       , KeyValArg (Identifier "height") (Literal (Numeric 100.0 Pt))
-       , KeyValArg (Identifier "inset") (Literal (Numeric 8.0 Pt))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "columns"))
-              [ NormalArg (Literal (Int 2))
-              , NormalArg
-                  (Block
-                     (Content
-                        [ SoftBreak
-                        , Text "A"
-                        , Space
-                        , Text "special"
-                        , Space
-                        , Text "plight"
-                        , Space
-                        , Text "has"
-                        , Space
-                        , Text "befallen"
-                        , Space
-                        , Text "our"
-                        , Space
-                        , Text "document"
-                        , Text "."
-                        , SoftBreak
-                        , Text "Columns"
-                        , Space
-                        , Text "in"
-                        , Space
-                        , Text "text"
-                        , Space
-                        , Text "boxes"
-                        , Space
-                        , Text "reigned"
-                        , Space
-                        , Text "down"
-                        , Space
-                        , Text "unto"
-                        , Space
-                        , Text "the"
-                        , Space
-                        , Text "soil"
-                        , SoftBreak
-                        , Text "to"
-                        , Space
-                        , Text "waste"
-                        , Space
-                        , Text "a"
-                        , Space
-                        , Text "year"
-                        , Quote '\''
-                        , Text "s"
-                        , Space
-                        , Text "crop"
-                        , Space
-                        , Text "of"
-                        , Space
-                        , Text "rich"
-                        , Space
-                        , Text "layouts"
-                        , Text "."
-                        , SoftBreak
-                        , Text "The"
-                        , Space
-                        , Text "columns"
-                        , Space
-                        , Text "at"
-                        , Space
-                        , Text "least"
-                        , Space
-                        , Text "were"
-                        , Space
-                        , Text "graciously"
-                        , Space
-                        , Text "balanced"
-                        , Text "."
-                        , ParBreak
-                        ]))
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 rect(body: columns(body: { text(body: [
-A special plight has befallen our document.
-Columns in text boxes reigned down unto the soil
-to waste a year’s crop of rich layouts.
-The columns at least were graciously balanced.]), 
-                                            parbreak() }, 
-                                    count: 2), 
-                      height: 100.0pt, 
-                      inset: 8.0pt, 
-                      width: 180.0pt), 
-                 parbreak() })
diff --git a/test/out/layout/columns-02.out b/test/out/layout/columns-02.out
deleted file mode 100644
--- a/test/out/layout/columns-02.out
+++ /dev/null
@@ -1,204 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/columns-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/columns-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/columns-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/columns-02.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 5.0 Cm))
-       , KeyValArg (Identifier "width") (Literal (Numeric 7.05 Cm))
-       , KeyValArg (Identifier "columns") (Literal (Int 2))
-       ])
-, ParBreak
-, Text "Lorem"
-, Space
-, Text "ipsum"
-, Space
-, Text "dolor"
-, Space
-, Text "sit"
-, Space
-, Text "amet"
-, Space
-, Text "is"
-, Space
-, Text "a"
-, Space
-, Text "common"
-, Space
-, Text "blind"
-, Space
-, Text "text"
-, SoftBreak
-, Text "and"
-, Space
-, Text "I"
-, Space
-, Text "again"
-, Space
-, Text "am"
-, Space
-, Text "in"
-, Space
-, Text "need"
-, Space
-, Text "of"
-, Space
-, Text "filling"
-, Space
-, Text "up"
-, Space
-, Text "this"
-, Space
-, Text "page"
-, SoftBreak
-, Code
-    "test/typ/layout/columns-02.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "align"))
-       [ NormalArg (Ident (Identifier "bottom"))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
-              , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
-              , KeyValArg (Identifier "height") (Literal (Numeric 12.0 Pt))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/columns-02.typ"
-    ( line 8 , column 2 )
-    (FuncCall (Ident (Identifier "colbreak")) [])
-, ParBreak
-, Text "so"
-, Space
-, Text "I"
-, Quote '\''
-, Text "m"
-, Space
-, Text "returning"
-, Space
-, Text "to"
-, Space
-, Text "this"
-, Space
-, Text "trusty"
-, Space
-, Text "tool"
-, Space
-, Text "of"
-, Space
-, Text "tangible"
-, Space
-, Text "terror"
-, Text "."
-, SoftBreak
-, Text "Sure,"
-, Space
-, Text "it"
-, Space
-, Text "is"
-, Space
-, Text "not"
-, Space
-, Text "the"
-, Space
-, Text "most"
-, Space
-, Text "creative"
-, Space
-, Text "way"
-, Space
-, Text "of"
-, Space
-, Text "filling"
-, Space
-, Text "up"
-, SoftBreak
-, Text "a"
-, Space
-, Text "page"
-, Space
-, Text "for"
-, Space
-, Text "a"
-, Space
-, Text "test"
-, Space
-, Text "but"
-, Space
-, Text "it"
-, Space
-, Text "does"
-, Space
-, Text "get"
-, Space
-, Text "the"
-, Space
-, Text "job"
-, Space
-, Text "done"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [Lorem ipsum dolor sit amet is a common blind text
-and I again am in need of filling up this page
-]), 
-                 align(alignment: bottom, 
-                       body: rect(fill: rgb(13%,61%,67%,100%), 
-                                  height: 12.0pt, 
-                                  width: 100%)), 
-                 text(body: [
-]), 
-                 colbreak(), 
-                 parbreak(), 
-                 text(body: [so I’m returning to this trusty tool of tangible terror.
-Sure, it is not the most creative way of filling up
-a page for a test but it does get the job done.]), 
-                 parbreak() })
diff --git a/test/out/layout/columns-03.out b/test/out/layout/columns-03.out
deleted file mode 100644
--- a/test/out/layout/columns-03.out
+++ /dev/null
@@ -1,98 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/columns-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/columns-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/columns-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/columns-03.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 2.5 Cm))
-       , KeyValArg (Identifier "width") (Literal (Numeric 7.05 Cm))
-       ])
-, ParBreak
-, Code
-    "test/typ/layout/columns-03.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "rect"))
-       [ KeyValArg (Identifier "inset") (Literal (Numeric 6.0 Pt))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "columns"))
-              [ NormalArg (Literal (Int 2))
-              , NormalArg
-                  (Block
-                     (Content
-                        [ SoftBreak
-                        , Text "ABC"
-                        , Space
-                        , HardBreak
-                        , Text "BCD"
-                        , SoftBreak
-                        , Code
-                            "test/typ/layout/columns-03.typ"
-                            ( line 8 , column 6 )
-                            (FuncCall (Ident (Identifier "colbreak")) [])
-                        , SoftBreak
-                        , Text "DEF"
-                        , ParBreak
-                        ]))
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 rect(body: columns(body: { text(body: [
-ABC ]), 
-                                            linebreak(), 
-                                            text(body: [BCD
-]), 
-                                            colbreak(), 
-                                            text(body: [
-DEF]), 
-                                            parbreak() }, 
-                                    count: 2), 
-                      inset: 6.0pt), 
-                 parbreak() })
diff --git a/test/out/layout/columns-04.out b/test/out/layout/columns-04.out
deleted file mode 100644
--- a/test/out/layout/columns-04.out
+++ /dev/null
@@ -1,119 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/columns-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/columns-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/columns-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/columns-04.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 3.25 Cm))
-       , KeyValArg (Identifier "width") (Literal (Numeric 7.05 Cm))
-       , KeyValArg (Identifier "columns") (Literal (Int 3))
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/columns-04.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "columns"))
-       [ KeyValArg (Identifier "gutter") (Literal (Numeric 30.0 Pt)) ])
-, ParBreak
-, Code
-    "test/typ/layout/columns-04.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "rect"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
-       , KeyValArg (Identifier "height") (Literal (Numeric 2.5 Cm))
-       , KeyValArg (Identifier "fill") (Ident (Identifier "green"))
-       ])
-, Space
-, Code
-    "test/typ/layout/columns-04.typ"
-    ( line 6 , column 49 )
-    (FuncCall (Ident (Identifier "parbreak")) [])
-, SoftBreak
-, Code
-    "test/typ/layout/columns-04.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "rect"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
-       , KeyValArg (Identifier "height") (Literal (Numeric 2.0 Cm))
-       , KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
-       ])
-, Space
-, Code
-    "test/typ/layout/columns-04.typ"
-    ( line 7 , column 49 )
-    (FuncCall (Ident (Identifier "parbreak")) [])
-, SoftBreak
-, Code
-    "test/typ/layout/columns-04.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "circle"))
-       [ KeyValArg (Identifier "fill") (Ident (Identifier "eastern")) ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 rect(fill: rgb(18%,80%,25%,100%), 
-                      height: 2.5cm, 
-                      width: 100%), 
-                 text(body: [ ]), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 rect(fill: rgb(13%,61%,67%,100%), 
-                      height: 2.0cm, 
-                      width: 100%), 
-                 text(body: [ ]), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 circle(fill: rgb(13%,61%,67%,100%)), 
-                 parbreak() })
diff --git a/test/out/layout/columns-05.out b/test/out/layout/columns-05.out
deleted file mode 100644
--- a/test/out/layout/columns-05.out
+++ /dev/null
@@ -1,102 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/columns-05.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/columns-05.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/columns-05.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/columns-05.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 1.0 Cm))
-       , KeyValArg (Identifier "width") (Literal (Numeric 7.05 Cm))
-       , KeyValArg (Identifier "columns") (Literal (Int 2))
-       ])
-, ParBreak
-, Text "A"
-, SoftBreak
-, Code
-    "test/typ/layout/columns-05.typ"
-    ( line 6 , column 2 )
-    (FuncCall (Ident (Identifier "colbreak")) [])
-, SoftBreak
-, Code
-    "test/typ/layout/columns-05.typ"
-    ( line 7 , column 2 )
-    (FuncCall (Ident (Identifier "colbreak")) [])
-, SoftBreak
-, Text "B"
-, SoftBreak
-, Code
-    "test/typ/layout/columns-05.typ"
-    ( line 9 , column 2 )
-    (FuncCall (Ident (Identifier "pagebreak")) [])
-, SoftBreak
-, Text "C"
-, SoftBreak
-, Code
-    "test/typ/layout/columns-05.typ"
-    ( line 11 , column 2 )
-    (FuncCall (Ident (Identifier "colbreak")) [])
-, SoftBreak
-, Text "D"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [A
-]), 
-                 colbreak(), 
-                 text(body: [
-]), 
-                 colbreak(), 
-                 text(body: [
-B
-]), 
-                 pagebreak(), 
-                 text(body: [
-C
-]), 
-                 colbreak(), 
-                 text(body: [
-D]), 
-                 parbreak() })
diff --git a/test/out/layout/columns-06.out b/test/out/layout/columns-06.out
deleted file mode 100644
--- a/test/out/layout/columns-06.out
+++ /dev/null
@@ -1,88 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/columns-06.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/columns-06.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/columns-06.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/columns-06.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 7.05 Cm))
-       , KeyValArg (Identifier "columns") (Literal (Int 2))
-       ])
-, ParBreak
-, Code
-    "test/typ/layout/columns-06.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "rect"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
-       , KeyValArg (Identifier "inset") (Literal (Numeric 3.0 Pt))
-       , BlockArg
-           [ Text "So"
-           , Space
-           , Text "there"
-           , Space
-           , Text "isn"
-           , Quote '\''
-           , Text "t"
-           , Space
-           , Text "anything"
-           , Space
-           , Text "in"
-           , Space
-           , Text "the"
-           , Space
-           , Text "second"
-           , Space
-           , Text "column?"
-           ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 rect(body: text(body: [So there isn’t anything in the second column?]), 
-                      inset: 3.0pt, 
-                      width: 100%), 
-                 parbreak() })
diff --git a/test/out/layout/columns-07.out b/test/out/layout/columns-07.out
deleted file mode 100644
--- a/test/out/layout/columns-07.out
+++ /dev/null
@@ -1,65 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/columns-07.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/columns-07.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/columns-07.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/columns-07.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal Auto)
-       , KeyValArg (Identifier "columns") (Literal (Int 3))
-       ])
-, ParBreak
-, Text "Arbitrary"
-, Space
-, Text "horizontal"
-, Space
-, Text "growth"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [Arbitrary horizontal growth.]), 
-                 parbreak() })
diff --git a/test/out/layout/columns-08.out b/test/out/layout/columns-08.out
deleted file mode 100644
--- a/test/out/layout/columns-08.out
+++ /dev/null
@@ -1,151 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/columns-08.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/columns-08.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/columns-08.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/columns-08.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 7.05 Cm))
-       , KeyValArg (Identifier "columns") (Literal (Int 2))
-       ])
-, ParBreak
-, Text "There"
-, Space
-, Text "can"
-, Space
-, Text "be"
-, Space
-, Text "as"
-, Space
-, Text "much"
-, Space
-, Text "content"
-, Space
-, Text "as"
-, Space
-, Text "you"
-, Space
-, Text "want"
-, Space
-, Text "in"
-, Space
-, Text "the"
-, Space
-, Text "left"
-, Space
-, Text "column"
-, SoftBreak
-, Text "and"
-, Space
-, Text "the"
-, Space
-, Text "document"
-, Space
-, Text "will"
-, Space
-, Text "grow"
-, Space
-, Text "with"
-, Space
-, Text "it"
-, Text "."
-, ParBreak
-, Code
-    "test/typ/layout/columns-08.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "rect"))
-       [ KeyValArg (Identifier "fill") (Ident (Identifier "green"))
-       , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
-       , KeyValArg (Identifier "height") (Literal (Numeric 30.0 Pt))
-       ])
-, ParBreak
-, Text "Only"
-, Space
-, Text "an"
-, Space
-, Text "explicit"
-, Space
-, Code
-    "test/typ/layout/columns-08.typ"
-    ( line 10 , column 19 )
-    (FuncCall (Ident (Identifier "colbreak")) [])
-, Space
-, RawInline "#colbreak()"
-, Space
-, Text "can"
-, Space
-, Text "put"
-, Space
-, Text "content"
-, Space
-, Text "in"
-, Space
-, Text "the"
-, SoftBreak
-, Text "second"
-, Space
-, Text "column"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [There can be as much content as you want in the left column
-and the document will grow with it.]), 
-                 parbreak(), 
-                 rect(fill: rgb(18%,80%,25%,100%), 
-                      height: 30.0pt, 
-                      width: 100%), 
-                 parbreak(), 
-                 text(body: [Only an explicit ]), 
-                 colbreak(), 
-                 text(body: [ ]), 
-                 raw(block: false, 
-                     lang: none, 
-                     text: "#colbreak()"), 
-                 text(body: [ can put content in the
-second column.]), 
-                 parbreak() })
diff --git a/test/out/layout/columns-09.out b/test/out/layout/columns-09.out
deleted file mode 100644
--- a/test/out/layout/columns-09.out
+++ /dev/null
@@ -1,75 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/columns-09.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/columns-09.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/columns-09.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/columns-09.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal Auto)
-       , KeyValArg (Identifier "width") (Literal (Numeric 7.05 Cm))
-       , KeyValArg (Identifier "columns") (Literal (Int 1))
-       ])
-, ParBreak
-, Text "This"
-, Space
-, Text "is"
-, Space
-, Text "a"
-, Space
-, Text "normal"
-, Space
-, Text "page"
-, Text "."
-, Space
-, Text "Very"
-, Space
-, Text "normal"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [This is a normal page. Very normal.]), 
-                 parbreak() })
diff --git a/test/out/layout/columns-10.out b/test/out/layout/columns-10.out
deleted file mode 100644
--- a/test/out/layout/columns-10.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/layout/container-00.out b/test/out/layout/container-00.out
deleted file mode 100644
--- a/test/out/layout/container-00.out
+++ /dev/null
@@ -1,85 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/container-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/container-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/container-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "A"
-, Space
-, Code
-    "test/typ/layout/container-00.typ"
-    ( line 3 , column 4 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ BlockArg [ Text "B" , Space , HardBreak , Text "C" ] ])
-, Space
-, Text "D"
-, Text "."
-, ParBreak
-, Comment
-, Text "Spaced"
-, Space
-, HardBreak
-, Code
-    "test/typ/layout/container-00.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 0.5 Cm)) ])
-, Space
-, HardBreak
-, Text "Apart"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [A ]), 
-                 box(body: { text(body: [B ]), 
-                             linebreak(), 
-                             text(body: [C]) }), 
-                 text(body: [ D.]), 
-                 parbreak(), 
-                 text(body: [Spaced ]), 
-                 linebreak(), 
-                 box(height: 0.5cm), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 text(body: [Apart]), 
-                 parbreak() })
diff --git a/test/out/layout/container-01.out b/test/out/layout/container-01.out
deleted file mode 100644
--- a/test/out/layout/container-01.out
+++ /dev/null
@@ -1,115 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/container-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/container-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/container-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/container-01.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 120.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/layout/container-01.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "block"))
-       [ KeyValArg (Identifier "spacing") (Literal (Numeric 0.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/layout/container-01.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "block"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 90.0 Pt))
-       , KeyValArg (Identifier "height") (Literal (Numeric 80.0 Pt))
-       , KeyValArg (Identifier "fill") (Ident (Identifier "red"))
-       , BlockArg
-           [ SoftBreak
-           , Code
-               "test/typ/layout/container-01.typ"
-               ( line 6 , column 4 )
-               (FuncCall
-                  (Ident (Identifier "block"))
-                  [ KeyValArg (Identifier "width") (Literal (Numeric 60.0 Percent))
-                  , KeyValArg (Identifier "height") (Literal (Numeric 60.0 Percent))
-                  , KeyValArg (Identifier "fill") (Ident (Identifier "green"))
-                  ])
-           , SoftBreak
-           , Code
-               "test/typ/layout/container-01.typ"
-               ( line 7 , column 4 )
-               (FuncCall
-                  (Ident (Identifier "block"))
-                  [ KeyValArg (Identifier "width") (Literal (Numeric 50.0 Percent))
-                  , KeyValArg (Identifier "height") (Literal (Numeric 60.0 Percent))
-                  , KeyValArg (Identifier "fill") (Ident (Identifier "blue"))
-                  ])
-           , ParBreak
-           ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 block(body: { text(body: [
-]), 
-                               block(fill: rgb(18%,80%,25%,100%), 
-                                     height: 60%, 
-                                     spacing: 0.0pt, 
-                                     width: 60%), 
-                               text(body: [
-]), 
-                               block(fill: rgb(0%,45%,85%,100%), 
-                                     height: 60%, 
-                                     spacing: 0.0pt, 
-                                     width: 50%), 
-                               parbreak() }, 
-                       fill: rgb(100%,25%,21%,100%), 
-                       height: 80.0pt, 
-                       spacing: 0.0pt, 
-                       width: 90.0pt), 
-                 parbreak() })
diff --git a/test/out/layout/container-02.out b/test/out/layout/container-02.out
deleted file mode 100644
--- a/test/out/layout/container-02.out
+++ /dev/null
@@ -1,92 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/container-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/container-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/container-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/container-02.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 50.0 Pt))
-       , KeyValArg (Identifier "height") (Literal (Numeric 50.0 Pt))
-       , KeyValArg (Identifier "fill") (Ident (Identifier "yellow"))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "path"))
-              [ KeyValArg (Identifier "fill") (Ident (Identifier "purple"))
-              , NormalArg
-                  (Array
-                     [ Reg (Literal (Numeric 0.0 Pt))
-                     , Reg (Literal (Numeric 0.0 Pt))
-                     ])
-              , NormalArg
-                  (Array
-                     [ Reg (Literal (Numeric 30.0 Pt))
-                     , Reg (Literal (Numeric 30.0 Pt))
-                     ])
-              , NormalArg
-                  (Array
-                     [ Reg (Literal (Numeric 0.0 Pt))
-                     , Reg (Literal (Numeric 30.0 Pt))
-                     ])
-              , NormalArg
-                  (Array
-                     [ Reg (Literal (Numeric 30.0 Pt))
-                     , Reg (Literal (Numeric 0.0 Pt))
-                     ])
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 box(body: path(fill: rgb(69%,5%,78%,100%), 
-                                vertices: ((0.0pt, 0.0pt), 
-                                           (30.0pt, 
-                                            30.0pt), 
-                                           (0.0pt, 30.0pt), 
-                                           (30.0pt, 
-                                            0.0pt))), 
-                     fill: rgb(100%,86%,0%,100%), 
-                     height: 50.0pt, 
-                     width: 50.0pt), 
-                 parbreak() })
diff --git a/test/out/layout/container-03.out b/test/out/layout/container-03.out
deleted file mode 100644
--- a/test/out/layout/container-03.out
+++ /dev/null
@@ -1,70 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/container-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/container-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/container-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "Hello"
-, Space
-, Code
-    "test/typ/layout/container-03.typ"
-    ( line 3 , column 8 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 1.0 Fr))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg (Identifier "height") (Literal (Numeric 0.7 Em))
-              , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
-              ])
-       ])
-, Space
-, Text "World"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [Hello ]), 
-                 box(body: rect(height: 0.7em, 
-                                width: 100%), 
-                     width: 1.0fr), 
-                 text(body: [ World]), 
-                 parbreak() })
diff --git a/test/out/layout/container-04.out b/test/out/layout/container-04.out
deleted file mode 100644
--- a/test/out/layout/container-04.out
+++ /dev/null
@@ -1,111 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/container-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/container-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/container-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, SoftBreak
-, Code
-    "test/typ/layout/container-04.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 60.0 Pt)) ])
-, ParBreak
-, Text "First!"
-, ParBreak
-, Code
-    "test/typ/layout/container-04.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "block"))
-       [ BlockArg
-           [ SoftBreak
-           , Text "But,"
-           , Space
-           , Text "soft!"
-           , Space
-           , Text "what"
-           , Space
-           , Text "light"
-           , Space
-           , Text "through"
-           , Space
-           , Text "yonder"
-           , Space
-           , Text "window"
-           , Space
-           , Text "breaks?"
-           , Space
-           , Text "It"
-           , Space
-           , Text "is"
-           , Space
-           , Text "the"
-           , Space
-           , Text "east,"
-           , Space
-           , Text "and"
-           , Space
-           , Text "Juliet"
-           , SoftBreak
-           , Text "is"
-           , Space
-           , Text "the"
-           , Space
-           , Text "sun"
-           , Text "."
-           , ParBreak
-           ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [First!]), 
-                 parbreak(), 
-                 block(body: { text(body: [
-But, soft! what light through yonder window breaks? It is the east, and Juliet
-is the sun.]), 
-                               parbreak() }), 
-                 parbreak() })
diff --git a/test/out/layout/container-fill-00.out b/test/out/layout/container-fill-00.out
deleted file mode 100644
--- a/test/out/layout/container-fill-00.out
+++ /dev/null
@@ -1,138 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/container-fill-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/container-fill-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/container-fill-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/layout/container-fill-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 100.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/layout/container-fill-00.typ"
-    ( line 3 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "words")))
-       (FuncCall
-          (FieldAccess
-             (Ident (Identifier "split"))
-             (FuncCall
-                (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 18)) ]))
-          []))
-, SoftBreak
-, Code
-    "test/typ/layout/container-fill-00.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "block"))
-       [ KeyValArg (Identifier "inset") (Literal (Numeric 8.0 Pt))
-       , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
-       , KeyValArg (Identifier "fill") (Ident (Identifier "aqua"))
-       , KeyValArg
-           (Identifier "stroke")
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "darken")) (Ident (Identifier "aqua")))
-              [ NormalArg (Literal (Numeric 30.0 Percent)) ])
-       , BlockArg
-           [ SoftBreak
-           , Code
-               "test/typ/layout/container-fill-00.typ"
-               ( line 5 , column 4 )
-               (FuncCall
-                  (FieldAccess
-                     (Ident (Identifier "join"))
-                     (FuncCall
-                        (FieldAccess
-                           (Ident (Identifier "slice")) (Ident (Identifier "words")))
-                        [ NormalArg (Literal (Int 0)) , NormalArg (Literal (Int 13)) ]))
-                  [ NormalArg (Literal (String " ")) ])
-           , SoftBreak
-           , Code
-               "test/typ/layout/container-fill-00.typ"
-               ( line 6 , column 4 )
-               (FuncCall
-                  (Ident (Identifier "box"))
-                  [ KeyValArg (Identifier "fill") (Ident (Identifier "teal"))
-                  , KeyValArg (Identifier "outset") (Literal (Numeric 2.0 Pt))
-                  , BlockArg [ Text "tempor" ]
-                  ])
-           , SoftBreak
-           , Code
-               "test/typ/layout/container-fill-00.typ"
-               ( line 7 , column 4 )
-               (FuncCall
-                  (FieldAccess
-                     (Ident (Identifier "join"))
-                     (FuncCall
-                        (FieldAccess
-                           (Ident (Identifier "slice")) (Ident (Identifier "words")))
-                        [ NormalArg (Literal (Int 13)) ]))
-                  [ NormalArg (Literal (String " ")) ])
-           , ParBreak
-           ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 block(body: { text(body: [
-]), 
-                               text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt]), 
-                               text(body: [
-]), 
-                               box(body: text(body: [tempor]), 
-                                   fill: rgb(22%,80%,80%,100%), 
-                                   outset: 2.0pt), 
-                               text(body: [
-]), 
-                               text(body: [ut labore et dolore magna]), 
-                               parbreak() }, 
-                       fill: rgb(49%,85%,100%,100%), 
-                       inset: 8.0pt, 
-                       stroke: rgb(34%,60%,70%,100%), 
-                       width: 100%), 
-                 parbreak() })
diff --git a/test/out/layout/enum-00.out b/test/out/layout/enum-00.out
deleted file mode 100644
--- a/test/out/layout/enum-00.out
+++ /dev/null
@@ -1,59 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/enum-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/enum-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/enum-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/layout/enum-00.typ"
-    ( line 2 , column 2 )
-    (FuncCall
-       (Ident (Identifier "enum"))
-       [ BlockArg [ Text "Embrace" ]
-       , BlockArg [ Text "Extend" ]
-       , BlockArg [ Text "Extinguish" ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 enum(children: (text(body: [Embrace]), 
-                                 text(body: [Extend]), 
-                                 text(body: [Extinguish]))), 
-                 parbreak() })
diff --git a/test/out/layout/enum-01.out b/test/out/layout/enum-01.out
deleted file mode 100644
--- a/test/out/layout/enum-01.out
+++ /dev/null
@@ -1,65 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/enum-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/enum-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/enum-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, EnumListItem (Just 0) [ Text "Before" , Space , Text "first!" ]
-, SoftBreak
-, EnumListItem
-    (Just 1)
-    [ Text "First"
-    , Text "."
-    , SoftBreak
-    , EnumListItem (Just 2) [ Text "Indented" , SoftBreak ]
-    ]
-, SoftBreak
-, EnumListItem Nothing [ Text "Second" , ParBreak ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 enum(children: (text(body: [Before first!]), 
-                                 { text(body: [First.
-]), 
-                                   enum(children: (text(body: [Indented
-])), 
-                                        start: 2) }, 
-                                 { text(body: [Second]), 
-                                   parbreak() }), 
-                      start: 0) })
diff --git a/test/out/layout/enum-02.out b/test/out/layout/enum-02.out
deleted file mode 100644
--- a/test/out/layout/enum-02.out
+++ /dev/null
@@ -1,82 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/enum-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/enum-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/enum-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/enum-02.typ"
-    ( line 3 , column 2 )
-    (For
-       (BasicBind (Just (Identifier "i")))
-       (FuncCall
-          (Ident (Identifier "range")) [ NormalArg (Literal (Int 5)) ])
-       (Block
-          (CodeBlock
-             [ Block
-                 (Content
-                    [ EnumListItem
-                        Nothing
-                        [ Code
-                            "test/typ/layout/enum-02.typ"
-                            ( line 4 , column 8 )
-                            (FuncCall
-                               (Ident (Identifier "numbering"))
-                               [ NormalArg (Literal (String "I"))
-                               , NormalArg (Plus (Literal (Int 1)) (Ident (Identifier "i")))
-                               ])
-                        ]
-                    ])
-             ])))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 enum(children: (numbering(numbering: "I", 
-                                           numbers: (1)))), 
-                 enum(children: (numbering(numbering: "I", 
-                                           numbers: (2)))), 
-                 enum(children: (numbering(numbering: "I", 
-                                           numbers: (3)))), 
-                 enum(children: (numbering(numbering: "I", 
-                                           numbers: (4)))), 
-                 enum(children: (numbering(numbering: "I", 
-                                           numbers: (5)))), 
-                 parbreak() })
diff --git a/test/out/layout/enum-03.out b/test/out/layout/enum-03.out
deleted file mode 100644
--- a/test/out/layout/enum-03.out
+++ /dev/null
@@ -1,56 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/enum-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/enum-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/enum-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, BulletListItem [ Text "Bullet" , Space , Text "List" ]
-, SoftBreak
-, EnumListItem Nothing [ Text "Numbered" , Space , Text "List" ]
-, SoftBreak
-, DescListItem [ Text "Term" ] [ Text "List" , ParBreak ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 list(children: (text(body: [Bullet List]))), 
-                 enum(children: (text(body: [Numbered List]))), 
-                 terms(children: ((text(body: [Term]), 
-                                   { text(body: [List]), 
-                                     parbreak() }))) })
diff --git a/test/out/layout/enum-04.out b/test/out/layout/enum-04.out
deleted file mode 100644
--- a/test/out/layout/enum-04.out
+++ /dev/null
@@ -1,75 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/enum-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/enum-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/enum-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "1"
-, Text "."
-, Text "2"
-, Space
-, HardBreak
-, Text "This"
-, Space
-, Text "is"
-, Space
-, Text "0"
-, Text "."
-, Space
-, HardBreak
-, Text "See"
-, Space
-, Text "0"
-, Text "."
-, Text "3"
-, Text "."
-, Space
-, HardBreak
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [1.2 ]), 
-                 linebreak(), 
-                 text(body: [This is 0. ]), 
-                 linebreak(), 
-                 text(body: [See 0.3. ]), 
-                 linebreak(), 
-                 parbreak() })
diff --git a/test/out/layout/enum-05.out b/test/out/layout/enum-05.out
deleted file mode 100644
--- a/test/out/layout/enum-05.out
+++ /dev/null
@@ -1,68 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/enum-05.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/enum-05.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/enum-05.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, EnumListItem Nothing []
-, SoftBreak
-, Text "Empty"
-, Space
-, HardBreak
-, Text "+Nope"
-, Space
-, HardBreak
-, Text "a"
-, Space
-, Text "+"
-, Space
-, Text "0"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 enum(children: ({  })), 
-                 text(body: [Empty ]), 
-                 linebreak(), 
-                 text(body: [+Nope ]), 
-                 linebreak(), 
-                 text(body: [a + 0.]), 
-                 parbreak() })
diff --git a/test/out/layout/enum-06.out b/test/out/layout/enum-06.out
deleted file mode 100644
--- a/test/out/layout/enum-06.out
+++ /dev/null
@@ -1,81 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/enum-06.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/enum-06.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/enum-06.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, EnumListItem (Just 1) [ Text "first" ]
-, SoftBreak
-, EnumListItem Nothing [ Text "second" ]
-, SoftBreak
-, EnumListItem (Just 5) [ Text "fifth" , SoftBreak ]
-, SoftBreak
-, Code
-    "test/typ/layout/enum-06.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "enum"))
-       [ NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "item")) (Ident (Identifier "enum")))
-              [ NormalArg (Literal (Int 1)) , BlockArg [ Text "First" ] ])
-       , NormalArg (Block (Content [ Text "Second" ]))
-       , NormalArg
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "item")) (Ident (Identifier "enum")))
-              [ NormalArg (Literal (Int 5)) , BlockArg [ Text "Fifth" ] ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 enum(children: (text(body: [first]), 
-                                 text(body: [second]), 
-                                 text(body: [fifth
-])), 
-                      start: 1), 
-                 enum(children: (enum.item(body: text(body: [First]), 
-                                           number: 1), 
-                                 text(body: [Second]), 
-                                 enum.item(body: text(body: [Fifth]), 
-                                           number: 5))), 
-                 parbreak() })
diff --git a/test/out/layout/enum-align-00.out b/test/out/layout/enum-align-00.out
deleted file mode 100644
--- a/test/out/layout/enum-align-00.out
+++ /dev/null
@@ -1,89 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/enum-align-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/enum-align-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/enum-align-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/enum-align-00.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "align"))
-       [ NormalArg (Ident (Identifier "horizon")) ])
-, ParBreak
-, EnumListItem
-    Nothing
-    [ Text "ABCDEF"
-    , HardBreak
-    , Text "GHIJKL"
-    , HardBreak
-    , Text "MNOPQR"
-    , SoftBreak
-    , EnumListItem
-        Nothing
-        [ Text "INNER"
-        , HardBreak
-        , Text "INNER"
-        , HardBreak
-        , Text "INNER"
-        ]
-    ]
-, SoftBreak
-, EnumListItem
-    Nothing [ Text "BACK" , HardBreak , Text "HERE" , ParBreak ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 enum(children: ({ text(body: [ABCDEF]), 
-                                   linebreak(), 
-                                   text(body: [GHIJKL]), 
-                                   linebreak(), 
-                                   text(body: [MNOPQR
-]), 
-                                   enum(children: ({ text(body: [INNER]), 
-                                                     linebreak(), 
-                                                     text(body: [INNER]), 
-                                                     linebreak(), 
-                                                     text(body: [INNER]) })) }, 
-                                 { text(body: [BACK]), 
-                                   linebreak(), 
-                                   text(body: [HERE]), 
-                                   parbreak() })) })
diff --git a/test/out/layout/enum-align-01.out b/test/out/layout/enum-align-01.out
deleted file mode 100644
--- a/test/out/layout/enum-align-01.out
+++ /dev/null
@@ -1,79 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/enum-align-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/enum-align-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/enum-align-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, EnumListItem (Just 1) [ Text "a" ]
-, SoftBreak
-, EnumListItem (Just 10) [ Text "b" ]
-, SoftBreak
-, EnumListItem (Just 100) [ Text "c" , SoftBreak ]
-, SoftBreak
-, Code
-    "test/typ/layout/enum-align-01.typ"
-    ( line 7 , column 2 )
-    (Set
-       (Ident (Identifier "enum"))
-       [ KeyValArg
-           (Identifier "number-align") (Ident (Identifier "start"))
-       ])
-, SoftBreak
-, EnumListItem (Just 1) [ Space , Text "a" ]
-, SoftBreak
-, EnumListItem (Just 8) [ Space , Text "b" ]
-, SoftBreak
-, EnumListItem (Just 16) [ Text "c" , ParBreak ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 enum(children: (text(body: [a]), 
-                                 text(body: [b]), 
-                                 text(body: [c
-])), 
-                      start: 1), 
-                 text(body: [
-]), 
-                 enum(children: (text(body: [ a]), 
-                                 text(body: [ b]), 
-                                 { text(body: [c]), 
-                                   parbreak() }), 
-                      number-align: start, 
-                      start: 1) })
diff --git a/test/out/layout/enum-align-02.out b/test/out/layout/enum-align-02.out
deleted file mode 100644
--- a/test/out/layout/enum-align-02.out
+++ /dev/null
@@ -1,97 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/enum-align-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/enum-align-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/enum-align-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/enum-align-02.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "align"))
-       [ NormalArg (Ident (Identifier "center")) ])
-, SoftBreak
-, Code
-    "test/typ/layout/enum-align-02.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "enum"))
-       [ KeyValArg
-           (Identifier "number-align") (Ident (Identifier "start"))
-       ])
-, ParBreak
-, EnumListItem (Just 4) [ Space , Text "c" ]
-, SoftBreak
-, EnumListItem (Just 8) [ Space , Text "d" ]
-, SoftBreak
-, EnumListItem
-    (Just 16)
-    [ Text "e"
-    , HardBreak
-    , Text "f"
-    , SoftBreak
-    , EnumListItem (Just 2) [ Space , Text "f" , HardBreak , Text "g" ]
-    , SoftBreak
-    , EnumListItem (Just 32) [ Text "g" ]
-    , SoftBreak
-    , EnumListItem (Just 64) [ Text "h" , ParBreak ]
-    ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 enum(children: (text(body: [ c]), 
-                                 text(body: [ d]), 
-                                 { text(body: [e]), 
-                                   linebreak(), 
-                                   text(body: [f
-]), 
-                                   enum(children: ({ text(body: [ f]), 
-                                                     linebreak(), 
-                                                     text(body: [g]) }, 
-                                                   text(body: [g]), 
-                                                   { text(body: [h]), 
-                                                     parbreak() }), 
-                                        number-align: start, 
-                                        start: 2) }), 
-                      number-align: start, 
-                      start: 4) })
diff --git a/test/out/layout/enum-align-03.out b/test/out/layout/enum-align-03.out
deleted file mode 100644
--- a/test/out/layout/enum-align-03.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/layout/enum-numbering-00.out b/test/out/layout/enum-numbering-00.out
deleted file mode 100644
--- a/test/out/layout/enum-numbering-00.out
+++ /dev/null
@@ -1,83 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/enum-numbering-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/enum-numbering-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/enum-numbering-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/enum-numbering-00.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "enum"))
-       [ KeyValArg (Identifier "numbering") (Literal (String "(1.a.*)"))
-       ])
-, SoftBreak
-, EnumListItem Nothing [ Text "First" ]
-, SoftBreak
-, EnumListItem
-    Nothing
-    [ Text "Second"
-    , SoftBreak
-    , EnumListItem
-        (Just 2)
-        [ Text "Nested"
-        , SoftBreak
-        , EnumListItem Nothing [ Text "Deep" ]
-        ]
-    ]
-, SoftBreak
-, EnumListItem Nothing [ Text "Normal" , ParBreak ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 enum(children: (text(body: [First]), 
-                                 { text(body: [Second
-]), 
-                                   enum(children: ({ text(body: [Nested
-]), 
-                                                     enum(children: (text(body: [Deep])), 
-                                                          numbering: "(1.a.*)") }), 
-                                        numbering: "(1.a.*)", 
-                                        start: 2) }, 
-                                 { text(body: [Normal]), 
-                                   parbreak() }), 
-                      numbering: "(1.a.*)") })
diff --git a/test/out/layout/enum-numbering-01.out b/test/out/layout/enum-numbering-01.out
deleted file mode 100644
--- a/test/out/layout/enum-numbering-01.out
+++ /dev/null
@@ -1,71 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/enum-numbering-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/enum-numbering-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/enum-numbering-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/enum-numbering-01.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "enum"))
-       [ KeyValArg (Identifier "numbering") (Literal (String "1.a."))
-       , KeyValArg (Identifier "full") (Literal (Boolean True))
-       ])
-, SoftBreak
-, EnumListItem
-    Nothing
-    [ Text "First"
-    , SoftBreak
-    , EnumListItem Nothing [ Text "Nested" , ParBreak ]
-    ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 enum(children: ({ text(body: [First
-]), 
-                                   enum(children: ({ text(body: [Nested]), 
-                                                     parbreak() }), 
-                                        full: true, 
-                                        numbering: "1.a.") }), 
-                      full: true, 
-                      numbering: "1.a.") })
diff --git a/test/out/layout/enum-numbering-02.out b/test/out/layout/enum-numbering-02.out
deleted file mode 100644
--- a/test/out/layout/enum-numbering-02.out
+++ /dev/null
@@ -1,102 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/enum-numbering-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/enum-numbering-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/enum-numbering-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/enum-numbering-02.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "enum"))
-       [ KeyValArg (Identifier "start") (Literal (Int 3))
-       , KeyValArg
-           (Identifier "spacing")
-           (Minus (Literal (Numeric 0.65 Em)) (Literal (Numeric 3.0 Pt)))
-       , KeyValArg (Identifier "tight") (Literal (Boolean False))
-       , KeyValArg
-           (Identifier "numbering")
-           (FuncExpr
-              [ NormalParam (Identifier "n") ]
-              (FuncCall
-                 (Ident (Identifier "text"))
-                 [ KeyValArg
-                     (Identifier "fill")
-                     (FuncCall
-                        (FieldAccess
-                           (Ident (Identifier "at"))
-                           (Array
-                              [ Reg (Ident (Identifier "red"))
-                              , Reg (Ident (Identifier "green"))
-                              , Reg (Ident (Identifier "blue"))
-                              ]))
-                        [ NormalArg
-                            (FuncCall
-                               (FieldAccess
-                                  (Ident (Identifier "rem")) (Ident (Identifier "calc")))
-                               [ NormalArg (Ident (Identifier "n"))
-                               , NormalArg (Literal (Int 3))
-                               ])
-                        ])
-                 , NormalArg
-                     (FuncCall
-                        (Ident (Identifier "numbering"))
-                        [ NormalArg (Literal (String "A"))
-                        , NormalArg (Ident (Identifier "n"))
-                        ])
-                 ]))
-       , NormalArg (Block (Content [ Text "Red" ]))
-       , NormalArg (Block (Content [ Text "Green" ]))
-       , NormalArg (Block (Content [ Text "Blue" ]))
-       , NormalArg (Block (Content [ Text "Red" ]))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 enum(children: (text(body: [Red]), 
-                                 text(body: [Green]), 
-                                 text(body: [Blue]), 
-                                 text(body: [Red])), 
-                      numbering: , 
-                      spacing: 0.65em + -3.0pt, 
-                      start: 3, 
-                      tight: false), 
-                 parbreak() })
diff --git a/test/out/layout/enum-numbering-03.out b/test/out/layout/enum-numbering-03.out
deleted file mode 100644
--- a/test/out/layout/enum-numbering-03.out
+++ /dev/null
@@ -1,80 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/enum-numbering-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/enum-numbering-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/enum-numbering-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/enum-numbering-03.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "enum"))
-       [ KeyValArg
-           (Identifier "numbering")
-           (FuncExpr
-              [ NormalParam (Identifier "n") ]
-              (FuncCall
-                 (Ident (Identifier "super"))
-                 [ BlockArg
-                     [ Code
-                         "test/typ/layout/enum-numbering-03.typ"
-                         ( line 3 , column 34 )
-                         (Ident (Identifier "n"))
-                     ]
-                 ]))
-       ])
-, SoftBreak
-, EnumListItem
-    Nothing
-    [ Text "A" , SoftBreak , EnumListItem Nothing [ Text "B" ] ]
-, SoftBreak
-, EnumListItem Nothing [ Text "C" , ParBreak ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 enum(children: ({ text(body: [A
-]), 
-                                   enum(children: (text(body: [B])), 
-                                        numbering: ) }, 
-                                 { text(body: [C]), 
-                                   parbreak() }), 
-                      numbering: ) })
diff --git a/test/out/layout/enum-numbering-04.out b/test/out/layout/enum-numbering-04.out
deleted file mode 100644
--- a/test/out/layout/enum-numbering-04.out
+++ /dev/null
@@ -1,117 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/enum-numbering-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/enum-numbering-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/enum-numbering-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/enum-numbering-04.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg
-           (Identifier "font") (Literal (String "New Computer Modern"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/enum-numbering-04.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "enum"))
-       [ KeyValArg
-           (Identifier "numbering")
-           (FuncExpr
-              [ SinkParam (Just (Identifier "args")) ]
-              (FuncCall
-                 (FieldAccess
-                    (Ident (Identifier "mat")) (Ident (Identifier "math")))
-                 [ NormalArg
-                     (FuncCall
-                        (FieldAccess
-                           (Ident (Identifier "pos")) (Ident (Identifier "args")))
-                        [])
-                 ]))
-       , KeyValArg (Identifier "full") (Literal (Boolean True))
-       ])
-, SoftBreak
-, EnumListItem
-    Nothing
-    [ Text "A"
-    , SoftBreak
-    , EnumListItem Nothing [ Text "B" ]
-    , SoftBreak
-    , EnumListItem
-        Nothing
-        [ Text "C" , SoftBreak , EnumListItem Nothing [ Text "D" ] ]
-    ]
-, SoftBreak
-, EnumListItem Nothing [ Text "E" ]
-, SoftBreak
-, EnumListItem Nothing [ Text "F" , ParBreak ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-], 
-                      font: "New Computer Modern"), 
-                 text(body: [
-], 
-                      font: "New Computer Modern"), 
-                 enum(children: ({ text(body: [A
-], 
-                                        font: "New Computer Modern"), 
-                                   enum(children: (text(body: [B], 
-                                                        font: "New Computer Modern"), 
-                                                   { text(body: [C
-], 
-                                                          font: "New Computer Modern"), 
-                                                     enum(children: (text(body: [D], 
-                                                                          font: "New Computer Modern")), 
-                                                          full: true, 
-                                                          numbering: ) }), 
-                                        full: true, 
-                                        numbering: ) }, 
-                                 text(body: [E], 
-                                      font: "New Computer Modern"), 
-                                 { text(body: [F], 
-                                        font: "New Computer Modern"), 
-                                   parbreak() }), 
-                      full: true, 
-                      numbering: ) })
diff --git a/test/out/layout/enum-numbering-05.out b/test/out/layout/enum-numbering-05.out
deleted file mode 100644
--- a/test/out/layout/enum-numbering-05.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/layout/enum-numbering-06.out b/test/out/layout/enum-numbering-06.out
deleted file mode 100644
--- a/test/out/layout/enum-numbering-06.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/layout/flow-orphan-00.out b/test/out/layout/flow-orphan-00.out
deleted file mode 100644
--- a/test/out/layout/flow-orphan-00.out
+++ /dev/null
@@ -1,84 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/flow-orphan-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/flow-orphan-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/flow-orphan-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/layout/flow-orphan-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 100.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/layout/flow-orphan-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 12)) ])
-, ParBreak
-, Heading 1 [ Text "Introduction" ]
-, Text "This"
-, Space
-, Text "is"
-, Space
-, Text "the"
-, Space
-, Text "start"
-, Space
-, Text "and"
-, Space
-, Text "it"
-, Space
-, Text "goes"
-, Space
-, Text "on"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor]), 
-                 parbreak(), 
-                 heading(body: text(body: [Introduction]), 
-                         level: 1), 
-                 text(body: [This is the start and it goes on.]), 
-                 parbreak() })
diff --git a/test/out/layout/flow-orphan-01.out b/test/out/layout/flow-orphan-01.out
deleted file mode 100644
--- a/test/out/layout/flow-orphan-01.out
+++ /dev/null
@@ -1,152 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/flow-orphan-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/flow-orphan-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/flow-orphan-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/layout/flow-orphan-01.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ NormalArg (Literal (String "a8"))
-       , KeyValArg (Identifier "height") (Literal (Numeric 140.0 Pt))
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/flow-orphan-01.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "weight") (Literal (Int 700)) ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/layout/flow-orphan-01.typ"
-    ( line 6 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ NormalArg (Ident (Identifier "blue")) ])
-, SoftBreak
-, Code
-    "test/typ/layout/flow-orphan-01.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 27)) ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/layout/flow-orphan-01.typ"
-    ( line 10 , column 2 )
-    (FuncCall
-       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 20)) ])
-, ParBreak
-, Comment
-, Comment
-, Code
-    "test/typ/layout/flow-orphan-01.typ"
-    ( line 14 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ NormalArg (Ident (Identifier "maroon")) ])
-, SoftBreak
-, Code
-    "test/typ/layout/flow-orphan-01.typ"
-    ( line 15 , column 2 )
-    (FuncCall
-       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 11)) ])
-, ParBreak
-, Code
-    "test/typ/layout/flow-orphan-01.typ"
-    ( line 17 , column 2 )
-    (FuncCall
-       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 13)) ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/layout/flow-orphan-01.typ"
-    ( line 20 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ NormalArg (Ident (Identifier "olive")) ])
-, SoftBreak
-, Code
-    "test/typ/layout/flow-orphan-01.typ"
-    ( line 21 , column 2 )
-    (FuncCall
-       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 10)) ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [
-], 
-                      color: rgb(0%,45%,85%,100%), 
-                      weight: 700), 
-                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation], 
-                      color: rgb(0%,45%,85%,100%), 
-                      weight: 700), 
-                 parbreak(), 
-                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut], 
-                      color: rgb(0%,45%,85%,100%), 
-                      weight: 700), 
-                 parbreak(), 
-                 text(body: [
-], 
-                      color: rgb(52%,7%,29%,100%), 
-                      weight: 700), 
-                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod], 
-                      color: rgb(52%,7%,29%,100%), 
-                      weight: 700), 
-                 parbreak(), 
-                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt], 
-                      color: rgb(52%,7%,29%,100%), 
-                      weight: 700), 
-                 parbreak(), 
-                 text(body: [
-], 
-                      color: rgb(23%,60%,43%,100%), 
-                      weight: 700), 
-                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do], 
-                      color: rgb(23%,60%,43%,100%), 
-                      weight: 700), 
-                 parbreak() })
diff --git a/test/out/layout/grid-1-00.out b/test/out/layout/grid-1-00.out
deleted file mode 100644
--- a/test/out/layout/grid-1-00.out
+++ /dev/null
@@ -1,230 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/grid-1-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/grid-1-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/grid-1-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/layout/grid-1-00.typ"
-    ( line 2 , column 2 )
-    (LetFunc
-       (Identifier "cell")
-       [ NormalParam (Identifier "width")
-       , NormalParam (Identifier "color")
-       ]
-       (FuncCall
-          (Ident (Identifier "rect"))
-          [ KeyValArg (Identifier "width") (Ident (Identifier "width"))
-          , KeyValArg (Identifier "height") (Literal (Numeric 2.0 Cm))
-          , KeyValArg (Identifier "fill") (Ident (Identifier "color"))
-          ]))
-, SoftBreak
-, Code
-    "test/typ/layout/grid-1-00.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Pt))
-       , KeyValArg (Identifier "height") (Literal (Numeric 140.0 Pt))
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/grid-1-00.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "grid"))
-       [ KeyValArg
-           (Identifier "columns")
-           (Array
-              [ Reg (Literal Auto)
-              , Reg (Literal (Numeric 1.0 Fr))
-              , Reg (Literal (Numeric 3.0 Fr))
-              , Reg (Literal (Numeric 0.25 Cm))
-              , Reg (Literal (Numeric 3.0 Percent))
-              , Reg
-                  (Plus (Literal (Numeric 2.0 Mm)) (Literal (Numeric 10.0 Percent)))
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "cell"))
-              [ NormalArg (Literal (Numeric 0.5 Cm))
-              , NormalArg
-                  (FuncCall
-                     (Ident (Identifier "rgb"))
-                     [ NormalArg (Literal (String "2a631a")) ])
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "cell"))
-              [ NormalArg (Literal (Numeric 100.0 Percent))
-              , NormalArg (Ident (Identifier "red"))
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "cell"))
-              [ NormalArg (Literal (Numeric 100.0 Percent))
-              , NormalArg (Ident (Identifier "green"))
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "cell"))
-              [ NormalArg (Literal (Numeric 100.0 Percent))
-              , NormalArg
-                  (FuncCall
-                     (Ident (Identifier "rgb"))
-                     [ NormalArg (Literal (String "ff0000")) ])
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "cell"))
-              [ NormalArg (Literal (Numeric 100.0 Percent))
-              , NormalArg
-                  (FuncCall
-                     (Ident (Identifier "rgb"))
-                     [ NormalArg (Literal (String "00ff00")) ])
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "cell"))
-              [ NormalArg (Literal (Numeric 80.0 Percent))
-              , NormalArg
-                  (FuncCall
-                     (Ident (Identifier "rgb"))
-                     [ NormalArg (Literal (String "00faf0")) ])
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "cell"))
-              [ NormalArg (Literal (Numeric 1.0 Cm))
-              , NormalArg
-                  (FuncCall
-                     (Ident (Identifier "rgb"))
-                     [ NormalArg (Literal (String "00ff00")) ])
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "cell"))
-              [ NormalArg (Literal (Numeric 0.5 Cm))
-              , NormalArg
-                  (FuncCall
-                     (Ident (Identifier "rgb"))
-                     [ NormalArg (Literal (String "2a631a")) ])
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "cell"))
-              [ NormalArg (Literal (Numeric 100.0 Percent))
-              , NormalArg (Ident (Identifier "red"))
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "cell"))
-              [ NormalArg (Literal (Numeric 100.0 Percent))
-              , NormalArg (Ident (Identifier "green"))
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "cell"))
-              [ NormalArg (Literal (Numeric 100.0 Percent))
-              , NormalArg
-                  (FuncCall
-                     (Ident (Identifier "rgb"))
-                     [ NormalArg (Literal (String "ff0000")) ])
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "cell"))
-              [ NormalArg (Literal (Numeric 100.0 Percent))
-              , NormalArg
-                  (FuncCall
-                     (Ident (Identifier "rgb"))
-                     [ NormalArg (Literal (String "00ff00")) ])
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 grid(children: (rect(fill: rgb(16%,38%,10%,100%), 
-                                      height: 2.0cm, 
-                                      width: 0.5cm), 
-                                 rect(fill: rgb(100%,25%,21%,100%), 
-                                      height: 2.0cm, 
-                                      width: 100%), 
-                                 rect(fill: rgb(18%,80%,25%,100%), 
-                                      height: 2.0cm, 
-                                      width: 100%), 
-                                 rect(fill: rgb(100%,0%,0%,100%), 
-                                      height: 2.0cm, 
-                                      width: 100%), 
-                                 rect(fill: rgb(0%,100%,0%,100%), 
-                                      height: 2.0cm, 
-                                      width: 100%), 
-                                 rect(fill: rgb(0%,98%,94%,100%), 
-                                      height: 2.0cm, 
-                                      width: 80%), 
-                                 rect(fill: rgb(0%,100%,0%,100%), 
-                                      height: 2.0cm, 
-                                      width: 1.0cm), 
-                                 rect(fill: rgb(16%,38%,10%,100%), 
-                                      height: 2.0cm, 
-                                      width: 0.5cm), 
-                                 rect(fill: rgb(100%,25%,21%,100%), 
-                                      height: 2.0cm, 
-                                      width: 100%), 
-                                 rect(fill: rgb(18%,80%,25%,100%), 
-                                      height: 2.0cm, 
-                                      width: 100%), 
-                                 rect(fill: rgb(100%,0%,0%,100%), 
-                                      height: 2.0cm, 
-                                      width: 100%), 
-                                 rect(fill: rgb(0%,100%,0%,100%), 
-                                      height: 2.0cm, 
-                                      width: 100%)), 
-                      columns: (auto, 
-                                1.0fr, 
-                                3.0fr, 
-                                0.25cm, 
-                                3%, 
-                                2.0mm + 10%)), 
-                 parbreak() })
diff --git a/test/out/layout/grid-1-01.out b/test/out/layout/grid-1-01.out
deleted file mode 100644
--- a/test/out/layout/grid-1-01.out
+++ /dev/null
@@ -1,106 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/grid-1-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/grid-1-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/grid-1-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/layout/grid-1-01.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "rect"))
-       [ KeyValArg (Identifier "inset") (Literal (Numeric 0.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/layout/grid-1-01.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "grid"))
-       [ KeyValArg
-           (Identifier "columns")
-           (Array
-              [ Reg (Literal Auto)
-              , Reg (Literal Auto)
-              , Reg (Literal (Numeric 40.0 Percent))
-              ])
-       , KeyValArg (Identifier "column-gutter") (Literal (Numeric 1.0 Fr))
-       , KeyValArg (Identifier "row-gutter") (Literal (Numeric 1.0 Fr))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
-              , BlockArg
-                  [ Text "dddaa" , Space , Text "aaa" , Space , Text "aaa" ]
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg (Identifier "fill") (Ident (Identifier "green"))
-              , BlockArg [ Text "ccc" ]
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg
-                  (Identifier "fill")
-                  (FuncCall
-                     (Ident (Identifier "rgb"))
-                     [ NormalArg (Literal (String "dddddd")) ])
-              , BlockArg [ Text "aaa" ]
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 grid(children: (rect(body: text(body: [dddaa aaa aaa]), 
-                                      fill: rgb(13%,61%,67%,100%), 
-                                      inset: 0.0pt), 
-                                 rect(body: text(body: [ccc]), 
-                                      fill: rgb(18%,80%,25%,100%), 
-                                      inset: 0.0pt), 
-                                 rect(body: text(body: [aaa]), 
-                                      fill: rgb(86%,86%,86%,100%), 
-                                      inset: 0.0pt)), 
-                      column-gutter: 1.0fr, 
-                      columns: (auto, auto, 40%), 
-                      row-gutter: 1.0fr), 
-                 parbreak() })
diff --git a/test/out/layout/grid-1-02.out b/test/out/layout/grid-1-02.out
deleted file mode 100644
--- a/test/out/layout/grid-1-02.out
+++ /dev/null
@@ -1,99 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/grid-1-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/grid-1-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/grid-1-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/layout/grid-1-02.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 3.0 Cm))
-       , KeyValArg (Identifier "margin") (Literal (Numeric 0.0 Pt))
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/grid-1-02.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "grid"))
-       [ KeyValArg
-           (Identifier "columns") (Array [ Reg (Literal (Numeric 1.0 Fr)) ])
-       , KeyValArg
-           (Identifier "rows")
-           (Array
-              [ Reg (Literal (Numeric 1.0 Fr))
-              , Reg (Literal Auto)
-              , Reg (Literal (Numeric 2.0 Fr))
-              ])
-       , NormalArg (Block (Content []))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "align"))
-              [ NormalArg (Ident (Identifier "center"))
-              , BlockArg
-                  [ Text "A"
-                  , Space
-                  , Text "bit"
-                  , Space
-                  , Text "more"
-                  , Space
-                  , Text "to"
-                  , Space
-                  , Text "the"
-                  , Space
-                  , Text "top"
-                  ]
-              ])
-       , NormalArg (Block (Content []))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 grid(children: ({  }, 
-                                 align(alignment: center, 
-                                       body: text(body: [A bit more to the top])), 
-                                 {  }), 
-                      columns: (1.0fr), 
-                      rows: (1.0fr, auto, 2.0fr)), 
-                 parbreak() })
diff --git a/test/out/layout/grid-2-00.out b/test/out/layout/grid-2-00.out
deleted file mode 100644
--- a/test/out/layout/grid-2-00.out
+++ /dev/null
@@ -1,165 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/grid-2-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/grid-2-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/grid-2-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/layout/grid-2-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 11.0 Cm))
-       , KeyValArg (Identifier "height") (Literal (Numeric 2.5 Cm))
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/grid-2-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "grid"))
-       [ KeyValArg (Identifier "columns") (Literal (Int 5))
-       , KeyValArg
-           (Identifier "column-gutter")
-           (Array
-              [ Reg (Literal (Numeric 2.0 Fr))
-              , Reg (Literal (Numeric 1.0 Fr))
-              , Reg (Literal (Numeric 1.0 Fr))
-              ])
-       , KeyValArg (Identifier "row-gutter") (Literal (Numeric 6.0 Pt))
-       , NormalArg (Block (Content [ Strong [ Text "Quarter" ] ]))
-       , NormalArg (Block (Content [ Text "Expenditure" ]))
-       , NormalArg
-           (Block (Content [ Text "External" , Space , Text "Revenue" ]))
-       , NormalArg
-           (Block (Content [ Text "Financial" , Space , Text "ROI" ]))
-       , NormalArg (Block (Content [ Emph [ Text "total" ] ]))
-       , NormalArg (Block (Content [ Strong [ Text "Q1" ] ]))
-       , NormalArg
-           (Block
-              (Content
-                 [ Text "173,472" , Text "." , Text "57" , Space , Text "$" ]))
-       , NormalArg
-           (Block
-              (Content
-                 [ Text "472,860" , Text "." , Text "91" , Space , Text "$" ]))
-       , NormalArg
-           (Block
-              (Content
-                 [ Text "51,286" , Text "." , Text "84" , Space , Text "$" ]))
-       , NormalArg
-           (Block
-              (Content
-                 [ Emph [ Text "350,675" , Text "." , Text "18" , Space , Text "$" ]
-                 ]))
-       , NormalArg (Block (Content [ Strong [ Text "Q2" ] ]))
-       , NormalArg
-           (Block
-              (Content
-                 [ Text "93,382" , Text "." , Text "12" , Space , Text "$" ]))
-       , NormalArg
-           (Block
-              (Content
-                 [ Text "439,382" , Text "." , Text "85" , Space , Text "$" ]))
-       , NormalArg
-           (Block
-              (Content
-                 [ Text "-"
-                 , Text "1,134"
-                 , Text "."
-                 , Text "30"
-                 , Space
-                 , Text "$"
-                 ]))
-       , NormalArg
-           (Block
-              (Content
-                 [ Emph [ Text "344,866" , Text "." , Text "43" , Space , Text "$" ]
-                 ]))
-       , NormalArg (Block (Content [ Strong [ Text "Q3" ] ]))
-       , NormalArg
-           (Block
-              (Content
-                 [ Text "96,421" , Text "." , Text "49" , Space , Text "$" ]))
-       , NormalArg
-           (Block
-              (Content
-                 [ Text "238,583" , Text "." , Text "54" , Space , Text "$" ]))
-       , NormalArg
-           (Block
-              (Content
-                 [ Text "3,497" , Text "." , Text "12" , Space , Text "$" ]))
-       , NormalArg
-           (Block
-              (Content
-                 [ Emph [ Text "145,659" , Text "." , Text "17" , Space , Text "$" ]
-                 ]))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 grid(children: (strong(body: text(body: [Quarter])), 
-                                 text(body: [Expenditure]), 
-                                 text(body: [External Revenue]), 
-                                 text(body: [Financial ROI]), 
-                                 emph(body: text(body: [total])), 
-                                 strong(body: text(body: [Q1])), 
-                                 text(body: [173,472.57 $]), 
-                                 text(body: [472,860.91 $]), 
-                                 text(body: [51,286.84 $]), 
-                                 emph(body: text(body: [350,675.18 $])), 
-                                 strong(body: text(body: [Q2])), 
-                                 text(body: [93,382.12 $]), 
-                                 text(body: [439,382.85 $]), 
-                                 text(body: [-1,134.30 $]), 
-                                 emph(body: text(body: [344,866.43 $])), 
-                                 strong(body: text(body: [Q3])), 
-                                 text(body: [96,421.49 $]), 
-                                 text(body: [238,583.54 $]), 
-                                 text(body: [3,497.12 $]), 
-                                 emph(body: text(body: [145,659.17 $]))), 
-                      column-gutter: (2.0fr, 
-                                      1.0fr, 
-                                      1.0fr), 
-                      columns: 5, 
-                      row-gutter: 6.0pt), 
-                 parbreak() })
diff --git a/test/out/layout/grid-3-00.out b/test/out/layout/grid-3-00.out
deleted file mode 100644
--- a/test/out/layout/grid-3-00.out
+++ /dev/null
@@ -1,130 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/grid-3-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/grid-3-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/grid-3-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/layout/grid-3-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 5.0 Cm))
-       , KeyValArg (Identifier "height") (Literal (Numeric 3.0 Cm))
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/grid-3-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "grid"))
-       [ KeyValArg (Identifier "columns") (Literal (Int 2))
-       , KeyValArg (Identifier "row-gutter") (Literal (Numeric 8.0 Pt))
-       , NormalArg
-           (Block
-              (Content
-                 [ Text "Lorem"
-                 , Space
-                 , Text "ipsum"
-                 , Space
-                 , Text "dolor"
-                 , Space
-                 , Text "sit"
-                 , Space
-                 , Text "amet"
-                 , Text "."
-                 , ParBreak
-                 , Text "Aenean"
-                 , Space
-                 , Text "commodo"
-                 , Space
-                 , Text "ligula"
-                 , Space
-                 , Text "eget"
-                 , Space
-                 , Text "dolor"
-                 , Text "."
-                 , Space
-                 , Text "Aenean"
-                 , Space
-                 , Text "massa"
-                 , Text "."
-                 , Space
-                 , Text "Penatibus"
-                 , Space
-                 , Text "et"
-                 , Space
-                 , Text "magnis"
-                 , Text "."
-                 ]))
-       , NormalArg
-           (Block
-              (Content
-                 [ Text "Text"
-                 , Space
-                 , Text "that"
-                 , Space
-                 , Text "is"
-                 , Space
-                 , Text "rather"
-                 , Space
-                 , Text "short"
-                 ]))
-       , NormalArg (Block (Content [ Text "Fireflies" ]))
-       , NormalArg (Block (Content [ Text "Critical" ]))
-       , NormalArg (Block (Content [ Text "Decorum" ]))
-       , NormalArg (Block (Content [ Text "Rampage" ]))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 grid(children: ({ text(body: [Lorem ipsum dolor sit amet.]), 
-                                   parbreak(), 
-                                   text(body: [Aenean commodo ligula eget dolor. Aenean massa. Penatibus et magnis.]) }, 
-                                 text(body: [Text that is rather short]), 
-                                 text(body: [Fireflies]), 
-                                 text(body: [Critical]), 
-                                 text(body: [Decorum]), 
-                                 text(body: [Rampage])), 
-                      columns: 2, 
-                      row-gutter: 8.0pt), 
-                 parbreak() })
diff --git a/test/out/layout/grid-3-01.out b/test/out/layout/grid-3-01.out
deleted file mode 100644
--- a/test/out/layout/grid-3-01.out
+++ /dev/null
@@ -1,136 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/grid-3-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/grid-3-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/grid-3-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/layout/grid-3-01.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 5.0 Cm))
-       , KeyValArg (Identifier "height") (Literal (Numeric 2.0 Cm))
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/grid-3-01.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "grid"))
-       [ KeyValArg
-           (Identifier "columns")
-           (Times
-              (Literal (Int 4)) (Array [ Reg (Literal (Numeric 1.0 Fr)) ]))
-       , KeyValArg (Identifier "row-gutter") (Literal (Numeric 10.0 Pt))
-       , KeyValArg
-           (Identifier "column-gutter")
-           (Array
-              [ Reg (Literal (Numeric 0.0 Pt))
-              , Reg (Literal (Numeric 10.0 Percent))
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "align"))
-              [ NormalArg (Ident (Identifier "top"))
-              , NormalArg
-                  (FuncCall
-                     (Ident (Identifier "image"))
-                     [ NormalArg (Literal (String "/assets/files/rhino.png")) ])
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "align"))
-              [ NormalArg (Ident (Identifier "top"))
-              , NormalArg
-                  (FuncCall
-                     (Ident (Identifier "rect"))
-                     [ KeyValArg (Identifier "inset") (Literal (Numeric 0.0 Pt))
-                     , KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
-                     , NormalArg
-                         (FuncCall
-                            (Ident (Identifier "align"))
-                            [ NormalArg (Ident (Identifier "right"))
-                            , BlockArg [ Text "LoL" ]
-                            ])
-                     ])
-              ])
-       , NormalArg (Block (Content [ Text "rofl" ]))
-       , NormalArg
-           (Times
-              (Block (Content [ HardBreak , Text "A" ])) (Literal (Int 3)))
-       , NormalArg
-           (Times
-              (Block (Content [ Text "Ha!" , HardBreak ])) (Literal (Int 3)))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 grid(children: (align(alignment: top, 
-                                       body: image(path: "/assets/files/rhino.png")), 
-                                 align(alignment: top, 
-                                       body: rect(body: align(alignment: right, 
-                                                              body: text(body: [LoL])), 
-                                                  fill: rgb(13%,61%,67%,100%), 
-                                                  inset: 0.0pt)), 
-                                 text(body: [rofl]), 
-                                 { linebreak(), 
-                                   text(body: [A]), 
-                                   linebreak(), 
-                                   text(body: [A]), 
-                                   linebreak(), 
-                                   text(body: [A]) }, 
-                                 { text(body: [Ha!]), 
-                                   linebreak(), 
-                                   text(body: [Ha!]), 
-                                   linebreak(), 
-                                   text(body: [Ha!]), 
-                                   linebreak() }), 
-                      column-gutter: (0.0pt, 10%), 
-                      columns: (1.0fr, 
-                                1.0fr, 
-                                1.0fr, 
-                                1.0fr), 
-                      row-gutter: 10.0pt), 
-                 parbreak() })
diff --git a/test/out/layout/grid-3-02.out b/test/out/layout/grid-3-02.out
deleted file mode 100644
--- a/test/out/layout/grid-3-02.out
+++ /dev/null
@@ -1,119 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/grid-3-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/grid-3-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/grid-3-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/grid-3-02.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 5.0 Cm))
-       , KeyValArg (Identifier "height") (Literal (Numeric 2.0 Cm))
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/grid-3-02.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "grid"))
-       [ KeyValArg
-           (Identifier "columns")
-           (Times
-              (Literal (Int 3)) (Array [ Reg (Literal (Numeric 1.0 Fr)) ]))
-       , KeyValArg (Identifier "row-gutter") (Literal (Numeric 8.0 Pt))
-       , KeyValArg
-           (Identifier "column-gutter")
-           (Array
-              [ Reg (Literal (Numeric 0.0 Pt))
-              , Reg (Literal (Numeric 10.0 Percent))
-              ])
-       , NormalArg (Block (Content [ Text "A" ]))
-       , NormalArg (Block (Content [ Text "B" ]))
-       , NormalArg (Block (Content [ Text "C" ]))
-       , NormalArg
-           (Times
-              (Block (Content [ Text "Ha!" , HardBreak ])) (Literal (Int 6)))
-       , NormalArg (Block (Content [ Text "rofl" ]))
-       , NormalArg
-           (Times
-              (Block (Content [ HardBreak , Text "A" ])) (Literal (Int 3)))
-       , NormalArg (Block (Content [ Text "hello" ]))
-       , NormalArg (Block (Content [ Text "darkness" ]))
-       , NormalArg (Block (Content [ Text "my" , Space , Text "old" ]))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 grid(children: (text(body: [A]), 
-                                 text(body: [B]), 
-                                 text(body: [C]), 
-                                 { text(body: [Ha!]), 
-                                   linebreak(), 
-                                   text(body: [Ha!]), 
-                                   linebreak(), 
-                                   text(body: [Ha!]), 
-                                   linebreak(), 
-                                   text(body: [Ha!]), 
-                                   linebreak(), 
-                                   text(body: [Ha!]), 
-                                   linebreak(), 
-                                   text(body: [Ha!]), 
-                                   linebreak() }, 
-                                 text(body: [rofl]), 
-                                 { linebreak(), 
-                                   text(body: [A]), 
-                                   linebreak(), 
-                                   text(body: [A]), 
-                                   linebreak(), 
-                                   text(body: [A]) }, 
-                                 text(body: [hello]), 
-                                 text(body: [darkness]), 
-                                 text(body: [my old])), 
-                      column-gutter: (0.0pt, 10%), 
-                      columns: (1.0fr, 
-                                1.0fr, 
-                                1.0fr), 
-                      row-gutter: 8.0pt), 
-                 parbreak() })
diff --git a/test/out/layout/grid-3-03.out b/test/out/layout/grid-3-03.out
deleted file mode 100644
--- a/test/out/layout/grid-3-03.out
+++ /dev/null
@@ -1,146 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/grid-3-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/grid-3-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/grid-3-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/grid-3-03.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 5.0 Cm))
-       , KeyValArg (Identifier "height") (Literal (Numeric 2.25 Cm))
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/grid-3-03.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "grid"))
-       [ KeyValArg
-           (Identifier "columns")
-           (Times
-              (Literal (Int 4)) (Array [ Reg (Literal (Numeric 1.0 Fr)) ]))
-       , KeyValArg (Identifier "row-gutter") (Literal (Numeric 10.0 Pt))
-       , KeyValArg
-           (Identifier "column-gutter")
-           (Array
-              [ Reg (Literal (Numeric 0.0 Pt))
-              , Reg (Literal (Numeric 10.0 Percent))
-              ])
-       , NormalArg (Block (Content [ Text "A" ]))
-       , NormalArg (Block (Content [ Text "B" ]))
-       , NormalArg (Block (Content [ Text "C" ]))
-       , NormalArg (Block (Content [ Text "D" ]))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "grid"))
-              [ KeyValArg (Identifier "columns") (Literal (Int 2))
-              , NormalArg (Block (Content [ Text "A" ]))
-              , NormalArg (Block (Content [ Text "B" ]))
-              , NormalArg
-                  (Times
-                     (Block (Content [ Text "C" , HardBreak ])) (Literal (Int 3)))
-              , NormalArg (Block (Content [ Text "D" ]))
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "align"))
-              [ NormalArg (Ident (Identifier "top"))
-              , NormalArg
-                  (FuncCall
-                     (Ident (Identifier "rect"))
-                     [ KeyValArg (Identifier "inset") (Literal (Numeric 0.0 Pt))
-                     , KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
-                     , NormalArg
-                         (FuncCall
-                            (Ident (Identifier "align"))
-                            [ NormalArg (Ident (Identifier "right"))
-                            , BlockArg [ Text "LoL" ]
-                            ])
-                     ])
-              ])
-       , NormalArg (Block (Content [ Text "rofl" ]))
-       , NormalArg
-           (Times
-              (Block (Content [ Text "E" , HardBreak ])) (Literal (Int 4)))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 grid(children: (text(body: [A]), 
-                                 text(body: [B]), 
-                                 text(body: [C]), 
-                                 text(body: [D]), 
-                                 grid(children: (text(body: [A]), 
-                                                 text(body: [B]), 
-                                                 { text(body: [C]), 
-                                                   linebreak(), 
-                                                   text(body: [C]), 
-                                                   linebreak(), 
-                                                   text(body: [C]), 
-                                                   linebreak() }, 
-                                                 text(body: [D])), 
-                                      columns: 2), 
-                                 align(alignment: top, 
-                                       body: rect(body: align(alignment: right, 
-                                                              body: text(body: [LoL])), 
-                                                  fill: rgb(13%,61%,67%,100%), 
-                                                  inset: 0.0pt)), 
-                                 text(body: [rofl]), 
-                                 { text(body: [E]), 
-                                   linebreak(), 
-                                   text(body: [E]), 
-                                   linebreak(), 
-                                   text(body: [E]), 
-                                   linebreak(), 
-                                   text(body: [E]), 
-                                   linebreak() }), 
-                      column-gutter: (0.0pt, 10%), 
-                      columns: (1.0fr, 
-                                1.0fr, 
-                                1.0fr, 
-                                1.0fr), 
-                      row-gutter: 10.0pt), 
-                 parbreak() })
diff --git a/test/out/layout/grid-4-00.out b/test/out/layout/grid-4-00.out
deleted file mode 100644
--- a/test/out/layout/grid-4-00.out
+++ /dev/null
@@ -1,93 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/grid-4-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/grid-4-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/grid-4-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/grid-4-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "grid"))
-       [ KeyValArg
-           (Identifier "columns")
-           (Array
-              [ Reg (Literal Auto) , Reg (Literal (Numeric 60.0 Percent)) ])
-       , KeyValArg
-           (Identifier "rows")
-           (Array [ Reg (Literal Auto) , Reg (Literal Auto) ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg (Identifier "width") (Literal (Numeric 50.0 Percent))
-              , KeyValArg (Identifier "height") (Literal (Numeric 0.5 Cm))
-              , KeyValArg (Identifier "fill") (Ident (Identifier "green"))
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
-              , KeyValArg (Identifier "height") (Literal (Numeric 0.5 Cm))
-              , KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg (Identifier "width") (Literal (Numeric 50.0 Percent))
-              , KeyValArg (Identifier "height") (Literal (Numeric 0.5 Cm))
-              , KeyValArg (Identifier "fill") (Ident (Identifier "red"))
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 grid(children: (rect(fill: rgb(18%,80%,25%,100%), 
-                                      height: 0.5cm, 
-                                      width: 50%), 
-                                 rect(fill: rgb(13%,61%,67%,100%), 
-                                      height: 0.5cm, 
-                                      width: 100%), 
-                                 rect(fill: rgb(100%,25%,21%,100%), 
-                                      height: 0.5cm, 
-                                      width: 50%)), 
-                      columns: (auto, 60%), 
-                      rows: (auto, auto)), 
-                 parbreak() })
diff --git a/test/out/layout/grid-4-01.out b/test/out/layout/grid-4-01.out
deleted file mode 100644
--- a/test/out/layout/grid-4-01.out
+++ /dev/null
@@ -1,97 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/grid-4-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/grid-4-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/grid-4-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/grid-4-01.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "grid"))
-       [ KeyValArg
-           (Identifier "columns")
-           (Times
-              (Array [ Reg (Literal (Numeric 1.0 Fr)) ]) (Literal (Int 4)))
-       , KeyValArg
-           (Identifier "rows") (Array [ Reg (Literal (Numeric 1.0 Cm)) ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg (Identifier "width") (Literal (Numeric 50.0 Percent))
-              , KeyValArg (Identifier "fill") (Ident (Identifier "green"))
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg (Identifier "width") (Literal (Numeric 50.0 Percent))
-              , KeyValArg (Identifier "fill") (Ident (Identifier "red"))
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg (Identifier "width") (Literal (Numeric 50.0 Percent))
-              , KeyValArg (Identifier "fill") (Ident (Identifier "green"))
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg (Identifier "width") (Literal (Numeric 50.0 Percent))
-              , KeyValArg (Identifier "fill") (Ident (Identifier "red"))
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 grid(children: (rect(fill: rgb(18%,80%,25%,100%), 
-                                      width: 50%), 
-                                 rect(fill: rgb(100%,25%,21%,100%), 
-                                      width: 50%), 
-                                 rect(fill: rgb(18%,80%,25%,100%), 
-                                      width: 50%), 
-                                 rect(fill: rgb(100%,25%,21%,100%), 
-                                      width: 50%)), 
-                      columns: (1.0fr, 
-                                1.0fr, 
-                                1.0fr, 
-                                1.0fr), 
-                      rows: (1.0cm)), 
-                 parbreak() })
diff --git a/test/out/layout/grid-4-02.out b/test/out/layout/grid-4-02.out
deleted file mode 100644
--- a/test/out/layout/grid-4-02.out
+++ /dev/null
@@ -1,117 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/grid-4-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/grid-4-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/grid-4-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/grid-4-02.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 4.0 Cm))
-       , KeyValArg (Identifier "margin") (Literal (Numeric 0.0 Cm))
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/grid-4-02.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "grid"))
-       [ KeyValArg
-           (Identifier "rows")
-           (Array
-              [ Reg (Literal (Numeric 1.0 Cm))
-              , Reg (Literal (Numeric 1.0 Fr))
-              , Reg (Literal (Numeric 1.0 Fr))
-              , Reg (Literal Auto)
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg (Identifier "height") (Literal (Numeric 50.0 Percent))
-              , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
-              , KeyValArg (Identifier "fill") (Ident (Identifier "green"))
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg (Identifier "height") (Literal (Numeric 50.0 Percent))
-              , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
-              , KeyValArg (Identifier "fill") (Ident (Identifier "red"))
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg (Identifier "height") (Literal (Numeric 50.0 Percent))
-              , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
-              , KeyValArg (Identifier "fill") (Ident (Identifier "green"))
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg (Identifier "height") (Literal (Numeric 25.0 Percent))
-              , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
-              , KeyValArg (Identifier "fill") (Ident (Identifier "red"))
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 grid(children: (rect(fill: rgb(18%,80%,25%,100%), 
-                                      height: 50%, 
-                                      width: 100%), 
-                                 rect(fill: rgb(100%,25%,21%,100%), 
-                                      height: 50%, 
-                                      width: 100%), 
-                                 rect(fill: rgb(18%,80%,25%,100%), 
-                                      height: 50%, 
-                                      width: 100%), 
-                                 rect(fill: rgb(100%,25%,21%,100%), 
-                                      height: 25%, 
-                                      width: 100%)), 
-                      rows: (1.0cm, 
-                             1.0fr, 
-                             1.0fr, 
-                             auto)), 
-                 parbreak() })
diff --git a/test/out/layout/grid-5-00.out b/test/out/layout/grid-5-00.out
deleted file mode 100644
--- a/test/out/layout/grid-5-00.out
+++ /dev/null
@@ -1,88 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/grid-5-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/grid-5-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/grid-5-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/grid-5-00.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 2.0 Cm)) ])
-, SoftBreak
-, Code
-    "test/typ/layout/grid-5-00.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "grid"))
-       [ BlockArg
-           [ SoftBreak
-           , Text "Hello"
-           , Space
-           , HardBreak
-           , Text "Hello"
-           , Space
-           , HardBreak
-           , Text "Hello"
-           , Space
-           , HardBreak
-           , SoftBreak
-           , Text "World"
-           , ParBreak
-           ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 grid(children: ({ text(body: [
-Hello ]), 
-                                   linebreak(), 
-                                   text(body: [Hello ]), 
-                                   linebreak(), 
-                                   text(body: [Hello ]), 
-                                   linebreak(), 
-                                   text(body: [
-World]), 
-                                   parbreak() })), 
-                 parbreak() })
diff --git a/test/out/layout/grid-5-01.out b/test/out/layout/grid-5-01.out
deleted file mode 100644
--- a/test/out/layout/grid-5-01.out
+++ /dev/null
@@ -1,128 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/grid-5-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/grid-5-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/grid-5-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/grid-5-01.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 2.25 Cm)) ])
-, SoftBreak
-, Code
-    "test/typ/layout/grid-5-01.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "grid"))
-       [ KeyValArg (Identifier "columns") (Literal (Int 2))
-       , KeyValArg (Identifier "gutter") (Literal (Numeric 10.0 Pt))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "align"))
-              [ NormalArg (Ident (Identifier "bottom"))
-              , BlockArg [ Text "A" ]
-              ])
-       , NormalArg
-           (Block
-              (Content
-                 [ SoftBreak
-                 , Text "Top"
-                 , SoftBreak
-                 , Code
-                     "test/typ/layout/grid-5-01.typ"
-                     ( line 10 , column 6 )
-                     (FuncCall
-                        (Ident (Identifier "align"))
-                        [ NormalArg (Ident (Identifier "bottom"))
-                        , BlockArg
-                            [ SoftBreak
-                            , Text "Bottom"
-                            , Space
-                            , HardBreak
-                            , Text "Bottom"
-                            , Space
-                            , HardBreak
-                            , Code
-                                "test/typ/layout/grid-5-01.typ"
-                                ( line 13 , column 8 )
-                                (FuncCall
-                                   (Ident (Identifier "v"))
-                                   [ NormalArg (Literal (Numeric 0.0 Pt)) ])
-                            , SoftBreak
-                            , Text "Top"
-                            , ParBreak
-                            ]
-                        ])
-                 , ParBreak
-                 ]))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "align"))
-              [ NormalArg (Ident (Identifier "top")) , BlockArg [ Text "B" ] ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 grid(children: (align(alignment: bottom, 
-                                       body: text(body: [A])), 
-                                 { text(body: [
-Top
-]), 
-                                   align(alignment: bottom, 
-                                         body: { text(body: [
-Bottom ]), 
-                                                 linebreak(), 
-                                                 text(body: [Bottom ]), 
-                                                 linebreak(), 
-                                                 v(amount: 0.0pt), 
-                                                 text(body: [
-Top]), 
-                                                 parbreak() }), 
-                                   parbreak() }, 
-                                 align(alignment: top, 
-                                       body: text(body: [B]))), 
-                      columns: 2, 
-                      gutter: 10.0pt), 
-                 parbreak() })
diff --git a/test/out/layout/grid-auto-shrink-00.out b/test/out/layout/grid-auto-shrink-00.out
deleted file mode 100644
--- a/test/out/layout/grid-auto-shrink-00.out
+++ /dev/null
@@ -1,139 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/grid-auto-shrink-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/grid-auto-shrink-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/grid-auto-shrink-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/layout/grid-auto-shrink-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg
-           (Identifier "width")
-           (Plus
-              (Minus
-                 (Literal (Numeric 210.0 Mm))
-                 (Times (Literal (Int 2)) (Literal (Numeric 2.5 Cm))))
-              (Times (Literal (Int 2)) (Literal (Numeric 10.0 Pt))))
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/grid-auto-shrink-00.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ NormalArg (Literal (Numeric 11.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/layout/grid-auto-shrink-00.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "table"))
-       [ KeyValArg (Identifier "columns") (Literal (Int 4))
-       , NormalArg (Block (Content [ Text "Hello!" ]))
-       , NormalArg
-           (Block
-              (Content
-                 [ Text "Hello"
-                 , Space
-                 , Text "there,"
-                 , Space
-                 , Text "my"
-                 , Space
-                 , Text "friend!"
-                 ]))
-       , NormalArg
-           (Block
-              (Content
-                 [ Text "Hello"
-                 , Space
-                 , Text "there,"
-                 , Space
-                 , Text "my"
-                 , Space
-                 , Text "friends!"
-                 , Space
-                 , Text "Hi!"
-                 ]))
-       , NormalArg
-           (Block
-              (Content
-                 [ Text "Hello"
-                 , Space
-                 , Text "there,"
-                 , Space
-                 , Text "my"
-                 , Space
-                 , Text "friends!"
-                 , Space
-                 , Text "Hi!"
-                 , Space
-                 , Text "What"
-                 , Space
-                 , Text "is"
-                 , Space
-                 , Text "going"
-                 , Space
-                 , Text "on"
-                 , Space
-                 , Text "right"
-                 , Space
-                 , Text "now?"
-                 ]))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-], 
-                      size: 11.0pt), 
-                 table(children: (text(body: [Hello!], 
-                                       size: 11.0pt), 
-                                  text(body: [Hello there, my friend!], 
-                                       size: 11.0pt), 
-                                  text(body: [Hello there, my friends! Hi!], 
-                                       size: 11.0pt), 
-                                  text(body: [Hello there, my friends! Hi! What is going on right now?], 
-                                       size: 11.0pt)), 
-                       columns: 4), 
-                 parbreak() })
diff --git a/test/out/layout/grid-rtl-00.out b/test/out/layout/grid-rtl-00.out
deleted file mode 100644
--- a/test/out/layout/grid-rtl-00.out
+++ /dev/null
@@ -1,63 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/grid-rtl-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/grid-rtl-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/grid-rtl-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/layout/grid-rtl-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "dir") (Ident (Identifier "rtl")) ])
-, SoftBreak
-, BulletListItem
-    [ Text "\1502\1497\1502\1497\1503"
-    , Space
-    , Text "\1500\1513\1502\1488\1500"
-    , ParBreak
-    ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-], dir: rtl), 
-                 list(children: ({ text(body: [מימין לשמאל], 
-                                        dir: rtl), 
-                                   parbreak() })) })
diff --git a/test/out/layout/grid-rtl-01.out b/test/out/layout/grid-rtl-01.out
deleted file mode 100644
--- a/test/out/layout/grid-rtl-01.out
+++ /dev/null
@@ -1,76 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/grid-rtl-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/grid-rtl-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/grid-rtl-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/layout/grid-rtl-01.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "dir") (Ident (Identifier "rtl")) ])
-, SoftBreak
-, Code
-    "test/typ/layout/grid-rtl-01.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "table"))
-       [ KeyValArg (Identifier "columns") (Literal (Int 2))
-       , BlockArg [ Text "A" ]
-       , BlockArg [ Text "B" ]
-       , BlockArg [ Text "C" ]
-       , BlockArg [ Text "D" ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-], dir: rtl), 
-                 table(children: (text(body: [A], 
-                                       dir: rtl), 
-                                  text(body: [B], 
-                                       dir: rtl), 
-                                  text(body: [C], 
-                                       dir: rtl), 
-                                  text(body: [D], 
-                                       dir: rtl)), 
-                       columns: 2), 
-                 parbreak() })
diff --git a/test/out/layout/hide-00.out b/test/out/layout/hide-00.out
deleted file mode 100644
--- a/test/out/layout/hide-00.out
+++ /dev/null
@@ -1,83 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/hide-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/hide-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/hide-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Text "AB"
-, Space
-, Code
-    "test/typ/layout/hide-00.typ"
-    ( line 2 , column 5 )
-    (FuncCall
-       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 1.0 Fr)) ])
-, Space
-, Text "CD"
-, Space
-, HardBreak
-, Code
-    "test/typ/layout/hide-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall (Ident (Identifier "hide")) [ BlockArg [ Text "A" ] ])
-, Text "B"
-, Space
-, Code
-    "test/typ/layout/hide-00.typ"
-    ( line 3 , column 12 )
-    (FuncCall
-       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 1.0 Fr)) ])
-, Space
-, Text "C"
-, Code
-    "test/typ/layout/hide-00.typ"
-    ( line 3 , column 21 )
-    (FuncCall (Ident (Identifier "hide")) [ BlockArg [ Text "D" ] ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-AB ]), 
-                 h(amount: 1.0fr), 
-                 text(body: [ CD ]), 
-                 linebreak(), 
-                 hide(body: text(body: [A])), 
-                 text(body: [B ]), 
-                 h(amount: 1.0fr), 
-                 text(body: [ C]), 
-                 hide(body: text(body: [D])), 
-                 parbreak() })
diff --git a/test/out/layout/list-00.out b/test/out/layout/list-00.out
deleted file mode 100644
--- a/test/out/layout/list-00.out
+++ /dev/null
@@ -1,64 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/list-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/list-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/list-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Emph [ Text "Shopping" , Space , Text "list" ]
-, SoftBreak
-, Code
-    "test/typ/layout/list-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "list"))
-       [ BlockArg [ Text "Apples" ]
-       , BlockArg [ Text "Potatoes" ]
-       , BlockArg [ Text "Juice" ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 emph(body: text(body: [Shopping list])), 
-                 text(body: [
-]), 
-                 list(children: (text(body: [Apples]), 
-                                 text(body: [Potatoes]), 
-                                 text(body: [Juice]))), 
-                 parbreak() })
diff --git a/test/out/layout/list-01.out b/test/out/layout/list-01.out
deleted file mode 100644
--- a/test/out/layout/list-01.out
+++ /dev/null
@@ -1,115 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/list-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/list-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/list-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, BulletListItem
-    [ Text "First"
-    , Space
-    , Text "level"
-    , Text "."
-    , ParBreak
-    , BulletListItem
-        [ Text "Second"
-        , Space
-        , Text "level"
-        , Text "."
-        , SoftBreak
-        , Text "There"
-        , Space
-        , Text "are"
-        , Space
-        , Text "multiple"
-        , Space
-        , Text "paragraphs"
-        , Text "."
-        , ParBreak
-        , BulletListItem
-            [ Text "Third" , Space , Text "level" , Text "." , SoftBreak ]
-        , SoftBreak
-        , Text "Still"
-        , Space
-        , Text "the"
-        , Space
-        , Text "same"
-        , Space
-        , Text "bullet"
-        , Space
-        , Text "point"
-        , Text "."
-        , SoftBreak
-        ]
-    , SoftBreak
-    , BulletListItem
-        [ Text "Still"
-        , Space
-        , Text "level"
-        , Space
-        , Text "2"
-        , Text "."
-        , SoftBreak
-        ]
-    ]
-, SoftBreak
-, BulletListItem
-    [ Text "At"
-    , Space
-    , Text "the"
-    , Space
-    , Text "top"
-    , Text "."
-    , ParBreak
-    ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 list(children: ({ text(body: [First level.]), 
-                                   parbreak(), 
-                                   list(children: ({ text(body: [Second level.
-There are multiple paragraphs.]), 
-                                                     parbreak(), 
-                                                     list(children: (text(body: [Third level.
-]))), 
-                                                     text(body: [Still the same bullet point.
-]) }, 
-                                                   text(body: [Still level 2.
-]))) }, 
-                                 { text(body: [At the top.]), 
-                                   parbreak() })) })
diff --git a/test/out/layout/list-02.out b/test/out/layout/list-02.out
deleted file mode 100644
--- a/test/out/layout/list-02.out
+++ /dev/null
@@ -1,78 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/list-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/list-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/list-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, BulletListItem
-    [ Text "Level"
-    , Space
-    , Text "1"
-    , SoftBreak
-    , BulletListItem
-        [ Text "Level"
-        , Space
-        , Code
-            "test/typ/layout/list-02.typ"
-            ( line 3 , column 12 )
-            (Block
-               (Content
-                  [ SoftBreak
-                  , Text "2"
-                  , Space
-                  , Text "through"
-                  , Space
-                  , Text "content"
-                  , Space
-                  , Text "block"
-                  , ParBreak
-                  ]))
-        , ParBreak
-        ]
-    ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 list(children: ({ text(body: [Level 1
-]), 
-                                   list(children: ({ text(body: [Level ]), 
-                                                     text(body: [
-2 through content block]), 
-                                                     parbreak(), 
-                                                     parbreak() })) })) })
diff --git a/test/out/layout/list-03.out b/test/out/layout/list-03.out
deleted file mode 100644
--- a/test/out/layout/list-03.out
+++ /dev/null
@@ -1,53 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/list-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/list-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/list-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, BulletListItem
-    [ Text "Top" , Text "-" , Text "level" , Space , Text "indent" ]
-, SoftBreak
-, BulletListItem
-    [ Text "is" , Space , Text "fine" , Text "." , ParBreak ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 list(children: (text(body: [Top-level indent]), 
-                                 { text(body: [is fine.]), 
-                                   parbreak() })) })
diff --git a/test/out/layout/list-04.out b/test/out/layout/list-04.out
deleted file mode 100644
--- a/test/out/layout/list-04.out
+++ /dev/null
@@ -1,60 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/list-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/list-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/list-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, BulletListItem
-    [ Text "A"
-    , SoftBreak
-    , BulletListItem [ Text "B" ]
-    , SoftBreak
-    , BulletListItem [ Text "C" ]
-    ]
-, SoftBreak
-, BulletListItem [ Text "D" , ParBreak ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 list(children: ({ text(body: [A
-]), 
-                                   list(children: (text(body: [B]), 
-                                                   text(body: [C]))) }, 
-                                 { text(body: [D]), 
-                                   parbreak() })) })
diff --git a/test/out/layout/list-05.out b/test/out/layout/list-05.out
deleted file mode 100644
--- a/test/out/layout/list-05.out
+++ /dev/null
@@ -1,71 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/list-05.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/list-05.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/list-05.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Space
-, Text "-"
-, Space
-, Text "A"
-, Space
-, Text "with"
-, Space
-, Text "1"
-, Space
-, Text "tab"
-, SoftBreak
-, BulletListItem
-    [ Text "B"
-    , Space
-    , Text "with"
-    , Space
-    , Text "2"
-    , Space
-    , Text "tabs"
-    , ParBreak
-    ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [ - A with 1 tab
-]), 
-                 list(children: ({ text(body: [B with 2 tabs]), 
-                                   parbreak() })) })
diff --git a/test/out/layout/list-06.out b/test/out/layout/list-06.out
deleted file mode 100644
--- a/test/out/layout/list-06.out
+++ /dev/null
@@ -1,71 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/list-06.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/list-06.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/list-06.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Space
-, Text "-"
-, Space
-, Text "A"
-, Space
-, Text "with"
-, Space
-, Text "2"
-, Space
-, Text "spaces"
-, SoftBreak
-, BulletListItem
-    [ Text "B"
-    , Space
-    , Text "with"
-    , Space
-    , Text "2"
-    , Space
-    , Text "tabs"
-    , ParBreak
-    ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [ - A with 2 spaces
-]), 
-                 list(children: ({ text(body: [B with 2 tabs]), 
-                                   parbreak() })) })
diff --git a/test/out/layout/list-07.out b/test/out/layout/list-07.out
deleted file mode 100644
--- a/test/out/layout/list-07.out
+++ /dev/null
@@ -1,61 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/list-07.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/list-07.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/list-07.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, BulletListItem []
-, SoftBreak
-, Text "Not"
-, Space
-, Text "in"
-, Space
-, Text "list"
-, SoftBreak
-, Text "-"
-, Text "Nope"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 list(children: ({  })), 
-                 text(body: [Not in list
--Nope]), 
-                 parbreak() })
diff --git a/test/out/layout/list-08.out b/test/out/layout/list-08.out
deleted file mode 100644
--- a/test/out/layout/list-08.out
+++ /dev/null
@@ -1,68 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/list-08.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/list-08.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/list-08.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/list-08.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "align"))
-       [ NormalArg (Ident (Identifier "horizon")) ])
-, ParBreak
-, BulletListItem
-    [ Text "ABCDEF"
-    , HardBreak
-    , Text "GHIJKL"
-    , HardBreak
-    , Text "MNOPQR"
-    , ParBreak
-    ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 list(children: ({ text(body: [ABCDEF]), 
-                                   linebreak(), 
-                                   text(body: [GHIJKL]), 
-                                   linebreak(), 
-                                   text(body: [MNOPQR]), 
-                                   parbreak() })) })
diff --git a/test/out/layout/list-attach-00.out b/test/out/layout/list-attach-00.out
deleted file mode 100644
--- a/test/out/layout/list-attach-00.out
+++ /dev/null
@@ -1,74 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/list-attach-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/list-attach-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/list-attach-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "Attached"
-, Space
-, Text "to"
-, Text ":"
-, SoftBreak
-, BulletListItem [ Text "the" , Space , Text "bottom" ]
-, SoftBreak
-, BulletListItem
-    [ Text "of"
-    , Space
-    , Text "the"
-    , Space
-    , Text "paragraph"
-    , SoftBreak
-    ]
-, SoftBreak
-, Text "Next"
-, Space
-, Text "paragraph"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [Attached to:
-]), 
-                 list(children: (text(body: [the bottom]), 
-                                 text(body: [of the paragraph
-]))), 
-                 text(body: [Next paragraph.]), 
-                 parbreak() })
diff --git a/test/out/layout/list-attach-01.out b/test/out/layout/list-attach-01.out
deleted file mode 100644
--- a/test/out/layout/list-attach-01.out
+++ /dev/null
@@ -1,70 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/list-attach-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/list-attach-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/list-attach-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/list-attach-01.typ"
-    ( line 3 , column 2 )
-    (Show
-       (Just (Ident (Identifier "list")))
-       (Set
-          (Ident (Identifier "block"))
-          [ KeyValArg (Identifier "above") (Literal (Numeric 100.0 Pt)) ]))
-, SoftBreak
-, Text "Hello"
-, SoftBreak
-, BulletListItem [ Text "A" ]
-, SoftBreak
-, Text "World"
-, SoftBreak
-, BulletListItem [ Text "B" , ParBreak ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-Hello
-]), 
-                 list(children: (text(body: [A]))), 
-                 text(body: [World
-]), 
-                 list(children: ({ text(body: [B]), 
-                                   parbreak() })) })
diff --git a/test/out/layout/list-attach-02.out b/test/out/layout/list-attach-02.out
deleted file mode 100644
--- a/test/out/layout/list-attach-02.out
+++ /dev/null
@@ -1,62 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/list-attach-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/list-attach-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/list-attach-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Text "Hello"
-, ParBreak
-, BulletListItem [ Text "A" , SoftBreak ]
-, SoftBreak
-, Text "World"
-, SoftBreak
-, BulletListItem [ Text "B" , ParBreak ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [Hello]), 
-                 parbreak(), 
-                 list(children: (text(body: [A
-]))), 
-                 text(body: [World
-]), 
-                 list(children: ({ text(body: [B]), 
-                                   parbreak() })) })
diff --git a/test/out/layout/list-attach-03.out b/test/out/layout/list-attach-03.out
deleted file mode 100644
--- a/test/out/layout/list-attach-03.out
+++ /dev/null
@@ -1,77 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/list-attach-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/list-attach-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/list-attach-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/list-attach-03.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "block"))
-       [ KeyValArg (Identifier "spacing") (Literal (Numeric 15.0 Pt)) ])
-, SoftBreak
-, Text "Hello"
-, SoftBreak
-, BulletListItem [ Text "A" ]
-, SoftBreak
-, Text "World"
-, ParBreak
-, BulletListItem [ Text "B" ]
-, SoftBreak
-, BulletListItem [ Text "C" , SoftBreak ]
-, SoftBreak
-, Text "More"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-Hello
-]), 
-                 list(children: (text(body: [A]))), 
-                 text(body: [World]), 
-                 parbreak(), 
-                 list(children: (text(body: [B]), 
-                                 text(body: [C
-]))), 
-                 text(body: [More.]), 
-                 parbreak() })
diff --git a/test/out/layout/list-attach-04.out b/test/out/layout/list-attach-04.out
deleted file mode 100644
--- a/test/out/layout/list-attach-04.out
+++ /dev/null
@@ -1,69 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/list-attach-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/list-attach-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/list-attach-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/list-attach-04.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "block"))
-       [ KeyValArg (Identifier "spacing") (Literal (Numeric 15.0 Pt)) ])
-, SoftBreak
-, Text "Hello"
-, SoftBreak
-, BulletListItem [ Text "A" , SoftBreak ]
-, SoftBreak
-, BulletListItem [ Text "B" ]
-, SoftBreak
-, Text "World"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-Hello
-]), 
-                 list(children: (text(body: [A
-]), 
-                                 text(body: [B]))), 
-                 text(body: [World]), 
-                 parbreak() })
diff --git a/test/out/layout/list-attach-05.out b/test/out/layout/list-attach-05.out
deleted file mode 100644
--- a/test/out/layout/list-attach-05.out
+++ /dev/null
@@ -1,68 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/list-attach-05.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/list-attach-05.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/list-attach-05.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "Hello"
-, SoftBreak
-, Code
-    "test/typ/layout/list-attach-05.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "list"))
-       [ KeyValArg (Identifier "tight") (Literal (Boolean False))
-       , BlockArg [ Text "A" ]
-       , BlockArg [ Text "B" ]
-       ])
-, SoftBreak
-, Text "World"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [Hello
-]), 
-                 list(children: (text(body: [A]), 
-                                 text(body: [B])), 
-                      tight: false), 
-                 text(body: [
-World]), 
-                 parbreak() })
diff --git a/test/out/layout/list-marker-00.out b/test/out/layout/list-marker-00.out
deleted file mode 100644
--- a/test/out/layout/list-marker-00.out
+++ /dev/null
@@ -1,62 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/list-marker-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/list-marker-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/list-marker-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/list-marker-00.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "list"))
-       [ KeyValArg (Identifier "marker") (Block (Content [ EnDash ])) ])
-, SoftBreak
-, BulletListItem [ Text "A" ]
-, SoftBreak
-, BulletListItem [ Text "B" , ParBreak ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 list(children: (text(body: [A]), 
-                                 { text(body: [B]), 
-                                   parbreak() }), 
-                      marker: text(body: [–])) })
diff --git a/test/out/layout/list-marker-01.out b/test/out/layout/list-marker-01.out
deleted file mode 100644
--- a/test/out/layout/list-marker-01.out
+++ /dev/null
@@ -1,79 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/list-marker-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/list-marker-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/list-marker-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/list-marker-01.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "list"))
-       [ KeyValArg
-           (Identifier "marker")
-           (Array
-              [ Reg (Block (Content [ EnDash ]))
-              , Reg (Block (Content [ Text "\8226" ]))
-              ])
-       ])
-, SoftBreak
-, BulletListItem
-    [ Text "A"
-    , SoftBreak
-    , BulletListItem
-        [ Text "B" , SoftBreak , BulletListItem [ Text "C" , ParBreak ] ]
-    ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 list(children: ({ text(body: [A
-]), 
-                                   list(children: ({ text(body: [B
-]), 
-                                                     list(children: ({ text(body: [C]), 
-                                                                       parbreak() }), 
-                                                          marker: (text(body: [–]), 
-                                                                   text(body: [•]))) }), 
-                                        marker: (text(body: [–]), 
-                                                 text(body: [•]))) }), 
-                      marker: (text(body: [–]), 
-                               text(body: [•]))) })
diff --git a/test/out/layout/list-marker-02.out b/test/out/layout/list-marker-02.out
deleted file mode 100644
--- a/test/out/layout/list-marker-02.out
+++ /dev/null
@@ -1,89 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/list-marker-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/list-marker-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/list-marker-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/list-marker-02.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "list"))
-       [ KeyValArg
-           (Identifier "marker")
-           (FuncExpr
-              [ NormalParam (Identifier "n") ]
-              (If
-                 [ ( Equals (Ident (Identifier "n")) (Literal (Int 1))
-                   , Block (Content [ EnDash ])
-                   )
-                 , ( Literal (Boolean True) , Block (Content [ Text "\8226" ]) )
-                 ]))
-       ])
-, SoftBreak
-, BulletListItem [ Text "A" ]
-, SoftBreak
-, BulletListItem
-    [ Text "B"
-    , SoftBreak
-    , BulletListItem [ Text "C" ]
-    , SoftBreak
-    , BulletListItem
-        [ Text "D" , SoftBreak , BulletListItem [ Text "E" ] ]
-    ]
-, SoftBreak
-, BulletListItem [ Text "F" , ParBreak ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 list(children: (text(body: [A]), 
-                                 { text(body: [B
-]), 
-                                   list(children: (text(body: [C]), 
-                                                   { text(body: [D
-]), 
-                                                     list(children: (text(body: [E])), 
-                                                          marker: ) }), 
-                                        marker: ) }, 
-                                 { text(body: [F]), 
-                                   parbreak() }), 
-                      marker: ) })
diff --git a/test/out/layout/list-marker-03.out b/test/out/layout/list-marker-03.out
deleted file mode 100644
--- a/test/out/layout/list-marker-03.out
+++ /dev/null
@@ -1,72 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/list-marker-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/list-marker-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/list-marker-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/list-marker-03.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "list"))
-       [ KeyValArg
-           (Identifier "marker") (Block (Content [ BulletListItem [] ]))
-       ])
-, SoftBreak
-, BulletListItem
-    [ Text "Bare" , Space , Text "hyphen" , Space , Text "is" ]
-, SoftBreak
-, BulletListItem
-    [ Text "a"
-    , Space
-    , Text "bad"
-    , Space
-    , Text "marker"
-    , ParBreak
-    ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 list(children: (text(body: [Bare hyphen is]), 
-                                 { text(body: [a bad marker]), 
-                                   parbreak() }), 
-                      marker: list(children: ({  }))) })
diff --git a/test/out/layout/list-marker-04.out b/test/out/layout/list-marker-04.out
deleted file mode 100644
--- a/test/out/layout/list-marker-04.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/layout/pad-00.out b/test/out/layout/pad-00.out
deleted file mode 100644
--- a/test/out/layout/pad-00.out
+++ /dev/null
@@ -1,124 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/pad-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/pad-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/pad-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/pad-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "pad"))
-       [ KeyValArg (Identifier "left") (Literal (Numeric 10.0 Pt))
-       , NormalArg (Block (Content [ Text "Indented!" ]))
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/layout/pad-00.typ"
-    ( line 6 , column 2 )
-    (Set
-       (Ident (Identifier "rect"))
-       [ KeyValArg (Identifier "inset") (Literal (Numeric 0.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/layout/pad-00.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "rect"))
-       [ KeyValArg (Identifier "fill") (Ident (Identifier "green"))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "pad"))
-              [ NormalArg (Literal (Numeric 10.0 Pt))
-              , KeyValArg (Identifier "right") (Literal (Numeric 20.0 Pt))
-              , NormalArg
-                  (FuncCall
-                     (Ident (Identifier "rect"))
-                     [ KeyValArg (Identifier "width") (Literal (Numeric 20.0 Pt))
-                     , KeyValArg (Identifier "height") (Literal (Numeric 20.0 Pt))
-                     , KeyValArg
-                         (Identifier "fill")
-                         (FuncCall
-                            (Ident (Identifier "rgb"))
-                            [ NormalArg (Literal (String "eb5278")) ])
-                     ])
-              ])
-       ])
-, ParBreak
-, Text "Hi"
-, Space
-, Code
-    "test/typ/layout/pad-00.typ"
-    ( line 13 , column 5 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "pad"))
-              [ KeyValArg (Identifier "left") (Literal (Numeric 10.0 Pt))
-              , BlockArg [ Text "A" ]
-              ])
-       ])
-, Space
-, Text "there"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 pad(body: text(body: [Indented!]), 
-                     left: 10.0pt), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 rect(body: pad(body: rect(fill: rgb(92%,32%,47%,100%), 
-                                           height: 20.0pt, 
-                                           inset: 0.0pt, 
-                                           width: 20.0pt), 
-                                rest: 10.0pt, 
-                                right: 20.0pt), 
-                      fill: rgb(18%,80%,25%,100%), 
-                      inset: 0.0pt), 
-                 parbreak(), 
-                 text(body: [Hi ]), 
-                 box(body: pad(body: text(body: [A]), 
-                               left: 10.0pt)), 
-                 text(body: [ there]), 
-                 parbreak() })
diff --git a/test/out/layout/pad-01.out b/test/out/layout/pad-01.out
deleted file mode 100644
--- a/test/out/layout/pad-01.out
+++ /dev/null
@@ -1,72 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/pad-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/pad-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/pad-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/pad-01.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "pad"))
-       [ KeyValArg (Identifier "left") (Literal (Numeric 10.0 Pt))
-       , KeyValArg (Identifier "right") (Literal (Numeric 10.0 Pt))
-       , BlockArg
-           [ Text "PL"
-           , Space
-           , Code
-               "test/typ/layout/pad-01.typ"
-               ( line 3 , column 35 )
-               (FuncCall
-                  (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 1.0 Fr)) ])
-           , Space
-           , Text "PR"
-           ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 pad(body: { text(body: [PL ]), 
-                             h(amount: 1.0fr), 
-                             text(body: [ PR]) }, 
-                     left: 10.0pt, 
-                     right: 10.0pt), 
-                 parbreak() })
diff --git a/test/out/layout/pad-02.out b/test/out/layout/pad-02.out
deleted file mode 100644
--- a/test/out/layout/pad-02.out
+++ /dev/null
@@ -1,96 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/pad-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/pad-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/pad-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/pad-02.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 6.0 Cm)) ])
-, SoftBreak
-, Code
-    "test/typ/layout/pad-02.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "align"))
-       [ NormalArg (Ident (Identifier "left"))
-       , BlockArg [ Text "Before" ]
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/pad-02.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "pad"))
-       [ NormalArg (Literal (Numeric 10.0 Pt))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "image"))
-              [ NormalArg (Literal (String "/assets/files/tiger.jpg")) ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/pad-02.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "align"))
-       [ NormalArg (Ident (Identifier "right"))
-       , BlockArg [ Text "After" ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 align(alignment: left, 
-                       body: text(body: [Before])), 
-                 text(body: [
-]), 
-                 pad(body: image(path: "/assets/files/tiger.jpg"), 
-                     rest: 10.0pt), 
-                 text(body: [
-]), 
-                 align(alignment: right, 
-                       body: text(body: [After])), 
-                 parbreak() })
diff --git a/test/out/layout/pad-03.out b/test/out/layout/pad-03.out
deleted file mode 100644
--- a/test/out/layout/pad-03.out
+++ /dev/null
@@ -1,55 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/pad-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/pad-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/pad-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/pad-03.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "pad"))
-       [ NormalArg (Literal (Numeric 50.0 Percent)) , BlockArg [] ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 pad(body: {  }, rest: 50%), 
-                 parbreak() })
diff --git a/test/out/layout/page-00.out b/test/out/layout/page-00.out
deleted file mode 100644
--- a/test/out/layout/page-00.out
+++ /dev/null
@@ -1,54 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/page-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/page-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/page-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/layout/page-00.typ"
-    ( line 4 , column 2 )
-    (FuncCall (Ident (Identifier "page")) [ BlockArg [] ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 page(body: {  }), 
-                 parbreak() })
diff --git a/test/out/layout/page-01.out b/test/out/layout/page-01.out
deleted file mode 100644
--- a/test/out/layout/page-01.out
+++ /dev/null
@@ -1,62 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/page-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/page-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/page-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/layout/page-01.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "page"))
-       [ NormalArg (Literal (String "a11"))
-       , KeyValArg (Identifier "flipped") (Literal (Boolean True))
-       , KeyValArg (Identifier "fill") (Ident (Identifier "green"))
-       , BlockArg []
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 page(body: [a11], 
-                      fill: rgb(18%,80%,25%,100%), 
-                      flipped: true), 
-                 parbreak() })
diff --git a/test/out/layout/page-02.out b/test/out/layout/page-02.out
deleted file mode 100644
--- a/test/out/layout/page-02.out
+++ /dev/null
@@ -1,112 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/page-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/page-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/page-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/layout/page-02.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 80.0 Pt))
-       , KeyValArg (Identifier "height") (Literal (Numeric 80.0 Pt))
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/page-02.typ"
-    ( line 5 , column 2 )
-    (Block
-       (Content
-          [ Code
-              "test/typ/layout/page-02.typ"
-              ( line 5 , column 4 )
-              (Set
-                 (Ident (Identifier "page"))
-                 [ KeyValArg (Identifier "width") (Literal (Numeric 40.0 Pt)) ])
-          , Text "High"
-          ]))
-, SoftBreak
-, Code
-    "test/typ/layout/page-02.typ"
-    ( line 6 , column 2 )
-    (Block
-       (Content
-          [ Code
-              "test/typ/layout/page-02.typ"
-              ( line 6 , column 4 )
-              (Set
-                 (Ident (Identifier "page"))
-                 [ KeyValArg (Identifier "height") (Literal (Numeric 40.0 Pt)) ])
-          , Text "Wide"
-          ]))
-, ParBreak
-, Comment
-, Code
-    "test/typ/layout/page-02.typ"
-    ( line 9 , column 2 )
-    (Block
-       (Content
-          [ Code
-              "test/typ/layout/page-02.typ"
-              ( line 9 , column 4 )
-              (Set
-                 (Ident (Identifier "page"))
-                 [ KeyValArg (Identifier "paper") (Literal (String "a11"))
-                 , KeyValArg (Identifier "flipped") (Literal (Boolean True))
-                 ])
-          , Text "Flipped"
-          , Space
-          , Text "A11"
-          ]))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [High]), 
-                 text(body: [
-]), 
-                 text(body: [Wide]), 
-                 parbreak(), 
-                 text(body: [Flipped A11]), 
-                 parbreak() })
diff --git a/test/out/layout/page-03.out b/test/out/layout/page-03.out
deleted file mode 100644
--- a/test/out/layout/page-03.out
+++ /dev/null
@@ -1,100 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/page-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/page-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/page-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/page-03.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 80.0 Pt))
-       , KeyValArg (Identifier "height") (Literal (Numeric 40.0 Pt))
-       , KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/page-03.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ NormalArg (Literal (Numeric 15.0 Pt))
-       , KeyValArg (Identifier "font") (Literal (String "Roboto"))
-       , KeyValArg (Identifier "fill") (Ident (Identifier "white"))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "smallcaps")) [ BlockArg [ Text "Typst" ] ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/page-03.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 40.0 Pt))
-       , KeyValArg (Identifier "fill") (Literal None)
-       , KeyValArg
-           (Identifier "margin")
-           (Dict
-              [ Reg ( Ident (Identifier "top") , Literal (Numeric 10.0 Pt) )
-              , Reg ( Ident (Identifier "rest") , Literal Auto )
-              ])
-       , BlockArg [ Text "Hi" ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: smallcaps(body: text(body: [Typst])), 
-                      fill: rgb(100%,100%,100%,100%), 
-                      font: "Roboto", 
-                      size: 15.0pt), 
-                 text(body: [
-]), 
-                 page(body: text(body: [Hi]), 
-                      fill: none, 
-                      height: 40.0pt, 
-                      margin: (top: 10.0pt,
-                               rest: auto), 
-                      width: 40.0pt), 
-                 parbreak() })
diff --git a/test/out/layout/page-04.out b/test/out/layout/page-04.out
deleted file mode 100644
--- a/test/out/layout/page-04.out
+++ /dev/null
@@ -1,70 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/page-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/page-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/page-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/layout/page-04.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "page"))
-       [ NormalArg (Literal (String "a11"))
-       , KeyValArg (Identifier "flipped") (Literal (Boolean True))
-       , KeyValArg (Identifier "fill") (Ident (Identifier "red"))
-       , BlockArg []
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/page-04.typ"
-    ( line 5 , column 2 )
-    (FuncCall (Ident (Identifier "pagebreak")) [])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 page(body: [a11], 
-                      fill: rgb(100%,25%,21%,100%), 
-                      flipped: true), 
-                 text(body: [
-]), 
-                 pagebreak(), 
-                 parbreak() })
diff --git a/test/out/layout/page-05.out b/test/out/layout/page-05.out
deleted file mode 100644
--- a/test/out/layout/page-05.out
+++ /dev/null
@@ -1,121 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/page-05.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/page-05.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/page-05.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, SoftBreak
-, Code
-    "test/typ/layout/page-05.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Pt))
-       , KeyValArg (Identifier "height") (Literal (Numeric 100.0 Pt))
-       , NormalArg
-           (Block
-              (CodeBlock
-                 [ FuncCall
-                     (Ident (Identifier "layout"))
-                     [ NormalArg
-                         (FuncExpr
-                            [ NormalParam (Identifier "size") ]
-                            (Block
-                               (Content
-                                  [ Text "This"
-                                  , Space
-                                  , Text "page"
-                                  , Space
-                                  , Text "has"
-                                  , Space
-                                  , Text "a"
-                                  , Space
-                                  , Text "width"
-                                  , Space
-                                  , Text "of"
-                                  , Space
-                                  , Code
-                                      "test/typ/layout/page-05.typ"
-                                      ( line 5 , column 45 )
-                                      (FieldAccess
-                                         (Ident (Identifier "width")) (Ident (Identifier "size")))
-                                  , Space
-                                  , Text "and"
-                                  , Space
-                                  , Text "height"
-                                  , Space
-                                  , Text "of"
-                                  , Space
-                                  , Code
-                                      "test/typ/layout/page-05.typ"
-                                      ( line 5 , column 71 )
-                                      (FieldAccess
-                                         (Ident (Identifier "height")) (Ident (Identifier "size")))
-                                  , Space
-                                  ])))
-                     ]
-                 , FuncCall
-                     (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 1.0 Em)) ]
-                 , FuncCall
-                     (Ident (Identifier "place"))
-                     [ NormalArg (Ident (Identifier "left"))
-                     , NormalArg
-                         (FuncCall
-                            (Ident (Identifier "rect"))
-                            [ KeyValArg (Identifier "width") (Literal (Numeric 80.0 Pt))
-                            , KeyValArg (Identifier "stroke") (Ident (Identifier "blue"))
-                            ])
-                     ]
-                 ]))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 page(body: { layout(func: ), 
-                              h(amount: 1.0em), 
-                              place(alignment: left, 
-                                    body: rect(stroke: rgb(0%,45%,85%,100%), 
-                                               width: 80.0pt)) }, 
-                      height: 100.0pt, 
-                      width: 100.0pt), 
-                 parbreak() })
diff --git a/test/out/layout/page-margin-00.out b/test/out/layout/page-margin-00.out
deleted file mode 100644
--- a/test/out/layout/page-margin-00.out
+++ /dev/null
@@ -1,95 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/page-margin-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/page-margin-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/page-margin-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/page-margin-00.typ"
-    ( line 3 , column 2 )
-    (Block
-       (Content
-          [ SoftBreak
-          , Code
-              "test/typ/layout/page-margin-00.typ"
-              ( line 4 , column 4 )
-              (Set
-                 (Ident (Identifier "page"))
-                 [ KeyValArg (Identifier "height") (Literal (Numeric 20.0 Pt))
-                 , KeyValArg (Identifier "margin") (Literal (Numeric 5.0 Pt))
-                 ])
-          , SoftBreak
-          , Code
-              "test/typ/layout/page-margin-00.typ"
-              ( line 5 , column 4 )
-              (FuncCall
-                 (Ident (Identifier "place"))
-                 [ NormalArg
-                     (Plus (Ident (Identifier "top")) (Ident (Identifier "left")))
-                 , BlockArg [ Text "TL" ]
-                 ])
-          , SoftBreak
-          , Code
-              "test/typ/layout/page-margin-00.typ"
-              ( line 6 , column 4 )
-              (FuncCall
-                 (Ident (Identifier "place"))
-                 [ NormalArg
-                     (Plus (Ident (Identifier "bottom")) (Ident (Identifier "right")))
-                 , BlockArg [ Text "BR" ]
-                 ])
-          , ParBreak
-          ]))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 place(alignment: Axes(left, top), 
-                       body: text(body: [TL])), 
-                 text(body: [
-]), 
-                 place(alignment: Axes(right, bottom), 
-                       body: text(body: [BR])), 
-                 parbreak(), 
-                 parbreak() })
diff --git a/test/out/layout/page-margin-01.out b/test/out/layout/page-margin-01.out
deleted file mode 100644
--- a/test/out/layout/page-margin-01.out
+++ /dev/null
@@ -1,200 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/page-margin-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/page-margin-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/page-margin-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/page-margin-01.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 40.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/layout/page-margin-01.typ"
-    ( line 4 , column 2 )
-    (Block
-       (Content
-          [ Code
-              "test/typ/layout/page-margin-01.typ"
-              ( line 4 , column 4 )
-              (Set
-                 (Ident (Identifier "page"))
-                 [ KeyValArg
-                     (Identifier "margin")
-                     (Dict
-                        [ Reg ( Ident (Identifier "left") , Literal (Numeric 0.0 Pt) ) ])
-                 ])
-          , Space
-          , Code
-              "test/typ/layout/page-margin-01.typ"
-              ( line 4 , column 36 )
-              (FuncCall
-                 (Ident (Identifier "align"))
-                 [ NormalArg (Ident (Identifier "left"))
-                 , BlockArg [ Text "Left" ]
-                 ])
-          ]))
-, SoftBreak
-, Code
-    "test/typ/layout/page-margin-01.typ"
-    ( line 5 , column 2 )
-    (Block
-       (Content
-          [ Code
-              "test/typ/layout/page-margin-01.typ"
-              ( line 5 , column 4 )
-              (Set
-                 (Ident (Identifier "page"))
-                 [ KeyValArg
-                     (Identifier "margin")
-                     (Dict
-                        [ Reg ( Ident (Identifier "right") , Literal (Numeric 0.0 Pt) ) ])
-                 ])
-          , Space
-          , Code
-              "test/typ/layout/page-margin-01.typ"
-              ( line 5 , column 37 )
-              (FuncCall
-                 (Ident (Identifier "align"))
-                 [ NormalArg (Ident (Identifier "right"))
-                 , BlockArg [ Text "Right" ]
-                 ])
-          ]))
-, SoftBreak
-, Code
-    "test/typ/layout/page-margin-01.typ"
-    ( line 6 , column 2 )
-    (Block
-       (Content
-          [ Code
-              "test/typ/layout/page-margin-01.typ"
-              ( line 6 , column 4 )
-              (Set
-                 (Ident (Identifier "page"))
-                 [ KeyValArg
-                     (Identifier "margin")
-                     (Dict
-                        [ Reg ( Ident (Identifier "top") , Literal (Numeric 0.0 Pt) ) ])
-                 ])
-          , Space
-          , Code
-              "test/typ/layout/page-margin-01.typ"
-              ( line 6 , column 35 )
-              (FuncCall
-                 (Ident (Identifier "align"))
-                 [ NormalArg (Ident (Identifier "top")) , BlockArg [ Text "Top" ] ])
-          ]))
-, SoftBreak
-, Code
-    "test/typ/layout/page-margin-01.typ"
-    ( line 7 , column 2 )
-    (Block
-       (Content
-          [ Code
-              "test/typ/layout/page-margin-01.typ"
-              ( line 7 , column 4 )
-              (Set
-                 (Ident (Identifier "page"))
-                 [ KeyValArg
-                     (Identifier "margin")
-                     (Dict
-                        [ Reg ( Ident (Identifier "bottom") , Literal (Numeric 0.0 Pt) ) ])
-                 ])
-          , Space
-          , Code
-              "test/typ/layout/page-margin-01.typ"
-              ( line 7 , column 38 )
-              (FuncCall
-                 (Ident (Identifier "align"))
-                 [ NormalArg (Ident (Identifier "bottom"))
-                 , BlockArg [ Text "Bottom" ]
-                 ])
-          ]))
-, ParBreak
-, Comment
-, Code
-    "test/typ/layout/page-margin-01.typ"
-    ( line 10 , column 2 )
-    (Block
-       (Content
-          [ Code
-              "test/typ/layout/page-margin-01.typ"
-              ( line 10 , column 4 )
-              (Set
-                 (Ident (Identifier "page"))
-                 [ KeyValArg
-                     (Identifier "margin")
-                     (Dict
-                        [ Reg ( Ident (Identifier "rest") , Literal (Numeric 0.0 Pt) )
-                        , Reg ( Ident (Identifier "left") , Literal (Numeric 20.0 Pt) )
-                        ])
-                 ])
-          , Space
-          , Text "Overridden"
-          ]))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [ ]), 
-                 align(alignment: left, 
-                       body: text(body: [Left])), 
-                 text(body: [
-]), 
-                 text(body: [ ]), 
-                 align(alignment: right, 
-                       body: text(body: [Right])), 
-                 text(body: [
-]), 
-                 text(body: [ ]), 
-                 align(alignment: top, 
-                       body: text(body: [Top])), 
-                 text(body: [
-]), 
-                 text(body: [ ]), 
-                 align(alignment: bottom, 
-                       body: text(body: [Bottom])), 
-                 parbreak(), 
-                 text(body: [ Overridden]), 
-                 parbreak() })
diff --git a/test/out/layout/page-marginals-00.out b/test/out/layout/page-marginals-00.out
deleted file mode 100644
--- a/test/out/layout/page-marginals-00.out
+++ /dev/null
@@ -1,372 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/page-marginals-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/page-marginals-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/page-marginals-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/layout/page-marginals-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "paper") (Literal (String "a8"))
-       , KeyValArg
-           (Identifier "margin")
-           (Dict
-              [ Reg ( Ident (Identifier "x") , Literal (Numeric 15.0 Pt) )
-              , Reg ( Ident (Identifier "y") , Literal (Numeric 30.0 Pt) )
-              ])
-       , KeyValArg
-           (Identifier "header")
-           (Block
-              (CodeBlock
-                 [ FuncCall
-                     (Ident (Identifier "text"))
-                     [ NormalArg (Ident (Identifier "eastern"))
-                     , BlockArg [ Strong [ Text "Typst" ] ]
-                     ]
-                 , FuncCall
-                     (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 1.0 Fr)) ]
-                 , FuncCall
-                     (Ident (Identifier "text"))
-                     [ NormalArg (Literal (Numeric 0.8 Em))
-                     , BlockArg [ Emph [ Text "Chapter" , Space , Text "1" ] ]
-                     ]
-                 ]))
-       , KeyValArg
-           (Identifier "footer")
-           (FuncCall
-              (Ident (Identifier "align"))
-              [ NormalArg (Ident (Identifier "center"))
-              , BlockArg
-                  [ Text "~"
-                  , Space
-                  , Code
-                      "test/typ/layout/page-marginals-00.typ"
-                      ( line 10 , column 29 )
-                      (FuncCall
-                         (FieldAccess
-                            (Ident (Identifier "display"))
-                            (FuncCall
-                               (Ident (Identifier "counter"))
-                               [ NormalArg (Ident (Identifier "page")) ]))
-                         [])
-                  , Space
-                  , Text "~"
-                  ]
-              ])
-       , KeyValArg
-           (Identifier "background")
-           (FuncCall
-              (FieldAccess
-                 (Ident (Identifier "display"))
-                 (FuncCall
-                    (Ident (Identifier "counter"))
-                    [ NormalArg (Ident (Identifier "page")) ]))
-              [ NormalArg
-                  (FuncExpr
-                     [ NormalParam (Identifier "n") ]
-                     (If
-                        [ ( LessThanOrEqual (Ident (Identifier "n")) (Literal (Int 2))
-                          , Block
-                              (CodeBlock
-                                 [ FuncCall
-                                     (Ident (Identifier "place"))
-                                     [ NormalArg
-                                         (Plus
-                                            (Ident (Identifier "center"))
-                                            (Ident (Identifier "horizon")))
-                                     , NormalArg
-                                         (FuncCall
-                                            (Ident (Identifier "circle"))
-                                            [ KeyValArg
-                                                (Identifier "radius") (Literal (Numeric 1.0 Cm))
-                                            , KeyValArg
-                                                (Identifier "fill")
-                                                (FuncCall
-                                                   (Ident (Identifier "luma"))
-                                                   [ NormalArg (Literal (Numeric 90.0 Percent)) ])
-                                            ])
-                                     ]
-                                 ])
-                          )
-                        ]))
-              ])
-       ])
-, ParBreak
-, Text "But,"
-, Space
-, Text "soft!"
-, Space
-, Text "what"
-, Space
-, Text "light"
-, Space
-, Text "through"
-, Space
-, Text "yonder"
-, Space
-, Text "window"
-, Space
-, Text "breaks?"
-, Space
-, Text "It"
-, Space
-, Text "is"
-, Space
-, Text "the"
-, Space
-, Text "east,"
-, Space
-, Text "and"
-, Space
-, Text "Juliet"
-, SoftBreak
-, Text "is"
-, Space
-, Text "the"
-, Space
-, Text "sun"
-, Text "."
-, Space
-, Text "Arise,"
-, Space
-, Text "fair"
-, Space
-, Text "sun,"
-, Space
-, Text "and"
-, Space
-, Text "kill"
-, Space
-, Text "the"
-, Space
-, Text "envious"
-, Space
-, Text "moon,"
-, Space
-, Text "Who"
-, Space
-, Text "is"
-, Space
-, Text "already"
-, Space
-, Text "sick"
-, Space
-, Text "and"
-, SoftBreak
-, Text "pale"
-, Space
-, Text "with"
-, Space
-, Text "grief,"
-, Space
-, Text "That"
-, Space
-, Text "thou"
-, Space
-, Text "her"
-, Space
-, Text "maid"
-, Space
-, Text "art"
-, Space
-, Text "far"
-, Space
-, Text "more"
-, Space
-, Text "fair"
-, Space
-, Text "than"
-, Space
-, Text "she"
-, Text ":"
-, Space
-, Text "Be"
-, Space
-, Text "not"
-, Space
-, Text "her"
-, Space
-, Text "maid,"
-, SoftBreak
-, Text "since"
-, Space
-, Text "she"
-, Space
-, Text "is"
-, Space
-, Text "envious;"
-, Space
-, Text "Her"
-, Space
-, Text "vestal"
-, Space
-, Text "livery"
-, Space
-, Text "is"
-, Space
-, Text "but"
-, Space
-, Text "sick"
-, Space
-, Text "and"
-, Space
-, Text "green"
-, Space
-, Text "And"
-, Space
-, Text "none"
-, Space
-, Text "but"
-, Space
-, Text "fools"
-, SoftBreak
-, Text "do"
-, Space
-, Text "wear"
-, Space
-, Text "it;"
-, Space
-, Text "cast"
-, Space
-, Text "it"
-, Space
-, Text "off"
-, Text "."
-, Space
-, Text "It"
-, Space
-, Text "is"
-, Space
-, Text "my"
-, Space
-, Text "lady,"
-, Space
-, Text "O,"
-, Space
-, Text "it"
-, Space
-, Text "is"
-, Space
-, Text "my"
-, Space
-, Text "love!"
-, Space
-, Text "O,"
-, Space
-, Text "that"
-, Space
-, Text "she"
-, Space
-, Text "knew"
-, Space
-, Text "she"
-, SoftBreak
-, Text "were!"
-, Space
-, Text "She"
-, Space
-, Text "speaks"
-, Space
-, Text "yet"
-, Space
-, Text "she"
-, Space
-, Text "says"
-, Space
-, Text "nothing"
-, Text ":"
-, Space
-, Text "what"
-, Space
-, Text "of"
-, Space
-, Text "that?"
-, Space
-, Text "Her"
-, Space
-, Text "eye"
-, Space
-, Text "discourses;"
-, Space
-, Text "I"
-, Space
-, Text "will"
-, SoftBreak
-, Text "answer"
-, Space
-, Text "it"
-, Text "."
-, ParBreak
-, Code
-    "test/typ/layout/page-marginals-00.typ"
-    ( line 24 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "header") (Literal None)
-       , KeyValArg (Identifier "height") (Literal Auto)
-       , KeyValArg
-           (Identifier "margin")
-           (Dict
-              [ Reg ( Ident (Identifier "top") , Literal (Numeric 15.0 Pt) )
-              , Reg ( Ident (Identifier "bottom") , Literal (Numeric 25.0 Pt) )
-              ])
-       ])
-, SoftBreak
-, Text "The"
-, Space
-, Text "END"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [But, soft! what light through yonder window breaks? It is the east, and Juliet
-is the sun. Arise, fair sun, and kill the envious moon, Who is already sick and
-pale with grief, That thou her maid art far more fair than she: Be not her maid,
-since she is envious; Her vestal livery is but sick and green And none but fools
-do wear it; cast it off. It is my lady, O, it is my love! O, that she knew she
-were! She speaks yet she says nothing: what of that? Her eye discourses; I will
-answer it.]), 
-                 parbreak(), 
-                 text(body: [
-The END.]), 
-                 parbreak() })
diff --git a/test/out/layout/page-style-00.out b/test/out/layout/page-style-00.out
deleted file mode 100644
--- a/test/out/layout/page-style-00.out
+++ /dev/null
@@ -1,58 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/page-style-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/page-style-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/page-style-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/layout/page-style-00.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ NormalArg (Literal (String "a11"))
-       , KeyValArg (Identifier "flipped") (Literal (Boolean True))
-       , KeyValArg (Identifier "fill") (Ident (Identifier "green"))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak() })
diff --git a/test/out/layout/page-style-01.out b/test/out/layout/page-style-01.out
deleted file mode 100644
--- a/test/out/layout/page-style-01.out
+++ /dev/null
@@ -1,63 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/page-style-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/page-style-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/page-style-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/layout/page-style-01.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "fill") (Ident (Identifier "red")) ])
-, SoftBreak
-, Code
-    "test/typ/layout/page-style-01.typ"
-    ( line 5 , column 2 )
-    (FuncCall (Ident (Identifier "pagebreak")) [])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 pagebreak(), 
-                 parbreak() })
diff --git a/test/out/layout/page-style-02.out b/test/out/layout/page-style-02.out
deleted file mode 100644
--- a/test/out/layout/page-style-02.out
+++ /dev/null
@@ -1,73 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/page-style-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/page-style-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/page-style-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/layout/page-style-02.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "page")) [ NormalArg (Literal (String "a4")) ])
-, SoftBreak
-, Code
-    "test/typ/layout/page-style-02.typ"
-    ( line 5 , column 2 )
-    (Set
-       (Ident (Identifier "page")) [ NormalArg (Literal (String "a5")) ])
-, SoftBreak
-, Code
-    "test/typ/layout/page-style-02.typ"
-    ( line 6 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 1.0 Cm))
-       , KeyValArg (Identifier "height") (Literal (Numeric 1.0 Cm))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak() })
diff --git a/test/out/layout/page-style-03.out b/test/out/layout/page-style-03.out
deleted file mode 100644
--- a/test/out/layout/page-style-03.out
+++ /dev/null
@@ -1,98 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/page-style-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/page-style-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/page-style-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/layout/page-style-03.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "page")) [ NormalArg (Literal (String "a4")) ])
-, SoftBreak
-, Code
-    "test/typ/layout/page-style-03.typ"
-    ( line 5 , column 2 )
-    (Set
-       (Ident (Identifier "page")) [ NormalArg (Literal (String "a5")) ])
-, SoftBreak
-, Code
-    "test/typ/layout/page-style-03.typ"
-    ( line 6 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ NormalArg (Literal (String "a11"))
-       , KeyValArg (Identifier "flipped") (Literal (Boolean True))
-       , KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/page-style-03.typ"
-    ( line 7 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "font") (Literal (String "Roboto"))
-       , NormalArg (Ident (Identifier "white"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/page-style-03.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "smallcaps")) [ BlockArg [ Text "Typst" ] ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-], 
-                      color: rgb(100%,100%,100%,100%), 
-                      font: "Roboto"), 
-                 smallcaps(body: text(body: [Typst], 
-                                      color: rgb(100%,100%,100%,100%), 
-                                      font: "Roboto")), 
-                 parbreak() })
diff --git a/test/out/layout/pagebreak-00.out b/test/out/layout/pagebreak-00.out
deleted file mode 100644
--- a/test/out/layout/pagebreak-00.out
+++ /dev/null
@@ -1,54 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/pagebreak-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/pagebreak-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/pagebreak-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/layout/pagebreak-00.typ"
-    ( line 4 , column 2 )
-    (FuncCall (Ident (Identifier "pagebreak")) [])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 pagebreak(), 
-                 parbreak() })
diff --git a/test/out/layout/pagebreak-01.out b/test/out/layout/pagebreak-01.out
deleted file mode 100644
--- a/test/out/layout/pagebreak-01.out
+++ /dev/null
@@ -1,73 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/pagebreak-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/pagebreak-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/pagebreak-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/layout/pagebreak-01.typ"
-    ( line 4 , column 2 )
-    (FuncCall (Ident (Identifier "pagebreak")) [])
-, SoftBreak
-, Code
-    "test/typ/layout/pagebreak-01.typ"
-    ( line 5 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 2.0 Cm))
-       , KeyValArg (Identifier "fill") (Ident (Identifier "green"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/pagebreak-01.typ"
-    ( line 6 , column 2 )
-    (FuncCall (Ident (Identifier "pagebreak")) [])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 pagebreak(), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 pagebreak(), 
-                 parbreak() })
diff --git a/test/out/layout/pagebreak-02.out b/test/out/layout/pagebreak-02.out
deleted file mode 100644
--- a/test/out/layout/pagebreak-02.out
+++ /dev/null
@@ -1,91 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/pagebreak-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/pagebreak-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/pagebreak-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/layout/pagebreak-02.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "fill") (Ident (Identifier "aqua")) ])
-, SoftBreak
-, Code
-    "test/typ/layout/pagebreak-02.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "pagebreak"))
-       [ KeyValArg (Identifier "weak") (Literal (Boolean True)) ])
-, SoftBreak
-, Text "First"
-, SoftBreak
-, Code
-    "test/typ/layout/pagebreak-02.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "pagebreak"))
-       [ KeyValArg (Identifier "weak") (Literal (Boolean True)) ])
-, SoftBreak
-, Text "Second"
-, SoftBreak
-, Code
-    "test/typ/layout/pagebreak-02.typ"
-    ( line 9 , column 2 )
-    (FuncCall
-       (Ident (Identifier "pagebreak"))
-       [ KeyValArg (Identifier "weak") (Literal (Boolean True)) ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 pagebreak(weak: true), 
-                 text(body: [
-First
-]), 
-                 pagebreak(weak: true), 
-                 text(body: [
-Second
-]), 
-                 pagebreak(weak: true), 
-                 parbreak() })
diff --git a/test/out/layout/pagebreak-03.out b/test/out/layout/pagebreak-03.out
deleted file mode 100644
--- a/test/out/layout/pagebreak-03.out
+++ /dev/null
@@ -1,126 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/pagebreak-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/pagebreak-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/pagebreak-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/layout/pagebreak-03.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 80.0 Pt))
-       , KeyValArg (Identifier "height") (Literal (Numeric 30.0 Pt))
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/pagebreak-03.typ"
-    ( line 5 , column 2 )
-    (Block
-       (Content
-          [ Code
-              "test/typ/layout/pagebreak-03.typ"
-              ( line 5 , column 4 )
-              (Set
-                 (Ident (Identifier "page"))
-                 [ KeyValArg (Identifier "width") (Literal (Numeric 60.0 Pt)) ])
-          , Space
-          , Text "First"
-          ]))
-, SoftBreak
-, Code
-    "test/typ/layout/pagebreak-03.typ"
-    ( line 6 , column 2 )
-    (FuncCall (Ident (Identifier "pagebreak")) [])
-, SoftBreak
-, Code
-    "test/typ/layout/pagebreak-03.typ"
-    ( line 7 , column 2 )
-    (FuncCall (Ident (Identifier "pagebreak")) [])
-, SoftBreak
-, Text "Third"
-, SoftBreak
-, Code
-    "test/typ/layout/pagebreak-03.typ"
-    ( line 9 , column 2 )
-    (FuncCall
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 20.0 Pt))
-       , KeyValArg (Identifier "fill") (Ident (Identifier "red"))
-       , BlockArg []
-       ])
-, SoftBreak
-, Text "Fif"
-, Code
-    "test/typ/layout/pagebreak-03.typ"
-    ( line 10 , column 5 )
-    (Block
-       (Content
-          [ Code
-              "test/typ/layout/pagebreak-03.typ"
-              ( line 10 , column 7 )
-              (Set (Ident (Identifier "page")) [])
-          , Text "th"
-          ]))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [ First]), 
-                 text(body: [
-]), 
-                 pagebreak(), 
-                 text(body: [
-]), 
-                 pagebreak(), 
-                 text(body: [
-Third
-]), 
-                 page(body: {  }, 
-                      fill: rgb(100%,25%,21%,100%), 
-                      height: 20.0pt, 
-                      width: 60.0pt), 
-                 text(body: [
-Fif]), 
-                 text(body: [th]), 
-                 parbreak() })
diff --git a/test/out/layout/pagebreak-04.out b/test/out/layout/pagebreak-04.out
deleted file mode 100644
--- a/test/out/layout/pagebreak-04.out
+++ /dev/null
@@ -1,111 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/pagebreak-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/pagebreak-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/pagebreak-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/layout/pagebreak-04.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "fill") (Ident (Identifier "navy")) ])
-, SoftBreak
-, Code
-    "test/typ/layout/pagebreak-04.typ"
-    ( line 5 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "fill") (Ident (Identifier "white")) ])
-, SoftBreak
-, Text "First"
-, SoftBreak
-, Code
-    "test/typ/layout/pagebreak-04.typ"
-    ( line 7 , column 2 )
-    (FuncCall (Ident (Identifier "pagebreak")) [])
-, SoftBreak
-, Code
-    "test/typ/layout/pagebreak-04.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "page")) [ BlockArg [ Text "Second" ] ])
-, SoftBreak
-, Code
-    "test/typ/layout/pagebreak-04.typ"
-    ( line 9 , column 2 )
-    (FuncCall
-       (Ident (Identifier "pagebreak"))
-       [ KeyValArg (Identifier "weak") (Literal (Boolean True)) ])
-, SoftBreak
-, Code
-    "test/typ/layout/pagebreak-04.typ"
-    ( line 10 , column 2 )
-    (FuncCall
-       (Ident (Identifier "page")) [ BlockArg [ Text "Third" ] ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-First
-], 
-                      fill: rgb(100%,100%,100%,100%)), 
-                 pagebreak(), 
-                 text(body: [
-], 
-                      fill: rgb(100%,100%,100%,100%)), 
-                 page(body: text(body: [Second], 
-                                 fill: rgb(100%,100%,100%,100%)), 
-                      fill: rgb(0%,12%,24%,100%)), 
-                 text(body: [
-], 
-                      fill: rgb(100%,100%,100%,100%)), 
-                 pagebreak(weak: true), 
-                 text(body: [
-], 
-                      fill: rgb(100%,100%,100%,100%)), 
-                 page(body: text(body: [Third], 
-                                 fill: rgb(100%,100%,100%,100%)), 
-                      fill: rgb(0%,12%,24%,100%)), 
-                 parbreak() })
diff --git a/test/out/layout/par-00.out b/test/out/layout/par-00.out
deleted file mode 100644
--- a/test/out/layout/par-00.out
+++ /dev/null
@@ -1,77 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/par-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/par-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/par-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/par-00.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "align"))
-       [ NormalArg (Ident (Identifier "right")) ])
-, SoftBreak
-, Text "To"
-, Space
-, Text "the"
-, Space
-, Text "right!"
-, Space
-, Text "Where"
-, Space
-, Text "the"
-, Space
-, Text "sunlight"
-, Space
-, Text "peeks"
-, Space
-, Text "behind"
-, Space
-, Text "the"
-, Space
-, Text "mountain"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-To the right! Where the sunlight peeks behind the mountain.]), 
-                 parbreak() })
diff --git a/test/out/layout/par-01.out b/test/out/layout/par-01.out
deleted file mode 100644
--- a/test/out/layout/par-01.out
+++ /dev/null
@@ -1,102 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/par-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/par-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/par-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/par-01.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "block"))
-       [ KeyValArg (Identifier "spacing") (Literal (Numeric 1.0 Em)) ])
-, SoftBreak
-, Code
-    "test/typ/layout/par-01.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "par"))
-       [ KeyValArg (Identifier "leading") (Literal (Numeric 2.0 Pt)) ])
-, SoftBreak
-, Text "But,"
-, Space
-, Text "soft!"
-, Space
-, Text "what"
-, Space
-, Text "light"
-, Space
-, Text "through"
-, Space
-, Text "yonder"
-, Space
-, Text "window"
-, Space
-, Text "breaks?"
-, ParBreak
-, Text "It"
-, Space
-, Text "is"
-, Space
-, Text "the"
-, Space
-, Text "east,"
-, Space
-, Text "and"
-, Space
-, Text "Juliet"
-, Space
-, Text "is"
-, Space
-, Text "the"
-, Space
-, Text "sun"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-But, soft! what light through yonder window breaks?]), 
-                 parbreak(), 
-                 text(body: [It is the east, and Juliet is the sun.]), 
-                 parbreak() })
diff --git a/test/out/layout/par-02.out b/test/out/layout/par-02.out
deleted file mode 100644
--- a/test/out/layout/par-02.out
+++ /dev/null
@@ -1,105 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/par-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/par-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/par-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/layout/par-02.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "block"))
-       [ KeyValArg (Identifier "spacing") (Literal (Numeric 100.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/layout/par-02.typ"
-    ( line 5 , column 2 )
-    (Show
-       (Just (Ident (Identifier "table")))
-       (Set
-          (Ident (Identifier "block"))
-          [ KeyValArg (Identifier "above") (Literal (Numeric 5.0 Pt))
-          , KeyValArg (Identifier "below") (Literal (Numeric 5.0 Pt))
-          ]))
-, SoftBreak
-, Text "Hello"
-, SoftBreak
-, Code
-    "test/typ/layout/par-02.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "table"))
-       [ KeyValArg (Identifier "columns") (Literal (Int 4))
-       , KeyValArg
-           (Identifier "fill")
-           (FuncExpr
-              [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-              (If
-                 [ ( FuncCall
-                       (FieldAccess
-                          (Ident (Identifier "odd")) (Ident (Identifier "calc")))
-                       [ NormalArg
-                           (Plus (Ident (Identifier "x")) (Ident (Identifier "y")))
-                       ]
-                   , Block (CodeBlock [ Ident (Identifier "silver") ])
-                   )
-                 ]))
-       , BlockArg [ Text "A" ]
-       , BlockArg [ Text "B" ]
-       , BlockArg [ Text "C" ]
-       , BlockArg [ Text "D" ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-Hello
-]), 
-                 table(children: (text(body: [A]), 
-                                  text(body: [B]), 
-                                  text(body: [C]), 
-                                  text(body: [D])), 
-                       columns: 4, 
-                       fill: ), 
-                 parbreak() })
diff --git a/test/out/layout/par-03.out b/test/out/layout/par-03.out
deleted file mode 100644
--- a/test/out/layout/par-03.out
+++ /dev/null
@@ -1,90 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/par-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/par-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/par-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/par-03.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "block"))
-       [ KeyValArg (Identifier "spacing") (Literal (Numeric 0.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/layout/par-03.typ"
-    ( line 4 , column 2 )
-    (Show
-       (Just (Ident (Identifier "raw")))
-       (Set
-          (Ident (Identifier "block"))
-          [ KeyValArg (Identifier "spacing") (Literal (Numeric 15.0 Pt)) ]))
-, SoftBreak
-, Code
-    "test/typ/layout/par-03.typ"
-    ( line 5 , column 2 )
-    (Show
-       (Just (Ident (Identifier "list")))
-       (Set
-          (Ident (Identifier "block"))
-          [ KeyValArg (Identifier "spacing") (Literal (Numeric 2.5 Pt)) ]))
-, ParBreak
-, RawBlock "rust" "fn main() {}\n"
-, ParBreak
-, BulletListItem [ Text "List" , SoftBreak ]
-, SoftBreak
-, Text "Paragraph"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 raw(block: true, 
-                     lang: "rust", 
-                     text: "fn main() {}\n"), 
-                 parbreak(), 
-                 list(children: (text(body: [List
-]))), 
-                 text(body: [Paragraph]), 
-                 parbreak() })
diff --git a/test/out/layout/par-bidi-00.out b/test/out/layout/par-bidi-00.out
deleted file mode 100644
--- a/test/out/layout/par-bidi-00.out
+++ /dev/null
@@ -1,84 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/par-bidi-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/par-bidi-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/par-bidi-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/par-bidi-00.typ"
-    ( line 3 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "content")))
-       (FuncCall
-          (Ident (Identifier "par"))
-          [ BlockArg
-              [ Text "Text" , Space , Text "\1496\1462\1511\1505\1496" ]
-          ]))
-, SoftBreak
-, Code
-    "test/typ/layout/par-bidi-00.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "lang") (Literal (String "he"))
-       , NormalArg (Ident (Identifier "content"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/par-bidi-00.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "lang") (Literal (String "de"))
-       , NormalArg (Ident (Identifier "content"))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: par(body: text(body: [Text טֶקסט])), 
-                      lang: "he"), 
-                 text(body: [
-]), 
-                 text(body: par(body: text(body: [Text טֶקסט])), 
-                      lang: "de"), 
-                 parbreak() })
diff --git a/test/out/layout/par-bidi-01.out b/test/out/layout/par-bidi-01.out
deleted file mode 100644
--- a/test/out/layout/par-bidi-01.out
+++ /dev/null
@@ -1,120 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/par-bidi-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/par-bidi-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/par-bidi-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/layout/par-bidi-01.typ"
-    ( line 4 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "content")))
-       (FuncCall
-          (Ident (Identifier "par"))
-          [ BlockArg
-              [ Text "\1571\1606\1578"
-              , Space
-              , Text "A"
-              , Code
-                  "test/typ/layout/par-bidi-01.typ"
-                  ( line 4 , column 26 )
-                  (FuncCall (Ident (Identifier "emph")) [ BlockArg [ Text "B" ] ])
-              , Text "\1605\1591\1585C"
-              ]
-          ]))
-, SoftBreak
-, Code
-    "test/typ/layout/par-bidi-01.typ"
-    ( line 5 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg
-           (Identifier "font")
-           (Array
-              [ Reg (Literal (String "PT Sans"))
-              , Reg (Literal (String "Noto Sans Arabic"))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/par-bidi-01.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "lang") (Literal (String "ar"))
-       , NormalArg (Ident (Identifier "content"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/par-bidi-01.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "lang") (Literal (String "de"))
-       , NormalArg (Ident (Identifier "content"))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-], 
-                      font: ("PT Sans", 
-                             "Noto Sans Arabic")), 
-                 text(body: par(body: { text(body: [أنت A]), 
-                                        emph(body: text(body: [B])), 
-                                        text(body: [مطرC]) }), 
-                      font: ("PT Sans", 
-                             "Noto Sans Arabic"), 
-                      lang: "ar"), 
-                 text(body: [
-], 
-                      font: ("PT Sans", 
-                             "Noto Sans Arabic")), 
-                 text(body: par(body: { text(body: [أنت A]), 
-                                        emph(body: text(body: [B])), 
-                                        text(body: [مطرC]) }), 
-                      font: ("PT Sans", 
-                             "Noto Sans Arabic"), 
-                      lang: "de"), 
-                 parbreak() })
diff --git a/test/out/layout/par-bidi-02.out b/test/out/layout/par-bidi-02.out
deleted file mode 100644
--- a/test/out/layout/par-bidi-02.out
+++ /dev/null
@@ -1,120 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/par-bidi-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/par-bidi-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/par-bidi-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/layout/par-bidi-02.typ"
-    ( line 4 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "content")))
-       (FuncCall
-          (Ident (Identifier "par"))
-          [ BlockArg
-              [ Text "A\1490\1462"
-              , Code
-                  "test/typ/layout/par-bidi-02.typ"
-                  ( line 4 , column 24 )
-                  (FuncCall
-                     (Ident (Identifier "strong"))
-                     [ BlockArg [ Text "\1513\1473\1462" ] ])
-              , Text "\1501B"
-              ]
-          ]))
-, SoftBreak
-, Code
-    "test/typ/layout/par-bidi-02.typ"
-    ( line 5 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg
-           (Identifier "font")
-           (Array
-              [ Reg (Literal (String "Linux Libertine"))
-              , Reg (Literal (String "Noto Serif Hebrew"))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/par-bidi-02.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "lang") (Literal (String "he"))
-       , NormalArg (Ident (Identifier "content"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/par-bidi-02.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "lang") (Literal (String "de"))
-       , NormalArg (Ident (Identifier "content"))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-], 
-                      font: ("Linux Libertine", 
-                             "Noto Serif Hebrew")), 
-                 text(body: par(body: { text(body: [Aגֶ]), 
-                                        strong(body: text(body: [שֶׁ])), 
-                                        text(body: [םB]) }), 
-                      font: ("Linux Libertine", 
-                             "Noto Serif Hebrew"), 
-                      lang: "he"), 
-                 text(body: [
-], 
-                      font: ("Linux Libertine", 
-                             "Noto Serif Hebrew")), 
-                 text(body: par(body: { text(body: [Aגֶ]), 
-                                        strong(body: text(body: [שֶׁ])), 
-                                        text(body: [םB]) }), 
-                      font: ("Linux Libertine", 
-                             "Noto Serif Hebrew"), 
-                      lang: "de"), 
-                 parbreak() })
diff --git a/test/out/layout/par-bidi-03.out b/test/out/layout/par-bidi-03.out
deleted file mode 100644
--- a/test/out/layout/par-bidi-03.out
+++ /dev/null
@@ -1,65 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/par-bidi-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/par-bidi-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/par-bidi-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/par-bidi-03.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "dir") (Ident (Identifier "rtl")) ])
-, SoftBreak
-, Text "\1488"
-, Text "\8294"
-, Text "A"
-, Text "\8295"
-, Text "B\1489"
-, Text "\8297"
-, Text "?"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-א⁦A⁧Bב⁩?], 
-                      dir: rtl), 
-                 parbreak() })
diff --git a/test/out/layout/par-bidi-04.out b/test/out/layout/par-bidi-04.out
deleted file mode 100644
--- a/test/out/layout/par-bidi-04.out
+++ /dev/null
@@ -1,89 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/par-bidi-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/par-bidi-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/par-bidi-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/par-bidi-04.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "lang") (Literal (String "ar"))
-       , KeyValArg
-           (Identifier "font")
-           (Array
-              [ Reg (Literal (String "Noto Sans Arabic"))
-              , Reg (Literal (String "PT Sans"))
-              ])
-       ])
-, SoftBreak
-, Text "Life"
-, Space
-, Text "\1575\1604\1605\1591\1585"
-, Space
-, Text "\1607\1608"
-, Space
-, Text "\1575\1604\1581\1610\1575\1577"
-, Space
-, HardBreak
-, Text "\1575\1604\1581\1610\1575\1577"
-, Space
-, Text "\1578\1605\1591\1585"
-, Space
-, Text "is"
-, Space
-, Text "rain"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-Life المطر هو الحياة ], 
-                      font: ("Noto Sans Arabic", 
-                             "PT Sans"), 
-                      lang: "ar"), 
-                 linebreak(), 
-                 text(body: [الحياة تمطر is rain.], 
-                      font: ("Noto Sans Arabic", 
-                             "PT Sans"), 
-                      lang: "ar"), 
-                 parbreak() })
diff --git a/test/out/layout/par-bidi-05.out b/test/out/layout/par-bidi-05.out
deleted file mode 100644
--- a/test/out/layout/par-bidi-05.out
+++ /dev/null
@@ -1,75 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/par-bidi-05.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/par-bidi-05.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/par-bidi-05.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "L"
-, Space
-, Code
-    "test/typ/layout/par-bidi-05.typ"
-    ( line 3 , column 4 )
-    (FuncCall
-       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 1.0 Cm)) ])
-, Space
-, Text "\1512\1497\1493\1493\1495R"
-, Space
-, HardBreak
-, Text "L\1512\1497\1493\1493\1495"
-, Space
-, Code
-    "test/typ/layout/par-bidi-05.typ"
-    ( line 4 , column 9 )
-    (FuncCall
-       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 1.0 Cm)) ])
-, Space
-, Text "R"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [L ]), 
-                 h(amount: 1.0cm), 
-                 text(body: [ ריווחR ]), 
-                 linebreak(), 
-                 text(body: [Lריווח ]), 
-                 h(amount: 1.0cm), 
-                 text(body: [ R]), 
-                 parbreak() })
diff --git a/test/out/layout/par-bidi-06.out b/test/out/layout/par-bidi-06.out
deleted file mode 100644
--- a/test/out/layout/par-bidi-06.out
+++ /dev/null
@@ -1,76 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/par-bidi-06.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/par-bidi-06.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/par-bidi-06.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/par-bidi-06.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "lang") (Literal (String "he")) ])
-, SoftBreak
-, Text "\1511\1512\1504\1508\1497\1501Rh"
-, Code
-    "test/typ/layout/par-bidi-06.typ"
-    ( line 4 , column 10 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "image"))
-              [ NormalArg (Literal (String "/assets/files/rhino.png"))
-              , KeyValArg (Identifier "height") (Literal (Numeric 11.0 Pt))
-              ])
-       ])
-, Text "ino\1495\1497\1497\1501"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-קרנפיםRh], 
-                      lang: "he"), 
-                 box(body: image(height: 11.0pt, 
-                                 path: "/assets/files/rhino.png")), 
-                 text(body: [inoחיים], 
-                      lang: "he"), 
-                 parbreak() })
diff --git a/test/out/layout/par-bidi-07.out b/test/out/layout/par-bidi-07.out
deleted file mode 100644
--- a/test/out/layout/par-bidi-07.out
+++ /dev/null
@@ -1,67 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/par-bidi-07.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/par-bidi-07.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/par-bidi-07.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "\1575\1604\1594\1575\1604\1576"
-, Space
-, Code
-    "test/typ/layout/par-bidi-07.typ"
-    ( line 3 , column 9 )
-    (FuncCall
-       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 70.0 Pt)) ])
-, Space
-, Text "\1606"
-, Code
-    "test/typ/layout/par-bidi-07.typ"
-    ( line 3 , column 19 )
-    (Literal (String " "))
-, Text "\1577"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [الغالب ]), 
-                 h(amount: 70.0pt), 
-                 text(body: [ ن]), 
-                 text(body: [ ]), 
-                 text(body: [ة]), 
-                 parbreak() })
diff --git a/test/out/layout/par-bidi-08.out b/test/out/layout/par-bidi-08.out
deleted file mode 100644
--- a/test/out/layout/par-bidi-08.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/layout/par-indent-00.out b/test/out/layout/par-indent-00.out
deleted file mode 100644
--- a/test/out/layout/par-indent-00.out
+++ /dev/null
@@ -1,265 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/par-indent-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/par-indent-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/par-indent-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/layout/par-indent-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "par"))
-       [ KeyValArg
-           (Identifier "first-line-indent") (Literal (Numeric 12.0 Pt))
-       , KeyValArg (Identifier "leading") (Literal (Numeric 5.0 Pt))
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/par-indent-00.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "block"))
-       [ KeyValArg (Identifier "spacing") (Literal (Numeric 5.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/layout/par-indent-00.typ"
-    ( line 4 , column 2 )
-    (Show
-       (Just (Ident (Identifier "heading")))
-       (Set
-          (Ident (Identifier "text"))
-          [ KeyValArg (Identifier "size") (Literal (Numeric 10.0 Pt)) ]))
-, ParBreak
-, Text "The"
-, Space
-, Text "first"
-, Space
-, Text "paragraph"
-, Space
-, Text "has"
-, Space
-, Text "no"
-, Space
-, Text "indent"
-, Text "."
-, ParBreak
-, Text "But"
-, Space
-, Text "the"
-, Space
-, Text "second"
-, Space
-, Text "one"
-, Space
-, Text "does"
-, Text "."
-, ParBreak
-, Code
-    "test/typ/layout/par-indent-00.typ"
-    ( line 10 , column 2 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "image"))
-              [ NormalArg (Literal (String "/assets/files/tiger.jpg"))
-              , KeyValArg (Identifier "height") (Literal (Numeric 6.0 Pt))
-              ])
-       ])
-, SoftBreak
-, Text "starts"
-, Space
-, Text "a"
-, Space
-, Text "paragraph,"
-, Space
-, Text "also"
-, Space
-, Text "with"
-, Space
-, Text "indent"
-, Text "."
-, ParBreak
-, Code
-    "test/typ/layout/par-indent-00.typ"
-    ( line 13 , column 2 )
-    (FuncCall
-       (Ident (Identifier "align"))
-       [ NormalArg (Ident (Identifier "center"))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "image"))
-              [ NormalArg (Literal (String "/assets/files/rhino.png"))
-              , KeyValArg (Identifier "width") (Literal (Numeric 1.0 Cm))
-              ])
-       ])
-, ParBreak
-, Heading 1 [ Text "Headings" ]
-, BulletListItem [ Text "And" , Space , Text "lists" , Text "." ]
-, SoftBreak
-, BulletListItem
-    [ Text "Have"
-    , Space
-    , Text "no"
-    , Space
-    , Text "indent"
-    , Text "."
-    , ParBreak
-    , Text "Except"
-    , Space
-    , Text "if"
-    , Space
-    , Text "you"
-    , Space
-    , Text "have"
-    , Space
-    , Text "another"
-    , Space
-    , Text "paragraph"
-    , Space
-    , Text "in"
-    , Space
-    , Text "them"
-    , Text "."
-    , SoftBreak
-    ]
-, SoftBreak
-, Code
-    "test/typ/layout/par-indent-00.typ"
-    ( line 21 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ NormalArg (Literal (Numeric 8.0 Pt))
-       , KeyValArg (Identifier "lang") (Literal (String "ar"))
-       , KeyValArg
-           (Identifier "font")
-           (Array
-              [ Reg (Literal (String "Noto Sans Arabic"))
-              , Reg (Literal (String "Linux Libertine"))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/par-indent-00.typ"
-    ( line 22 , column 2 )
-    (Set
-       (Ident (Identifier "par"))
-       [ KeyValArg (Identifier "leading") (Literal (Numeric 8.0 Pt)) ])
-, ParBreak
-, Heading 1 [ Text "Arabic" ]
-, Text "\1583\1593"
-, Space
-, Text "\1575\1604\1606\1589"
-, Space
-, Text "\1610\1605\1591\1585"
-, Space
-, Text "\1593\1604\1610\1603"
-, ParBreak
-, Text "\1579\1605"
-, Space
-, Text "\1610\1589\1576\1581"
-, Space
-, Text "\1575\1604\1606\1589"
-, Space
-, Text "\1585\1591\1576\1611\1575"
-, Space
-, Text "\1608\1602\1575\1576\1604"
-, Space
-, Text "\1604\1604\1591\1585\1602"
-, Space
-, Text "\1608\1610\1576\1583\1608"
-, Space
-, Text "\1575\1604\1605\1587\1578\1606\1583"
-, Space
-, Text "\1585\1575\1574\1593\1611\1575"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [The first paragraph has no indent.]), 
-                 parbreak(), 
-                 text(body: [But the second one does.]), 
-                 parbreak(), 
-                 box(body: image(height: 6.0pt, 
-                                 path: "/assets/files/tiger.jpg")), 
-                 text(body: [
-starts a paragraph, also with indent.]), 
-                 parbreak(), 
-                 align(alignment: center, 
-                       body: image(path: "/assets/files/rhino.png", 
-                                   width: 1.0cm)), 
-                 parbreak(), 
-                 heading(body: text(body: [Headings]), 
-                         level: 1), 
-                 list(children: (text(body: [And lists.]), 
-                                 { text(body: [Have no indent.]), 
-                                   parbreak(), 
-                                   text(body: [Except if you have another paragraph in them.
-]) })), 
-                 text(body: [
-], 
-                      font: ("Noto Sans Arabic", 
-                             "Linux Libertine"), 
-                      lang: "ar", 
-                      size: 8.0pt), 
-                 parbreak(), 
-                 heading(body: text(body: [Arabic], 
-                                    font: ("Noto Sans Arabic", 
-                                           "Linux Libertine"), 
-                                    lang: "ar", 
-                                    size: 8.0pt), 
-                         level: 1), 
-                 text(body: [دع النص يمطر عليك], 
-                      font: ("Noto Sans Arabic", 
-                             "Linux Libertine"), 
-                      lang: "ar", 
-                      size: 8.0pt), 
-                 parbreak(), 
-                 text(body: [ثم يصبح النص رطبًا وقابل للطرق ويبدو المستند رائعًا.], 
-                      font: ("Noto Sans Arabic", 
-                             "Linux Libertine"), 
-                      lang: "ar", 
-                      size: 8.0pt), 
-                 parbreak() })
diff --git a/test/out/layout/par-indent-01.out b/test/out/layout/par-indent-01.out
deleted file mode 100644
--- a/test/out/layout/par-indent-01.out
+++ /dev/null
@@ -1,80 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/par-indent-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/par-indent-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/par-indent-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/par-indent-01.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "par"))
-       [ KeyValArg
-           (Identifier "first-line-indent") (Literal (Numeric 12.0 Pt))
-       ])
-, SoftBreak
-, Text "Why"
-, Space
-, Text "would"
-, Space
-, Text "anybody"
-, Space
-, Text "ever"
-, Space
-, Ellipsis
-, ParBreak
-, Ellipsis
-, Space
-, Text "want"
-, Space
-, Text "spacing"
-, Space
-, Text "and"
-, Space
-, Text "indent?"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-Why would anybody ever …]), 
-                 parbreak(), 
-                 text(body: [… want spacing and indent?]), 
-                 parbreak() })
diff --git a/test/out/layout/par-indent-02.out b/test/out/layout/par-indent-02.out
deleted file mode 100644
--- a/test/out/layout/par-indent-02.out
+++ /dev/null
@@ -1,66 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/par-indent-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/par-indent-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/par-indent-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/par-indent-02.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "par"))
-       [ KeyValArg
-           (Identifier "hanging-indent") (Literal (Numeric 15.0 Pt))
-       , KeyValArg (Identifier "justify") (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/par-indent-02.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 10)) ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do]), 
-                 parbreak() })
diff --git a/test/out/layout/par-indent-03.out b/test/out/layout/par-indent-03.out
deleted file mode 100644
--- a/test/out/layout/par-indent-03.out
+++ /dev/null
@@ -1,73 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/par-indent-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/par-indent-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/par-indent-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/layout/par-indent-03.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "par"))
-       [ KeyValArg
-           (Identifier "hanging-indent") (Literal (Numeric 1.0 Em))
-       ])
-, SoftBreak
-, Text "Welcome"
-, Space
-, HardBreak
-, Text "here"
-, Text "."
-, Space
-, Text "Does"
-, Space
-, Text "this"
-, Space
-, Text "work"
-, Space
-, Text "well?"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-Welcome ]), 
-                 linebreak(), 
-                 text(body: [here. Does this work well?]), 
-                 parbreak() })
diff --git a/test/out/layout/par-indent-04.out b/test/out/layout/par-indent-04.out
deleted file mode 100644
--- a/test/out/layout/par-indent-04.out
+++ /dev/null
@@ -1,102 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/par-indent-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/par-indent-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/par-indent-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/layout/par-indent-04.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "par"))
-       [ KeyValArg
-           (Identifier "hanging-indent") (Literal (Numeric 2.0 Em))
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/par-indent-04.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "dir") (Ident (Identifier "rtl")) ])
-, SoftBreak
-, Text "\1604\1570\1606"
-, Space
-, Text "\1608\1602\1583"
-, Space
-, Text "\1571\1592\1604\1605"
-, Space
-, Text "\1575\1604\1604\1610\1604"
-, Space
-, Text "\1608\1576\1583\1571\1578"
-, Space
-, Text "\1575\1604\1606\1580\1608\1605"
-, SoftBreak
-, Text "\1578\1606\1590\1582"
-, Space
-, Text "\1608\1580\1607"
-, Space
-, Text "\1575\1604\1591\1576\1610\1593\1577"
-, Space
-, Text "\1575\1604\1578\1610"
-, Space
-, Text "\1571\1593\1618\1610\1614\1578\1618"
-, Space
-, Text "\1605\1606"
-, Space
-, Text "\1591\1608\1604"
-, Space
-, Text "\1605\1575"
-, Space
-, Text "\1575\1606\1576\1593\1579\1578"
-, Space
-, Text "\1601\1610"
-, Space
-, Text "\1575\1604\1606\1607\1575\1585"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-لآن وقد أظلم الليل وبدأت النجوم
-تنضخ وجه الطبيعة التي أعْيَتْ من طول ما انبعثت في النهار], 
-                      dir: rtl), 
-                 parbreak() })
diff --git a/test/out/layout/par-justify-00.out b/test/out/layout/par-justify-00.out
deleted file mode 100644
--- a/test/out/layout/par-justify-00.out
+++ /dev/null
@@ -1,148 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/par-justify-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/par-justify-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/par-justify-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/layout/par-justify-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 180.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/layout/par-justify-00.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "block"))
-       [ KeyValArg (Identifier "spacing") (Literal (Numeric 5.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/layout/par-justify-00.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "par"))
-       [ KeyValArg (Identifier "justify") (Literal (Boolean True))
-       , KeyValArg
-           (Identifier "first-line-indent") (Literal (Numeric 14.0 Pt))
-       , KeyValArg (Identifier "leading") (Literal (Numeric 5.0 Pt))
-       ])
-, ParBreak
-, Text "This"
-, Space
-, Text "text"
-, Space
-, Text "is"
-, Space
-, Text "justified,"
-, Space
-, Text "meaning"
-, Space
-, Text "that"
-, Space
-, Text "spaces"
-, Space
-, Text "are"
-, Space
-, Text "stretched"
-, Space
-, Text "so"
-, Space
-, Text "that"
-, Space
-, Text "the"
-, Space
-, Text "text"
-, SoftBreak
-, Text "forms"
-, Space
-, Text "a"
-, Space
-, Quote '"'
-, Text "block"
-, Quote '"'
-, Space
-, Text "with"
-, Space
-, Text "flush"
-, Space
-, Text "edges"
-, Space
-, Text "at"
-, Space
-, Text "both"
-, Space
-, Text "sides"
-, Text "."
-, ParBreak
-, Text "First"
-, Space
-, Text "line"
-, Space
-, Text "indents"
-, Space
-, Text "and"
-, Space
-, Text "hyphenation"
-, Space
-, Text "play"
-, Space
-, Text "nicely"
-, Space
-, Text "with"
-, Space
-, Text "justified"
-, Space
-, Text "text"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [This text is justified, meaning that spaces are stretched so that the text
-forms a “block” with flush edges at both sides.]), 
-                 parbreak(), 
-                 text(body: [First line indents and hyphenation play nicely with justified text.]), 
-                 parbreak() })
diff --git a/test/out/layout/par-justify-01.out b/test/out/layout/par-justify-01.out
deleted file mode 100644
--- a/test/out/layout/par-justify-01.out
+++ /dev/null
@@ -1,67 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/par-justify-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/par-justify-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/par-justify-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/par-justify-01.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "par"))
-       [ KeyValArg (Identifier "justify") (Literal (Boolean True)) ])
-, SoftBreak
-, Text "A"
-, Space
-, Text "B"
-, Space
-, Text "C"
-, Space
-, HardBreak
-, Text "D"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-A B C ]), 
-                 linebreak(), 
-                 text(body: [D]), 
-                 parbreak() })
diff --git a/test/out/layout/par-justify-02.out b/test/out/layout/par-justify-02.out
deleted file mode 100644
--- a/test/out/layout/par-justify-02.out
+++ /dev/null
@@ -1,78 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/par-justify-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/par-justify-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/par-justify-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "A"
-, Space
-, Text "B"
-, Space
-, Text "C"
-, Space
-, Code
-    "test/typ/layout/par-justify-02.typ"
-    ( line 3 , column 8 )
-    (FuncCall
-       (Ident (Identifier "linebreak"))
-       [ KeyValArg (Identifier "justify") (Literal (Boolean True)) ])
-, SoftBreak
-, Text "D"
-, Space
-, Text "E"
-, Space
-, Text "F"
-, Space
-, Code
-    "test/typ/layout/par-justify-02.typ"
-    ( line 4 , column 8 )
-    (FuncCall
-       (Ident (Identifier "linebreak"))
-       [ KeyValArg (Identifier "justify") (Literal (Boolean True)) ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [A B C ]), 
-                 linebreak(justify: true), 
-                 text(body: [
-D E F ]), 
-                 linebreak(justify: true), 
-                 parbreak() })
diff --git a/test/out/layout/par-justify-03.out b/test/out/layout/par-justify-03.out
deleted file mode 100644
--- a/test/out/layout/par-justify-03.out
+++ /dev/null
@@ -1,62 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/par-justify-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/par-justify-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/par-justify-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/layout/par-justify-03.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "par"))
-       [ KeyValArg (Identifier "justify") (Literal (Boolean True)) ])
-, SoftBreak
-, Code
-    "test/typ/layout/par-justify-03.typ"
-    ( line 5 , column 2 )
-    (Literal (String ""))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak() })
diff --git a/test/out/layout/par-justify-04.out b/test/out/layout/par-justify-04.out
deleted file mode 100644
--- a/test/out/layout/par-justify-04.out
+++ /dev/null
@@ -1,82 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/par-justify-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/par-justify-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/par-justify-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/par-justify-04.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 155.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/layout/par-justify-04.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "par"))
-       [ KeyValArg (Identifier "justify") (Literal (Boolean True)) ])
-, SoftBreak
-, Text "This"
-, Space
-, Text "text"
-, Space
-, Text "can"
-, Space
-, Text "be"
-, Space
-, Text "fitted"
-, Space
-, Text "in"
-, Space
-, Text "one"
-, Space
-, Text "line"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-This text can be fitted in one line.]), 
-                 parbreak() })
diff --git a/test/out/layout/par-justify-cjk-00.out b/test/out/layout/par-justify-cjk-00.out
deleted file mode 100644
--- a/test/out/layout/par-justify-cjk-00.out
+++ /dev/null
@@ -1,117 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/par-justify-cjk-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/par-justify-cjk-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/par-justify-cjk-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, SoftBreak
-, Comment
-, Comment
-, Comment
-, Code
-    "test/typ/layout/par-justify-cjk-00.typ"
-    ( line 7 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal Auto) ])
-, SoftBreak
-, Code
-    "test/typ/layout/par-justify-cjk-00.typ"
-    ( line 8 , column 2 )
-    (Set
-       (Ident (Identifier "par"))
-       [ KeyValArg (Identifier "justify") (Literal (Boolean True)) ])
-, SoftBreak
-, Code
-    "test/typ/layout/par-justify-cjk-00.typ"
-    ( line 9 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg
-           (Identifier "font") (Literal (String "Noto Serif CJK SC"))
-       , KeyValArg (Identifier "lang") (Literal (String "zh"))
-       ])
-, ParBreak
-, Code
-    "test/typ/layout/par-justify-cjk-00.typ"
-    ( line 11 , column 2 )
-    (FuncCall
-       (Ident (Identifier "rect"))
-       [ KeyValArg (Identifier "inset") (Literal (Numeric 0.0 Pt))
-       , KeyValArg (Identifier "width") (Literal (Numeric 80.0 Pt))
-       , KeyValArg
-           (Identifier "fill")
-           (FuncCall
-              (Ident (Identifier "rgb")) [ NormalArg (Literal (String "eee")) ])
-       , BlockArg
-           [ SoftBreak
-           , Text
-               "\20013\25991\32500\22522\30334\31185\20351\29992\27721\23383\20070\20889\65292\27721\23383\26159\27721\26063\25110\21326\20154\30340\20849\21516\25991\23383\65292\26159\20013\22269\22823\38470\12289\26032\21152\22369\12289\39532\26469\35199\20122\12289\21488\28286\12289\39321\28207\12289\28595\38376\30340\21807\19968\23448\26041\25991\23383\25110\23448\26041\25991\23383\20043\19968\12290\&25"
-           , Text "."
-           , Text
-               "9%\65292\32780\32654\22269\21644\33655\20848\21017\20998\21029\21344\&13"
-           , Text "."
-           , Text "7%\21450\&8"
-           , Text "."
-           , Text
-               "2%\12290\36817\24180\20358\65292\20013\22269\22823\38470\22320\21306\30340\32500\22522\30334\31185\32534\36753\32773\27491\22312\36805\36895\22686\21152\65307"
-           , ParBreak
-           ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 rect(body: { text(body: [
-中文维基百科使用汉字书写，汉字是汉族或华人的共同文字，是中国大陆、新加坡、马来西亚、台湾、香港、澳门的唯一官方文字或官方文字之一。25.9%，而美国和荷兰则分別占13.7%及8.2%。近年來，中国大陆地区的维基百科编辑者正在迅速增加；], 
-                                   font: "Noto Serif CJK SC", 
-                                   lang: "zh"), 
-                              parbreak() }, 
-                      fill: rgb(5%,5%,5%,100%), 
-                      inset: 0.0pt, 
-                      width: 80.0pt), 
-                 parbreak() })
diff --git a/test/out/layout/par-justify-cjk-01.out b/test/out/layout/par-justify-cjk-01.out
deleted file mode 100644
--- a/test/out/layout/par-justify-cjk-01.out
+++ /dev/null
@@ -1,121 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/par-justify-cjk-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/par-justify-cjk-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/par-justify-cjk-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/par-justify-cjk-01.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal Auto) ])
-, SoftBreak
-, Code
-    "test/typ/layout/par-justify-cjk-01.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "par"))
-       [ KeyValArg (Identifier "justify") (Literal (Boolean True)) ])
-, SoftBreak
-, Code
-    "test/typ/layout/par-justify-cjk-01.typ"
-    ( line 5 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "lang") (Literal (String "jp")) ])
-, SoftBreak
-, Code
-    "test/typ/layout/par-justify-cjk-01.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "rect"))
-       [ KeyValArg (Identifier "inset") (Literal (Numeric 0.0 Pt))
-       , KeyValArg (Identifier "width") (Literal (Numeric 80.0 Pt))
-       , KeyValArg
-           (Identifier "fill")
-           (FuncCall
-              (Ident (Identifier "rgb")) [ NormalArg (Literal (String "eee")) ])
-       , BlockArg
-           [ SoftBreak
-           , Text "\12454\12451\12461\12506\12487\12451\12450\65288\33521"
-           , Text ":"
-           , Space
-           , Text
-               "Wikipedia\65289\12399\12289\19990\30028\20013\12398\12508\12521\12531\12486\12451\12450\12398\20849\21516\20316\26989\12395\12424\12387\12390\22519\31558\21450\12403\20316\25104\12373\12428\12427\12501\12522\12540\12398\22810\35328\35486\12452\12531\12479\12540\12493\12483\12488\30334\31185\20107\20856\12391\12354\12427\12290\20027\12395\23492\20184\12395\20381\12387\12390\27963\21205\12375\12390\12356\12427\38750\21942\21033\22243\20307\12300\12454\12451\12461\12513\12487\12451\12450\36001\22243\12301\12364\25152\26377\12539\36939\21942\12375\12390\12356\12427\12290"
-           , ParBreak
-           , Text
-               "\23554\38272\23478\12395\12424\12427\12458\12531\12521\12452\12531\30334\31185\20107\20856\12503\12525\12472\12455\12463\12488Nupedia\65288\12492\12540\12506\12487\12451\12450\65289\12434\21069\36523\12392\12375\12390\12289\&2001\24180\&1\26376\12289\12521\12522\12540\12539\12469\12531\12460\12540\12392\12472\12511\12540\12539\12454\12455\12540\12523\12474\65288\33521"
-           , Text ":"
-           , Space
-           , Text "Jimmy"
-           , Space
-           , Text "Donal"
-           , Space
-           , Quote '"'
-           , Text "Jimbo"
-           , Quote '"'
-           , Space
-           , Text
-               "Wales\65289\12395\12424\12426\33521\35486\12391\12503\12525\12472\12455\12463\12488\12364\38283\22987\12373\12428\12383\12290"
-           , ParBreak
-           ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-], lang: "jp"), 
-                 rect(body: { text(body: [
-ウィキペディア（英: Wikipedia）は、世界中のボランティアの共同作業によって執筆及び作成されるフリーの多言語インターネット百科事典である。主に寄付に依って活動している非営利団体「ウィキメディア財団」が所有・運営している。], 
-                                   lang: "jp"), 
-                              parbreak(), 
-                              text(body: [専門家によるオンライン百科事典プロジェクトNupedia（ヌーペディア）を前身として、2001年1月、ラリー・サンガーとジミー・ウェールズ（英: Jimmy Donal “Jimbo” Wales）により英語でプロジェクトが開始された。], 
-                                   lang: "jp"), 
-                              parbreak() }, 
-                      fill: rgb(5%,5%,5%,100%), 
-                      inset: 0.0pt, 
-                      width: 80.0pt), 
-                 parbreak() })
diff --git a/test/out/layout/par-justify-cjk-02.out b/test/out/layout/par-justify-cjk-02.out
deleted file mode 100644
--- a/test/out/layout/par-justify-cjk-02.out
+++ /dev/null
@@ -1,120 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/par-justify-cjk-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/par-justify-cjk-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/par-justify-cjk-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/par-justify-cjk-02.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal Auto) ])
-, SoftBreak
-, Code
-    "test/typ/layout/par-justify-cjk-02.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "lang") (Literal (String "zh"))
-       , KeyValArg
-           (Identifier "font") (Literal (String "Noto Serif CJK SC"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/par-justify-cjk-02.typ"
-    ( line 5 , column 2 )
-    (Set
-       (Ident (Identifier "par"))
-       [ KeyValArg (Identifier "justify") (Literal (Boolean True)) ])
-, SoftBreak
-, Code
-    "test/typ/layout/par-justify-cjk-02.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "rect"))
-       [ KeyValArg (Identifier "inset") (Literal (Numeric 0.0 Pt))
-       , KeyValArg (Identifier "width") (Literal (Numeric 80.0 Pt))
-       , KeyValArg
-           (Identifier "fill")
-           (FuncCall
-              (Ident (Identifier "rgb")) [ NormalArg (Literal (String "eee")) ])
-       , BlockArg
-           [ SoftBreak
-           , Text "\8220\24341\21495\27979\35797\8221\65292\36824\65292"
-           , ParBreak
-           , Text
-               "\12298\20070\21517\12299\12298\27979\35797\12299\19979\19968\34892"
-           , ParBreak
-           , Text "\12298\20070\21517\12299\12298\27979\35797\12299\12290"
-           , ParBreak
-           ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-], 
-                      font: "Noto Serif CJK SC", 
-                      lang: "zh"), 
-                 text(body: [
-], 
-                      font: "Noto Serif CJK SC", 
-                      lang: "zh"), 
-                 rect(body: { text(body: [
-“引号测试”，还，], 
-                                   font: "Noto Serif CJK SC", 
-                                   lang: "zh"), 
-                              parbreak(), 
-                              text(body: [《书名》《测试》下一行], 
-                                   font: "Noto Serif CJK SC", 
-                                   lang: "zh"), 
-                              parbreak(), 
-                              text(body: [《书名》《测试》。], 
-                                   font: "Noto Serif CJK SC", 
-                                   lang: "zh"), 
-                              parbreak() }, 
-                      fill: rgb(5%,5%,5%,100%), 
-                      inset: 0.0pt, 
-                      width: 80.0pt), 
-                 parbreak() })
diff --git a/test/out/layout/par-justify-cjk-03.out b/test/out/layout/par-justify-cjk-03.out
deleted file mode 100644
--- a/test/out/layout/par-justify-cjk-03.out
+++ /dev/null
@@ -1,118 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/par-justify-cjk-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/par-justify-cjk-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/par-justify-cjk-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/par-justify-cjk-03.typ"
-    ( line 5 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg
-           (Identifier "width")
-           (Plus (Literal (Numeric 170.0 Pt)) (Literal (Numeric 10.0 Pt)))
-       , KeyValArg
-           (Identifier "margin")
-           (Dict
-              [ Reg ( Ident (Identifier "x") , Literal (Numeric 5.0 Pt) ) ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/par-justify-cjk-03.typ"
-    ( line 6 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg
-           (Identifier "font") (Literal (String "Noto Serif CJK SC"))
-       , KeyValArg (Identifier "lang") (Literal (String "zh"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/par-justify-cjk-03.typ"
-    ( line 7 , column 2 )
-    (Set
-       (Ident (Identifier "par"))
-       [ KeyValArg (Identifier "justify") (Literal (Boolean True)) ])
-, ParBreak
-, Text
-    "\23380\38592\26368\26089\35265\20110\12298\23665\28023\32463\12299\20013\30340\12298\28023\20869\32463\12299\65306"
-, Text "\8203"
-, Text
-    "\8220\26377\23380\38592\12290\8221\19996\27721\26472\23386\33879\12298\24322\29289\24535\12299\35760\36733\65292\23725\21335\65306\8220\23380\38592\65292\20854\22823\22914\22823\38593\32780\36275\39640\65292\27611\30342\26377\26001\32441\24425\65292\25429\32780\33988\20043\65292\25293\25163\21363\33310\12290\8221"
-, ParBreak
-, Code
-    "test/typ/layout/par-justify-cjk-03.typ"
-    ( line 11 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg
-           (Identifier "font") (Literal (String "Noto Serif CJK TC"))
-       , KeyValArg (Identifier "lang") (Literal (String "zh"))
-       , KeyValArg (Identifier "region") (Literal (String "hk"))
-       ])
-, SoftBreak
-, Text
-    "\23380\38592\26368\26089\35265\20110\12298\23665\28023\32463\12299\20013\30340\12298\28023\20869\32463\12299\65306\12300\26377\23380\38592\12290\12301\19996\27721\26472\23386\33879\12298\24322\29289\24535\12299\35760\36733\65292\23725\21335\65306\12300\23380\38592\65292\20854\22823\22914\22823\38593\32780\36275\39640\65292\27611\30342\26377\26001\32441\24425\65292\25429\32780\33988\20043\65292\25293\25163\21363\33310\12290\12301"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-], 
-                      font: "Noto Serif CJK SC", 
-                      lang: "zh"), 
-                 parbreak(), 
-                 text(body: [孔雀最早见于《山海经》中的《海内经》：​“有孔雀。”东汉杨孚著《异物志》记载，岭南：“孔雀，其大如大雁而足高，毛皆有斑纹彩，捕而蓄之，拍手即舞。”], 
-                      font: "Noto Serif CJK SC", 
-                      lang: "zh"), 
-                 parbreak(), 
-                 text(body: [
-孔雀最早见于《山海经》中的《海内经》：「有孔雀。」东汉杨孚著《异物志》记载，岭南：「孔雀，其大如大雁而足高，毛皆有斑纹彩，捕而蓄之，拍手即舞。」], 
-                      font: "Noto Serif CJK TC", 
-                      lang: "zh", 
-                      region: "hk"), 
-                 parbreak() })
diff --git a/test/out/layout/par-knuth-00.out b/test/out/layout/par-knuth-00.out
deleted file mode 100644
--- a/test/out/layout/par-knuth-00.out
+++ /dev/null
@@ -1,518 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/par-knuth-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/par-knuth-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/par-knuth-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/layout/par-knuth-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal Auto)
-       , KeyValArg (Identifier "height") (Literal Auto)
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/par-knuth-00.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "par"))
-       [ KeyValArg (Identifier "leading") (Literal (Numeric 4.0 Pt))
-       , KeyValArg (Identifier "justify") (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/par-knuth-00.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg
-           (Identifier "font") (Literal (String "New Computer Modern"))
-       ])
-, ParBreak
-, Code
-    "test/typ/layout/par-knuth-00.typ"
-    ( line 6 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "story")))
-       (Block
-          (Content
-             [ SoftBreak
-             , Text "In"
-             , Space
-             , Text "olden"
-             , Space
-             , Text "times"
-             , Space
-             , Text "when"
-             , Space
-             , Text "wishing"
-             , Space
-             , Text "still"
-             , Space
-             , Text "helped"
-             , Space
-             , Text "one,"
-             , Space
-             , Text "there"
-             , Space
-             , Text "lived"
-             , Space
-             , Text "a"
-             , Space
-             , Text "king"
-             , Space
-             , Text "whose"
-             , SoftBreak
-             , Text "daughters"
-             , Space
-             , Text "were"
-             , Space
-             , Text "all"
-             , Space
-             , Text "beautiful;"
-             , Space
-             , Text "and"
-             , Space
-             , Text "the"
-             , Space
-             , Text "youngest"
-             , Space
-             , Text "was"
-             , Space
-             , Text "so"
-             , Space
-             , Text "beautiful"
-             , Space
-             , Text "that"
-             , Space
-             , Text "the"
-             , Space
-             , Text "sun"
-             , SoftBreak
-             , Text "itself,"
-             , Space
-             , Text "which"
-             , Space
-             , Text "has"
-             , Space
-             , Text "seen"
-             , Space
-             , Text "so"
-             , Space
-             , Text "much,"
-             , Space
-             , Text "was"
-             , Space
-             , Text "astonished"
-             , Space
-             , Text "whenever"
-             , Space
-             , Text "it"
-             , Space
-             , Text "shone"
-             , Space
-             , Text "in"
-             , Space
-             , Text "her"
-             , Space
-             , Text "face"
-             , Text "."
-             , SoftBreak
-             , Text "Close"
-             , Space
-             , Text "by"
-             , Space
-             , Text "the"
-             , Space
-             , Text "king\8217s"
-             , Space
-             , Text "castle"
-             , Space
-             , Text "lay"
-             , Space
-             , Text "a"
-             , Space
-             , Text "great"
-             , Space
-             , Text "dark"
-             , Space
-             , Text "red,"
-             , Space
-             , Text "and"
-             , Space
-             , Text "under"
-             , Space
-             , Text "an"
-             , Space
-             , Text "old"
-             , Space
-             , Text "lime"
-             , Text "-"
-             , Text "tree"
-             , SoftBreak
-             , Text "in"
-             , Space
-             , Text "the"
-             , Space
-             , Text "red"
-             , Space
-             , Text "was"
-             , Space
-             , Text "a"
-             , Space
-             , Text "well,"
-             , Space
-             , Text "and"
-             , Space
-             , Text "when"
-             , Space
-             , Text "the"
-             , Space
-             , Text "day"
-             , Space
-             , Text "was"
-             , Space
-             , Text "very"
-             , Space
-             , Text "warm,"
-             , Space
-             , Text "the"
-             , Space
-             , Text "king\8217s"
-             , Space
-             , Text "child"
-             , SoftBreak
-             , Text "went"
-             , Space
-             , Text "out"
-             , Space
-             , Text "into"
-             , Space
-             , Text "the"
-             , Space
-             , Text "red"
-             , Space
-             , Text "and"
-             , Space
-             , Text "sat"
-             , Space
-             , Text "down"
-             , Space
-             , Text "by"
-             , Space
-             , Text "the"
-             , Space
-             , Text "side"
-             , Space
-             , Text "of"
-             , Space
-             , Text "the"
-             , Space
-             , Text "cool"
-             , Space
-             , Text "fountain;"
-             , Space
-             , Text "and"
-             , SoftBreak
-             , Text "when"
-             , Space
-             , Text "she"
-             , Space
-             , Text "was"
-             , Space
-             , Text "bored"
-             , Space
-             , Text "she"
-             , Space
-             , Text "took"
-             , Space
-             , Text "a"
-             , Space
-             , Text "golden"
-             , Space
-             , Text "ball,"
-             , Space
-             , Text "and"
-             , Space
-             , Text "threw"
-             , Space
-             , Text "it"
-             , Space
-             , Text "up"
-             , Space
-             , Text "on"
-             , Space
-             , Text "high"
-             , Space
-             , Text "and"
-             , Space
-             , Text "caught"
-             , SoftBreak
-             , Text "it;"
-             , Space
-             , Text "and"
-             , Space
-             , Text "this"
-             , Space
-             , Text "ball"
-             , Space
-             , Text "was"
-             , Space
-             , Text "her"
-             , Space
-             , Text "favorite"
-             , Space
-             , Text "plaything"
-             , Text "."
-             , ParBreak
-             ])))
-, ParBreak
-, Code
-    "test/typ/layout/par-knuth-00.typ"
-    ( line 17 , column 2 )
-    (LetFunc
-       (Identifier "column")
-       [ NormalParam (Identifier "title")
-       , NormalParam (Identifier "linebreaks")
-       , NormalParam (Identifier "hyphenate")
-       ]
-       (Block
-          (CodeBlock
-             [ FuncCall
-                 (Ident (Identifier "rect"))
-                 [ KeyValArg (Identifier "inset") (Literal (Numeric 0.0 Pt))
-                 , KeyValArg (Identifier "width") (Literal (Numeric 132.0 Pt))
-                 , KeyValArg
-                     (Identifier "fill")
-                     (FuncCall
-                        (Ident (Identifier "rgb")) [ NormalArg (Literal (String "eee")) ])
-                 , BlockArg
-                     [ SoftBreak
-                     , Code
-                         "test/typ/layout/par-knuth-00.typ"
-                         ( line 19 , column 6 )
-                         (Set
-                            (Ident (Identifier "par"))
-                            [ KeyValArg
-                                (Identifier "linebreaks") (Ident (Identifier "linebreaks"))
-                            ])
-                     , SoftBreak
-                     , Code
-                         "test/typ/layout/par-knuth-00.typ"
-                         ( line 20 , column 6 )
-                         (Set
-                            (Ident (Identifier "text"))
-                            [ KeyValArg
-                                (Identifier "hyphenate") (Ident (Identifier "hyphenate"))
-                            ])
-                     , SoftBreak
-                     , Code
-                         "test/typ/layout/par-knuth-00.typ"
-                         ( line 21 , column 6 )
-                         (FuncCall
-                            (Ident (Identifier "strong"))
-                            [ NormalArg (Ident (Identifier "title")) ])
-                     , Space
-                     , HardBreak
-                     , Code
-                         "test/typ/layout/par-knuth-00.typ"
-                         ( line 21 , column 23 )
-                         (Ident (Identifier "story"))
-                     , ParBreak
-                     ]
-                 ]
-             ])))
-, ParBreak
-, Code
-    "test/typ/layout/par-knuth-00.typ"
-    ( line 25 , column 2 )
-    (FuncCall
-       (Ident (Identifier "grid"))
-       [ KeyValArg (Identifier "columns") (Literal (Int 3))
-       , KeyValArg (Identifier "gutter") (Literal (Numeric 10.0 Pt))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "column"))
-              [ NormalArg
-                  (Block
-                     (Content
-                        [ Text "Simple"
-                        , Space
-                        , Text "without"
-                        , Space
-                        , Text "hyphens"
-                        ]))
-              , NormalArg (Literal (String "simple"))
-              , NormalArg (Literal (Boolean False))
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "column"))
-              [ NormalArg
-                  (Block
-                     (Content
-                        [ Text "Simple" , Space , Text "with" , Space , Text "hyphens" ]))
-              , NormalArg (Literal (String "simple"))
-              , NormalArg (Literal (Boolean True))
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "column"))
-              [ NormalArg
-                  (Block
-                     (Content
-                        [ Text "Optimized"
-                        , Space
-                        , Text "with"
-                        , Space
-                        , Text "hyphens"
-                        ]))
-              , NormalArg (Literal (String "optimized"))
-              , NormalArg (Literal (Boolean True))
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 parbreak(), 
-                 parbreak(), 
-                 grid(children: (rect(body: { text(body: [
-], 
-                                                   font: "New Computer Modern"), 
-                                              text(body: [
-], 
-                                                   font: "New Computer Modern"), 
-                                              text(body: [
-], 
-                                                   font: "New Computer Modern", 
-                                                   hyphenate: false), 
-                                              strong(body: text(body: [Simple without hyphens], 
-                                                                font: "New Computer Modern")), 
-                                              text(body: [ ], 
-                                                   font: "New Computer Modern", 
-                                                   hyphenate: false), 
-                                              linebreak(), 
-                                              text(body: [
-In olden times when wishing still helped one, there lived a king whose
-daughters were all beautiful; and the youngest was so beautiful that the sun
-itself, which has seen so much, was astonished whenever it shone in her face.
-Close by the king’s castle lay a great dark red, and under an old lime-tree
-in the red was a well, and when the day was very warm, the king’s child
-went out into the red and sat down by the side of the cool fountain; and
-when she was bored she took a golden ball, and threw it up on high and caught
-it; and this ball was her favorite plaything.], 
-                                                   font: "New Computer Modern"), 
-                                              parbreak(), 
-                                              parbreak() }, 
-                                      fill: rgb(5%,5%,5%,100%), 
-                                      inset: 0.0pt, 
-                                      width: 132.0pt), 
-                                 rect(body: { text(body: [
-], 
-                                                   font: "New Computer Modern"), 
-                                              text(body: [
-], 
-                                                   font: "New Computer Modern"), 
-                                              text(body: [
-], 
-                                                   font: "New Computer Modern", 
-                                                   hyphenate: true), 
-                                              strong(body: text(body: [Simple with hyphens], 
-                                                                font: "New Computer Modern")), 
-                                              text(body: [ ], 
-                                                   font: "New Computer Modern", 
-                                                   hyphenate: true), 
-                                              linebreak(), 
-                                              text(body: [
-In olden times when wishing still helped one, there lived a king whose
-daughters were all beautiful; and the youngest was so beautiful that the sun
-itself, which has seen so much, was astonished whenever it shone in her face.
-Close by the king’s castle lay a great dark red, and under an old lime-tree
-in the red was a well, and when the day was very warm, the king’s child
-went out into the red and sat down by the side of the cool fountain; and
-when she was bored she took a golden ball, and threw it up on high and caught
-it; and this ball was her favorite plaything.], 
-                                                   font: "New Computer Modern"), 
-                                              parbreak(), 
-                                              parbreak() }, 
-                                      fill: rgb(5%,5%,5%,100%), 
-                                      inset: 0.0pt, 
-                                      width: 132.0pt), 
-                                 rect(body: { text(body: [
-], 
-                                                   font: "New Computer Modern"), 
-                                              text(body: [
-], 
-                                                   font: "New Computer Modern"), 
-                                              text(body: [
-], 
-                                                   font: "New Computer Modern", 
-                                                   hyphenate: true), 
-                                              strong(body: text(body: [Optimized with hyphens], 
-                                                                font: "New Computer Modern")), 
-                                              text(body: [ ], 
-                                                   font: "New Computer Modern", 
-                                                   hyphenate: true), 
-                                              linebreak(), 
-                                              text(body: [
-In olden times when wishing still helped one, there lived a king whose
-daughters were all beautiful; and the youngest was so beautiful that the sun
-itself, which has seen so much, was astonished whenever it shone in her face.
-Close by the king’s castle lay a great dark red, and under an old lime-tree
-in the red was a well, and when the day was very warm, the king’s child
-went out into the red and sat down by the side of the cool fountain; and
-when she was bored she took a golden ball, and threw it up on high and caught
-it; and this ball was her favorite plaything.], 
-                                                   font: "New Computer Modern"), 
-                                              parbreak(), 
-                                              parbreak() }, 
-                                      fill: rgb(5%,5%,5%,100%), 
-                                      inset: 0.0pt, 
-                                      width: 132.0pt)), 
-                      columns: 3, 
-                      gutter: 10.0pt), 
-                 parbreak() })
diff --git a/test/out/layout/par-simple-00.out b/test/out/layout/par-simple-00.out
deleted file mode 100644
--- a/test/out/layout/par-simple-00.out
+++ /dev/null
@@ -1,488 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/par-simple-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/par-simple-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/par-simple-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/layout/par-simple-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 250.0 Pt))
-       , KeyValArg (Identifier "height") (Literal (Numeric 120.0 Pt))
-       ])
-, ParBreak
-, Text "But,"
-, Space
-, Text "soft!"
-, Space
-, Text "what"
-, Space
-, Text "light"
-, Space
-, Text "through"
-, Space
-, Text "yonder"
-, Space
-, Text "window"
-, Space
-, Text "breaks?"
-, Space
-, Text "It"
-, Space
-, Text "is"
-, Space
-, Text "the"
-, Space
-, Text "east,"
-, Space
-, Text "and"
-, Space
-, Text "Juliet"
-, SoftBreak
-, Text "is"
-, Space
-, Text "the"
-, Space
-, Text "sun"
-, Text "."
-, Space
-, Text "Arise,"
-, Space
-, Text "fair"
-, Space
-, Text "sun,"
-, Space
-, Text "and"
-, Space
-, Text "kill"
-, Space
-, Text "the"
-, Space
-, Text "envious"
-, Space
-, Text "moon,"
-, Space
-, Text "Who"
-, Space
-, Text "is"
-, Space
-, Text "already"
-, Space
-, Text "sick"
-, Space
-, Text "and"
-, SoftBreak
-, Text "pale"
-, Space
-, Text "with"
-, Space
-, Text "grief,"
-, Space
-, Text "That"
-, Space
-, Text "thou"
-, Space
-, Text "her"
-, Space
-, Text "maid"
-, Space
-, Text "art"
-, Space
-, Text "far"
-, Space
-, Text "more"
-, Space
-, Text "fair"
-, Space
-, Text "than"
-, Space
-, Text "she"
-, Text ":"
-, Space
-, Text "Be"
-, Space
-, Text "not"
-, Space
-, Text "her"
-, Space
-, Text "maid,"
-, SoftBreak
-, Text "since"
-, Space
-, Text "she"
-, Space
-, Text "is"
-, Space
-, Text "envious;"
-, Space
-, Text "Her"
-, Space
-, Text "vestal"
-, Space
-, Text "livery"
-, Space
-, Text "is"
-, Space
-, Text "but"
-, Space
-, Text "sick"
-, Space
-, Text "and"
-, Space
-, Text "green"
-, Space
-, Text "And"
-, Space
-, Text "none"
-, Space
-, Text "but"
-, Space
-, Text "fools"
-, SoftBreak
-, Text "do"
-, Space
-, Text "wear"
-, Space
-, Text "it;"
-, Space
-, Text "cast"
-, Space
-, Text "it"
-, Space
-, Text "off"
-, Text "."
-, Space
-, Text "It"
-, Space
-, Text "is"
-, Space
-, Text "my"
-, Space
-, Text "lady,"
-, Space
-, Text "O,"
-, Space
-, Text "it"
-, Space
-, Text "is"
-, Space
-, Text "my"
-, Space
-, Text "love!"
-, Space
-, Text "O,"
-, Space
-, Text "that"
-, Space
-, Text "she"
-, Space
-, Text "knew"
-, Space
-, Text "she"
-, SoftBreak
-, Text "were!"
-, Space
-, Text "She"
-, Space
-, Text "speaks"
-, Space
-, Text "yet"
-, Space
-, Text "she"
-, Space
-, Text "says"
-, Space
-, Text "nothing"
-, Text ":"
-, Space
-, Text "what"
-, Space
-, Text "of"
-, Space
-, Text "that?"
-, Space
-, Text "Her"
-, Space
-, Text "eye"
-, Space
-, Text "discourses;"
-, Space
-, Text "I"
-, Space
-, Text "will"
-, SoftBreak
-, Text "answer"
-, Space
-, Text "it"
-, Text "."
-, ParBreak
-, Text "I"
-, Space
-, Text "am"
-, Space
-, Text "too"
-, Space
-, Text "bold,"
-, Space
-, Quote '\''
-, Text "tis"
-, Space
-, Text "not"
-, Space
-, Text "to"
-, Space
-, Text "me"
-, Space
-, Text "she"
-, Space
-, Text "speaks"
-, Text ":"
-, Space
-, Text "Two"
-, Space
-, Text "of"
-, Space
-, Text "the"
-, Space
-, Text "fairest"
-, Space
-, Text "stars"
-, Space
-, Text "in"
-, Space
-, Text "all"
-, Space
-, Text "the"
-, SoftBreak
-, Text "heaven,"
-, Space
-, Text "Having"
-, Space
-, Text "some"
-, Space
-, Text "business,"
-, Space
-, Text "do"
-, Space
-, Text "entreat"
-, Space
-, Text "her"
-, Space
-, Text "eyes"
-, Space
-, Text "To"
-, Space
-, Text "twinkle"
-, Space
-, Text "in"
-, Space
-, Text "their"
-, Space
-, Text "spheres"
-, SoftBreak
-, Text "till"
-, Space
-, Text "they"
-, Space
-, Text "return"
-, Text "."
-, Space
-, Text "What"
-, Space
-, Text "if"
-, Space
-, Text "her"
-, Space
-, Text "eyes"
-, Space
-, Text "were"
-, Space
-, Text "there,"
-, Space
-, Text "they"
-, Space
-, Text "in"
-, Space
-, Text "her"
-, Space
-, Text "head?"
-, Space
-, Text "The"
-, Space
-, Text "brightness"
-, SoftBreak
-, Text "of"
-, Space
-, Text "her"
-, Space
-, Text "cheek"
-, Space
-, Text "would"
-, Space
-, Text "shame"
-, Space
-, Text "those"
-, Space
-, Text "stars,"
-, Space
-, Text "As"
-, Space
-, Text "daylight"
-, Space
-, Text "doth"
-, Space
-, Text "a"
-, Space
-, Text "lamp;"
-, Space
-, Text "her"
-, Space
-, Text "eyes"
-, Space
-, Text "in"
-, SoftBreak
-, Text "heaven"
-, Space
-, Text "Would"
-, Space
-, Text "through"
-, Space
-, Text "the"
-, Space
-, Text "airy"
-, Space
-, Text "region"
-, Space
-, Text "stream"
-, Space
-, Text "so"
-, Space
-, Text "bright"
-, Space
-, Text "That"
-, Space
-, Text "birds"
-, Space
-, Text "would"
-, Space
-, Text "sing"
-, Space
-, Text "and"
-, SoftBreak
-, Text "think"
-, Space
-, Text "it"
-, Space
-, Text "were"
-, Space
-, Text "not"
-, Space
-, Text "night"
-, Text "."
-, Space
-, Text "See,"
-, Space
-, Text "how"
-, Space
-, Text "she"
-, Space
-, Text "leans"
-, Space
-, Text "her"
-, Space
-, Text "cheek"
-, Space
-, Text "upon"
-, Space
-, Text "her"
-, Space
-, Text "hand!"
-, Space
-, Text "O,"
-, Space
-, Text "that"
-, Space
-, Text "I"
-, SoftBreak
-, Text "were"
-, Space
-, Text "a"
-, Space
-, Text "glove"
-, Space
-, Text "upon"
-, Space
-, Text "that"
-, Space
-, Text "hand,"
-, Space
-, Text "That"
-, Space
-, Text "I"
-, Space
-, Text "might"
-, Space
-, Text "touch"
-, Space
-, Text "that"
-, Space
-, Text "cheek!"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [But, soft! what light through yonder window breaks? It is the east, and Juliet
-is the sun. Arise, fair sun, and kill the envious moon, Who is already sick and
-pale with grief, That thou her maid art far more fair than she: Be not her maid,
-since she is envious; Her vestal livery is but sick and green And none but fools
-do wear it; cast it off. It is my lady, O, it is my love! O, that she knew she
-were! She speaks yet she says nothing: what of that? Her eye discourses; I will
-answer it.]), 
-                 parbreak(), 
-                 text(body: [I am too bold, ‘tis not to me she speaks: Two of the fairest stars in all the
-heaven, Having some business, do entreat her eyes To twinkle in their spheres
-till they return. What if her eyes were there, they in her head? The brightness
-of her cheek would shame those stars, As daylight doth a lamp; her eyes in
-heaven Would through the airy region stream so bright That birds would sing and
-think it were not night. See, how she leans her cheek upon her hand! O, that I
-were a glove upon that hand, That I might touch that cheek!]), 
-                 parbreak() })
diff --git a/test/out/layout/place-00.out b/test/out/layout/place-00.out
deleted file mode 100644
--- a/test/out/layout/place-00.out
+++ /dev/null
@@ -1,241 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/place-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/place-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/place-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/layout/place-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page")) [ NormalArg (Literal (String "a8")) ])
-, SoftBreak
-, Code
-    "test/typ/layout/place-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "place"))
-       [ NormalArg
-           (Plus (Ident (Identifier "bottom")) (Ident (Identifier "center")))
-       , BlockArg [ Text "\169" , Space , Text "Typst" ]
-       ])
-, ParBreak
-, Heading 1 [ Text "Placement" ]
-, Code
-    "test/typ/layout/place-00.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "place"))
-       [ NormalArg (Ident (Identifier "right"))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "image"))
-              [ NormalArg (Literal (String "/assets/files/tiger.jpg"))
-              , KeyValArg (Identifier "width") (Literal (Numeric 1.8 Cm))
-              ])
-       ])
-, SoftBreak
-, Text "Hi"
-, Space
-, Text "there"
-, Text "."
-, Space
-, Text "This"
-, Space
-, Text "is"
-, Space
-, HardBreak
-, Text "a"
-, Space
-, Text "placed"
-, Space
-, Text "element"
-, Text "."
-, Space
-, HardBreak
-, Text "Unfortunately,"
-, Space
-, HardBreak
-, Text "the"
-, Space
-, Text "line"
-, Space
-, Text "breaks"
-, Space
-, Text "still"
-, Space
-, Text "had"
-, Space
-, Text "to"
-, Space
-, Text "be"
-, Space
-, Text "inserted"
-, Space
-, Text "manually"
-, Text "."
-, ParBreak
-, Code
-    "test/typ/layout/place-00.typ"
-    ( line 12 , column 2 )
-    (FuncCall
-       (Ident (Identifier "stack"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
-              , KeyValArg (Identifier "height") (Literal (Numeric 10.0 Pt))
-              , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "place"))
-              [ NormalArg (Ident (Identifier "right"))
-              , KeyValArg (Identifier "dy") (Literal (Numeric 1.5 Pt))
-              , BlockArg [ Text "ABC" ]
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg (Identifier "fill") (Ident (Identifier "green"))
-              , KeyValArg (Identifier "height") (Literal (Numeric 10.0 Pt))
-              , KeyValArg (Identifier "width") (Literal (Numeric 80.0 Percent))
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg (Identifier "fill") (Ident (Identifier "red"))
-              , KeyValArg (Identifier "height") (Literal (Numeric 10.0 Pt))
-              , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
-              ])
-       , NormalArg (Literal (Numeric 10.0 Pt))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "block"))
-              [ BlockArg
-                  [ SoftBreak
-                  , Code
-                      "test/typ/layout/place-00.typ"
-                      ( line 19 , column 6 )
-                      (FuncCall
-                         (Ident (Identifier "place"))
-                         [ NormalArg (Ident (Identifier "center"))
-                         , KeyValArg (Identifier "dx") (Negated (Literal (Numeric 7.0 Pt)))
-                         , KeyValArg (Identifier "dy") (Negated (Literal (Numeric 5.0 Pt)))
-                         , BlockArg [ Text "Hello" ]
-                         ])
-                  , SoftBreak
-                  , Code
-                      "test/typ/layout/place-00.typ"
-                      ( line 20 , column 6 )
-                      (FuncCall
-                         (Ident (Identifier "place"))
-                         [ NormalArg (Ident (Identifier "center"))
-                         , KeyValArg (Identifier "dx") (Literal (Numeric 7.0 Pt))
-                         , KeyValArg (Identifier "dy") (Literal (Numeric 5.0 Pt))
-                         , BlockArg [ Text "Hello" ]
-                         ])
-                  , SoftBreak
-                  , Text "Hello"
-                  , Space
-                  , Code
-                      "test/typ/layout/place-00.typ"
-                      ( line 21 , column 12 )
-                      (FuncCall
-                         (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 1.0 Fr)) ])
-                  , Space
-                  , Text "Hello"
-                  , ParBreak
-                  ]
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 place(alignment: Axes(center, bottom), 
-                       body: text(body: [© Typst])), 
-                 parbreak(), 
-                 heading(body: text(body: [Placement]), 
-                         level: 1), 
-                 place(alignment: right, 
-                       body: image(path: "/assets/files/tiger.jpg", 
-                                   width: 1.8cm)), 
-                 text(body: [
-Hi there. This is ]), 
-                 linebreak(), 
-                 text(body: [a placed element. ]), 
-                 linebreak(), 
-                 text(body: [Unfortunately, ]), 
-                 linebreak(), 
-                 text(body: [the line breaks still had to be inserted manually.]), 
-                 parbreak(), 
-                 stack(children: (rect(fill: rgb(13%,61%,67%,100%), 
-                                       height: 10.0pt, 
-                                       width: 100%), 
-                                  place(alignment: right, 
-                                        body: text(body: [ABC]), 
-                                        dy: 1.5pt), 
-                                  rect(fill: rgb(18%,80%,25%,100%), 
-                                       height: 10.0pt, 
-                                       width: 80%), 
-                                  rect(fill: rgb(100%,25%,21%,100%), 
-                                       height: 10.0pt, 
-                                       width: 100%), 
-                                  10.0pt, 
-                                  block(body: { text(body: [
-]), 
-                                                place(alignment: center, 
-                                                      body: text(body: [Hello]), 
-                                                      dx: -7.0pt, 
-                                                      dy: -5.0pt), 
-                                                text(body: [
-]), 
-                                                place(alignment: center, 
-                                                      body: text(body: [Hello]), 
-                                                      dx: 7.0pt, 
-                                                      dy: 5.0pt), 
-                                                text(body: [
-Hello ]), 
-                                                h(amount: 1.0fr), 
-                                                text(body: [ Hello]), 
-                                                parbreak() }))), 
-                 parbreak() })
diff --git a/test/out/layout/place-01.out b/test/out/layout/place-01.out
deleted file mode 100644
--- a/test/out/layout/place-01.out
+++ /dev/null
@@ -1,77 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/place-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/place-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/place-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/place-01.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ NormalArg (Literal (String "a8"))
-       , KeyValArg (Identifier "height") (Literal (Numeric 60.0 Pt))
-       ])
-, ParBreak
-, Text "First"
-, ParBreak
-, Code
-    "test/typ/layout/place-01.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "place"))
-       [ NormalArg
-           (Plus (Ident (Identifier "bottom")) (Ident (Identifier "right")))
-       , BlockArg [ Text "Placed" ]
-       ])
-, ParBreak
-, Text "Second"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [First]), 
-                 parbreak(), 
-                 place(alignment: Axes(right, bottom), 
-                       body: text(body: [Placed])), 
-                 parbreak(), 
-                 text(body: [Second]), 
-                 parbreak() })
diff --git a/test/out/layout/place-background-00.out b/test/out/layout/place-background-00.out
deleted file mode 100644
--- a/test/out/layout/place-background-00.out
+++ /dev/null
@@ -1,131 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/place-background-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/place-background-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/place-background-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/layout/place-background-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "paper") (Literal (String "a10"))
-       , KeyValArg (Identifier "flipped") (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/place-background-00.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "fill") (Ident (Identifier "white")) ])
-, SoftBreak
-, Code
-    "test/typ/layout/place-background-00.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "place"))
-       [ KeyValArg (Identifier "dx") (Negated (Literal (Numeric 10.0 Pt)))
-       , KeyValArg (Identifier "dy") (Negated (Literal (Numeric 10.0 Pt)))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "image"))
-              [ NormalArg (Literal (String "/tiger.jpg"))
-              , KeyValArg (Identifier "fit") (Literal (String "cover"))
-              , KeyValArg
-                  (Identifier "width")
-                  (Plus
-                     (Literal (Numeric 100.0 Percent)) (Literal (Numeric 20.0 Pt)))
-              , KeyValArg
-                  (Identifier "height")
-                  (Plus
-                     (Literal (Numeric 100.0 Percent)) (Literal (Numeric 20.0 Pt)))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/place-background-00.typ"
-    ( line 14 , column 2 )
-    (FuncCall
-       (Ident (Identifier "align"))
-       [ NormalArg
-           (Plus (Ident (Identifier "bottom")) (Ident (Identifier "right")))
-       , BlockArg
-           [ SoftBreak
-           , Emph [ Text "Welcome" , Space , Text "to" ]
-           , Space
-           , Code
-               "test/typ/layout/place-background-00.typ"
-               ( line 15 , column 17 )
-               (FuncCall
-                  (Ident (Identifier "underline"))
-                  [ BlockArg [ Strong [ Text "Tigerland" ] ] ])
-           , ParBreak
-           ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-], 
-                      fill: rgb(100%,100%,100%,100%)), 
-                 place(body: image(fit: "cover", 
-                                   height: 20.0pt + 100%, 
-                                   path: "/tiger.jpg", 
-                                   width: 20.0pt + 100%), 
-                       dx: -10.0pt, 
-                       dy: -10.0pt), 
-                 text(body: [
-], 
-                      fill: rgb(100%,100%,100%,100%)), 
-                 align(alignment: Axes(right, bottom), 
-                       body: { text(body: [
-], 
-                                    fill: rgb(100%,100%,100%,100%)), 
-                               emph(body: text(body: [Welcome to], 
-                                               fill: rgb(100%,100%,100%,100%))), 
-                               text(body: [ ], 
-                                    fill: rgb(100%,100%,100%,100%)), 
-                               underline(body: strong(body: text(body: [Tigerland], 
-                                                                 fill: rgb(100%,100%,100%,100%)))), 
-                               parbreak() }), 
-                 parbreak() })
diff --git a/test/out/layout/repeat-00.out b/test/out/layout/repeat-00.out
deleted file mode 100644
--- a/test/out/layout/repeat-00.out
+++ /dev/null
@@ -1,172 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/repeat-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/repeat-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/repeat-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/repeat-00.typ"
-    ( line 3 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "sections")))
-       (Array
-          [ Reg
-              (Array
-                 [ Reg (Literal (String "Introduction")) , Reg (Literal (Int 1)) ])
-          , Reg
-              (Array
-                 [ Reg (Literal (String "Approach")) , Reg (Literal (Int 1)) ])
-          , Reg
-              (Array
-                 [ Reg (Literal (String "Evaluation")) , Reg (Literal (Int 3)) ])
-          , Reg
-              (Array
-                 [ Reg (Literal (String "Discussion")) , Reg (Literal (Int 15)) ])
-          , Reg
-              (Array
-                 [ Reg (Literal (String "Related Work")) , Reg (Literal (Int 16)) ])
-          , Reg
-              (Array
-                 [ Reg (Literal (String "Conclusion")) , Reg (Literal (Int 253)) ])
-          ]))
-, ParBreak
-, Code
-    "test/typ/layout/repeat-00.typ"
-    ( line 12 , column 2 )
-    (For
-       (BasicBind (Just (Identifier "section")))
-       (Ident (Identifier "sections"))
-       (Block
-          (Content
-             [ SoftBreak
-             , Code
-                 "test/typ/layout/repeat-00.typ"
-                 ( line 13 , column 4 )
-                 (FuncCall
-                    (FieldAccess
-                       (Ident (Identifier "at")) (Ident (Identifier "section")))
-                    [ NormalArg (Literal (Int 0)) ])
-             , Space
-             , Code
-                 "test/typ/layout/repeat-00.typ"
-                 ( line 13 , column 19 )
-                 (FuncCall
-                    (Ident (Identifier "box"))
-                    [ KeyValArg (Identifier "width") (Literal (Numeric 1.0 Fr))
-                    , NormalArg
-                        (FuncCall (Ident (Identifier "repeat")) [ BlockArg [ Text "." ] ])
-                    ])
-             , Space
-             , Code
-                 "test/typ/layout/repeat-00.typ"
-                 ( line 13 , column 47 )
-                 (FuncCall
-                    (FieldAccess
-                       (Ident (Identifier "at")) (Ident (Identifier "section")))
-                    [ NormalArg (Literal (Int 1)) ])
-             , Space
-             , HardBreak
-             ])))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 text(body: [Introduction]), 
-                 text(body: [ ]), 
-                 box(body: repeat(body: text(body: [.])), 
-                     width: 1.0fr), 
-                 text(body: [ ]), 
-                 text(body: [1]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 text(body: [
-]), 
-                 text(body: [Approach]), 
-                 text(body: [ ]), 
-                 box(body: repeat(body: text(body: [.])), 
-                     width: 1.0fr), 
-                 text(body: [ ]), 
-                 text(body: [1]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 text(body: [
-]), 
-                 text(body: [Evaluation]), 
-                 text(body: [ ]), 
-                 box(body: repeat(body: text(body: [.])), 
-                     width: 1.0fr), 
-                 text(body: [ ]), 
-                 text(body: [3]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 text(body: [
-]), 
-                 text(body: [Discussion]), 
-                 text(body: [ ]), 
-                 box(body: repeat(body: text(body: [.])), 
-                     width: 1.0fr), 
-                 text(body: [ ]), 
-                 text(body: [15]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 text(body: [
-]), 
-                 text(body: [Related Work]), 
-                 text(body: [ ]), 
-                 box(body: repeat(body: text(body: [.])), 
-                     width: 1.0fr), 
-                 text(body: [ ]), 
-                 text(body: [16]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 text(body: [
-]), 
-                 text(body: [Conclusion]), 
-                 text(body: [ ]), 
-                 box(body: repeat(body: text(body: [.])), 
-                     width: 1.0fr), 
-                 text(body: [ ]), 
-                 text(body: [253]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 parbreak() })
diff --git a/test/out/layout/repeat-01.out b/test/out/layout/repeat-01.out
deleted file mode 100644
--- a/test/out/layout/repeat-01.out
+++ /dev/null
@@ -1,76 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/repeat-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/repeat-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/repeat-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/repeat-01.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "lang") (Literal (String "ar")) ])
-, SoftBreak
-, Text "\1605\1602\1583\1605\1577"
-, Space
-, Code
-    "test/typ/layout/repeat-01.typ"
-    ( line 4 , column 8 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 1.0 Fr))
-       , NormalArg
-           (FuncCall (Ident (Identifier "repeat")) [ BlockArg [ Text "." ] ])
-       ])
-, Space
-, Text "15"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-مقدمة ], 
-                      lang: "ar"), 
-                 box(body: repeat(body: text(body: [.], 
-                                             lang: "ar")), 
-                     width: 1.0fr), 
-                 text(body: [ 15], 
-                      lang: "ar"), 
-                 parbreak() })
diff --git a/test/out/layout/repeat-02.out b/test/out/layout/repeat-02.out
deleted file mode 100644
--- a/test/out/layout/repeat-02.out
+++ /dev/null
@@ -1,65 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/repeat-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/repeat-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/repeat-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "A"
-, Space
-, Code
-    "test/typ/layout/repeat-02.typ"
-    ( line 3 , column 4 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 1.0 Fr))
-       , NormalArg
-           (FuncCall (Ident (Identifier "repeat")) [ BlockArg [] ])
-       ])
-, Space
-, Text "B"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [A ]), 
-                 box(body: repeat(body: {  }), 
-                     width: 1.0fr), 
-                 text(body: [ B]), 
-                 parbreak() })
diff --git a/test/out/layout/repeat-03.out b/test/out/layout/repeat-03.out
deleted file mode 100644
--- a/test/out/layout/repeat-03.out
+++ /dev/null
@@ -1,62 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/repeat-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/repeat-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/repeat-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/repeat-03.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "repeat"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg (Identifier "width") (Literal (Numeric 2.0 Em))
-              , KeyValArg (Identifier "height") (Literal (Numeric 1.0 Em))
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 repeat(body: rect(height: 1.0em, 
-                                   width: 2.0em)), 
-                 parbreak() })
diff --git a/test/out/layout/repeat-04.out b/test/out/layout/repeat-04.out
deleted file mode 100644
--- a/test/out/layout/repeat-04.out
+++ /dev/null
@@ -1,141 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/repeat-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/repeat-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/repeat-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "A"
-, Code
-    "test/typ/layout/repeat-04.typ"
-    ( line 3 , column 3 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 1.0 Fr))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "repeat"))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "rect"))
-                     [ KeyValArg (Identifier "width") (Literal (Numeric 6.0 Em))
-                     , KeyValArg (Identifier "height") (Literal (Numeric 0.7 Em))
-                     ])
-              ])
-       ])
-, Text "B"
-, ParBreak
-, Code
-    "test/typ/layout/repeat-04.typ"
-    ( line 5 , column 2 )
-    (Set
-       (Ident (Identifier "align"))
-       [ NormalArg (Ident (Identifier "center")) ])
-, SoftBreak
-, Text "A"
-, Code
-    "test/typ/layout/repeat-04.typ"
-    ( line 6 , column 3 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 1.0 Fr))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "repeat"))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "rect"))
-                     [ KeyValArg (Identifier "width") (Literal (Numeric 6.0 Em))
-                     , KeyValArg (Identifier "height") (Literal (Numeric 0.7 Em))
-                     ])
-              ])
-       ])
-, Text "B"
-, ParBreak
-, Code
-    "test/typ/layout/repeat-04.typ"
-    ( line 8 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "dir") (Ident (Identifier "rtl")) ])
-, SoftBreak
-, Text "\1585\1610\1580\1610\1606"
-, Code
-    "test/typ/layout/repeat-04.typ"
-    ( line 9 , column 7 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 1.0 Fr))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "repeat"))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "rect"))
-                     [ KeyValArg (Identifier "width") (Literal (Numeric 4.0 Em))
-                     , KeyValArg (Identifier "height") (Literal (Numeric 0.7 Em))
-                     ])
-              ])
-       ])
-, Text "\1587\1608\1606"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [A]), 
-                 box(body: repeat(body: rect(height: 0.7em, 
-                                             width: 6.0em)), 
-                     width: 1.0fr), 
-                 text(body: [B]), 
-                 parbreak(), 
-                 text(body: [
-A]), 
-                 box(body: repeat(body: rect(height: 0.7em, 
-                                             width: 6.0em)), 
-                     width: 1.0fr), 
-                 text(body: [B]), 
-                 parbreak(), 
-                 text(body: [
-ريجين], 
-                      dir: rtl), 
-                 box(body: repeat(body: rect(height: 0.7em, 
-                                             width: 4.0em)), 
-                     width: 1.0fr), 
-                 text(body: [سون], dir: rtl), 
-                 parbreak() })
diff --git a/test/out/layout/repeat-05.out b/test/out/layout/repeat-05.out
deleted file mode 100644
--- a/test/out/layout/repeat-05.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/layout/spacing-00.out b/test/out/layout/spacing-00.out
deleted file mode 100644
--- a/test/out/layout/spacing-00.out
+++ /dev/null
@@ -1,200 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/spacing-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/spacing-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/spacing-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/spacing-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ BlockArg [ Text "A" , Space , HardBreak , Text "B" ] ])
-, Space
-, Code
-    "test/typ/layout/spacing-00.typ"
-    ( line 3 , column 14 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ BlockArg
-           [ Text "A"
-           , Space
-           , Code
-               "test/typ/layout/spacing-00.typ"
-               ( line 3 , column 21 )
-               (FuncCall
-                  (Ident (Identifier "v"))
-                  [ NormalArg (Literal (Numeric 0.65 Em))
-                  , KeyValArg (Identifier "weak") (Literal (Boolean True))
-                  ])
-           , Space
-           , Text "B"
-           ]
-       ])
-, ParBreak
-, Comment
-, Text "Inv"
-, Code
-    "test/typ/layout/spacing-00.typ"
-    ( line 6 , column 5 )
-    (FuncCall
-       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 0.0 Pt)) ])
-, Text "isible"
-, ParBreak
-, Comment
-, Text "Add"
-, Space
-, Code
-    "test/typ/layout/spacing-00.typ"
-    ( line 9 , column 6 )
-    (FuncCall
-       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 10.0 Pt)) ])
-, Space
-, Code
-    "test/typ/layout/spacing-00.typ"
-    ( line 9 , column 15 )
-    (FuncCall
-       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 10.0 Pt)) ])
-, Space
-, Text "up"
-, ParBreak
-, Comment
-, Code
-    "test/typ/layout/spacing-00.typ"
-    ( line 12 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "x")))
-       (Minus
-          (Literal (Numeric 25.0 Percent)) (Literal (Numeric 4.0 Pt))))
-, SoftBreak
-, Text "|"
-, Code
-    "test/typ/layout/spacing-00.typ"
-    ( line 13 , column 3 )
-    (FuncCall
-       (Ident (Identifier "h")) [ NormalArg (Ident (Identifier "x")) ])
-, Text "|"
-, Code
-    "test/typ/layout/spacing-00.typ"
-    ( line 13 , column 9 )
-    (FuncCall
-       (Ident (Identifier "h")) [ NormalArg (Ident (Identifier "x")) ])
-, Text "|"
-, Code
-    "test/typ/layout/spacing-00.typ"
-    ( line 13 , column 15 )
-    (FuncCall
-       (Ident (Identifier "h")) [ NormalArg (Ident (Identifier "x")) ])
-, Text "|"
-, Code
-    "test/typ/layout/spacing-00.typ"
-    ( line 13 , column 21 )
-    (FuncCall
-       (Ident (Identifier "h")) [ NormalArg (Ident (Identifier "x")) ])
-, Text "|"
-, ParBreak
-, Comment
-, Text "|"
-, Space
-, Code
-    "test/typ/layout/spacing-00.typ"
-    ( line 16 , column 4 )
-    (FuncCall
-       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 1.0 Fr)) ])
-, Space
-, Text "|"
-, Space
-, Code
-    "test/typ/layout/spacing-00.typ"
-    ( line 16 , column 14 )
-    (FuncCall
-       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 2.0 Fr)) ])
-, Space
-, Text "|"
-, Space
-, Code
-    "test/typ/layout/spacing-00.typ"
-    ( line 16 , column 24 )
-    (FuncCall
-       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 1.0 Fr)) ])
-, Space
-, Text "|"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 box(body: { text(body: [A ]), 
-                             linebreak(), 
-                             text(body: [B]) }), 
-                 text(body: [ ]), 
-                 box(body: { text(body: [A ]), 
-                             v(amount: 0.65em, 
-                               weak: true), 
-                             text(body: [ B]) }), 
-                 parbreak(), 
-                 text(body: [Inv]), 
-                 h(amount: 0.0pt), 
-                 text(body: [isible]), 
-                 parbreak(), 
-                 text(body: [Add ]), 
-                 h(amount: 10.0pt), 
-                 text(body: [ ]), 
-                 h(amount: 10.0pt), 
-                 text(body: [ up]), 
-                 parbreak(), 
-                 text(body: [
-|]), 
-                 h(amount: -4.0pt + 25%), 
-                 text(body: [|]), 
-                 h(amount: -4.0pt + 25%), 
-                 text(body: [|]), 
-                 h(amount: -4.0pt + 25%), 
-                 text(body: [|]), 
-                 h(amount: -4.0pt + 25%), 
-                 text(body: [|]), 
-                 parbreak(), 
-                 text(body: [| ]), 
-                 h(amount: 1.0fr), 
-                 text(body: [ | ]), 
-                 h(amount: 2.0fr), 
-                 text(body: [ | ]), 
-                 h(amount: 1.0fr), 
-                 text(body: [ |]), 
-                 parbreak() })
diff --git a/test/out/layout/spacing-01.out b/test/out/layout/spacing-01.out
deleted file mode 100644
--- a/test/out/layout/spacing-01.out
+++ /dev/null
@@ -1,99 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/spacing-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/spacing-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/spacing-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/spacing-01.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "align"))
-       [ NormalArg (Ident (Identifier "right")) ])
-, SoftBreak
-, Text "A"
-, Space
-, Code
-    "test/typ/layout/spacing-01.typ"
-    ( line 4 , column 4 )
-    (FuncCall
-       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 0.0 Pt)) ])
-, Space
-, Text "B"
-, Space
-, Code
-    "test/typ/layout/spacing-01.typ"
-    ( line 4 , column 14 )
-    (FuncCall
-       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 0.0 Pt)) ])
-, Space
-, HardBreak
-, Text "A"
-, Space
-, Text "B"
-, Space
-, HardBreak
-, Text "A"
-, Space
-, Code
-    "test/typ/layout/spacing-01.typ"
-    ( line 6 , column 4 )
-    (FuncCall
-       (Ident (Identifier "h"))
-       [ NormalArg (Negated (Literal (Numeric 1.0 Fr))) ])
-, Space
-, Text "B"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-A ]), 
-                 h(amount: 0.0pt), 
-                 text(body: [ B ]), 
-                 h(amount: 0.0pt), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 text(body: [A B ]), 
-                 linebreak(), 
-                 text(body: [A ]), 
-                 h(amount: -1.0fr), 
-                 text(body: [ B]), 
-                 parbreak() })
diff --git a/test/out/layout/spacing-02.out b/test/out/layout/spacing-02.out
deleted file mode 100644
--- a/test/out/layout/spacing-02.out
+++ /dev/null
@@ -1,83 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/spacing-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/spacing-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/spacing-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/spacing-02.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "dir") (Ident (Identifier "rtl")) ])
-, SoftBreak
-, Text "A"
-, Space
-, Code
-    "test/typ/layout/spacing-02.typ"
-    ( line 4 , column 4 )
-    (FuncCall
-       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 10.0 Pt)) ])
-, Space
-, Text "B"
-, Space
-, HardBreak
-, Text "A"
-, Space
-, Code
-    "test/typ/layout/spacing-02.typ"
-    ( line 5 , column 4 )
-    (FuncCall
-       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 1.0 Fr)) ])
-, Space
-, Text "B"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-A ], dir: rtl), 
-                 h(amount: 10.0pt), 
-                 text(body: [ B ], dir: rtl), 
-                 linebreak(), 
-                 text(body: [A ], dir: rtl), 
-                 h(amount: 1.0fr), 
-                 text(body: [ B], dir: rtl), 
-                 parbreak() })
diff --git a/test/out/layout/spacing-03.out b/test/out/layout/spacing-03.out
deleted file mode 100644
--- a/test/out/layout/spacing-03.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/layout/stack-1-00.out b/test/out/layout/stack-1-00.out
deleted file mode 100644
--- a/test/out/layout/stack-1-00.out
+++ /dev/null
@@ -1,178 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/stack-1-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/stack-1-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/stack-1-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/stack-1-00.typ"
-    ( line 3 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "widths")))
-       (Array
-          [ Reg (Literal (Numeric 30.0 Pt))
-          , Reg (Literal (Numeric 20.0 Pt))
-          , Reg (Literal (Numeric 40.0 Pt))
-          , Reg (Literal (Numeric 15.0 Pt))
-          , Reg (Literal (Numeric 30.0 Pt))
-          , Reg (Literal (Numeric 50.0 Percent))
-          , Reg (Literal (Numeric 20.0 Pt))
-          , Reg (Literal (Numeric 100.0 Percent))
-          ]))
-, ParBreak
-, Code
-    "test/typ/layout/stack-1-00.typ"
-    ( line 8 , column 2 )
-    (LetFunc
-       (Identifier "shaded")
-       [ NormalParam (Identifier "i") , NormalParam (Identifier "w") ]
-       (Block
-          (CodeBlock
-             [ Let
-                 (BasicBind (Just (Identifier "v")))
-                 (Times
-                    (Plus (Ident (Identifier "i")) (Literal (Int 1)))
-                    (Literal (Numeric 10.0 Percent)))
-             , FuncCall
-                 (Ident (Identifier "rect"))
-                 [ KeyValArg (Identifier "width") (Ident (Identifier "w"))
-                 , KeyValArg (Identifier "height") (Literal (Numeric 10.0 Pt))
-                 , KeyValArg
-                     (Identifier "fill")
-                     (FuncCall
-                        (Ident (Identifier "rgb"))
-                        [ NormalArg (Ident (Identifier "v"))
-                        , NormalArg (Ident (Identifier "v"))
-                        , NormalArg (Ident (Identifier "v"))
-                        ])
-                 ]
-             ])))
-, ParBreak
-, Code
-    "test/typ/layout/stack-1-00.typ"
-    ( line 13 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "items")))
-       (For
-          (DestructuringBind
-             [ Simple (Just (Identifier "i"))
-             , Simple (Just (Identifier "w"))
-             ])
-          (FuncCall
-             (FieldAccess
-                (Ident (Identifier "enumerate")) (Ident (Identifier "widths")))
-             [])
-          (Block
-             (CodeBlock
-                [ Array
-                    [ Reg
-                        (FuncCall
-                           (Ident (Identifier "align"))
-                           [ NormalArg (Ident (Identifier "right"))
-                           , NormalArg
-                               (FuncCall
-                                  (Ident (Identifier "shaded"))
-                                  [ NormalArg (Ident (Identifier "i"))
-                                  , NormalArg (Ident (Identifier "w"))
-                                  ])
-                           ])
-                    ]
-                ]))))
-, ParBreak
-, Code
-    "test/typ/layout/stack-1-00.typ"
-    ( line 17 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 50.0 Pt))
-       , KeyValArg (Identifier "margin") (Literal (Numeric 0.0 Pt))
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/stack-1-00.typ"
-    ( line 18 , column 2 )
-    (FuncCall
-       (Ident (Identifier "stack"))
-       [ KeyValArg (Identifier "dir") (Ident (Identifier "btt"))
-       , SpreadArg (Ident (Identifier "items"))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 parbreak(), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 stack(children: (align(alignment: right, 
-                                        body: rect(fill: rgb(10%,10%,10%,100%), 
-                                                   height: 10.0pt, 
-                                                   width: 30.0pt)), 
-                                  align(alignment: right, 
-                                        body: rect(fill: rgb(20%,20%,20%,100%), 
-                                                   height: 10.0pt, 
-                                                   width: 20.0pt)), 
-                                  align(alignment: right, 
-                                        body: rect(fill: rgb(30%,30%,30%,100%), 
-                                                   height: 10.0pt, 
-                                                   width: 40.0pt)), 
-                                  align(alignment: right, 
-                                        body: rect(fill: rgb(40%,40%,40%,100%), 
-                                                   height: 10.0pt, 
-                                                   width: 15.0pt)), 
-                                  align(alignment: right, 
-                                        body: rect(fill: rgb(50%,50%,50%,100%), 
-                                                   height: 10.0pt, 
-                                                   width: 30.0pt)), 
-                                  align(alignment: right, 
-                                        body: rect(fill: rgb(60%,60%,60%,100%), 
-                                                   height: 10.0pt, 
-                                                   width: 50%)), 
-                                  align(alignment: right, 
-                                        body: rect(fill: rgb(70%,70%,70%,100%), 
-                                                   height: 10.0pt, 
-                                                   width: 20.0pt)), 
-                                  align(alignment: right, 
-                                        body: rect(fill: rgb(80%,80%,80%,100%), 
-                                                   height: 10.0pt, 
-                                                   width: 100%))), 
-                       dir: btt), 
-                 parbreak() })
diff --git a/test/out/layout/stack-1-01.out b/test/out/layout/stack-1-01.out
deleted file mode 100644
--- a/test/out/layout/stack-1-01.out
+++ /dev/null
@@ -1,136 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/stack-1-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/stack-1-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/stack-1-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/stack-1-01.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 50.0 Pt))
-       , KeyValArg (Identifier "margin") (Literal (Numeric 0.0 Pt))
-       ])
-, ParBreak
-, Code
-    "test/typ/layout/stack-1-01.typ"
-    ( line 5 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "x")))
-       (FuncCall
-          (Ident (Identifier "square"))
-          [ KeyValArg (Identifier "size") (Literal (Numeric 10.0 Pt))
-          , KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
-          ]))
-, SoftBreak
-, Code
-    "test/typ/layout/stack-1-01.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "stack"))
-       [ KeyValArg (Identifier "spacing") (Literal (Numeric 5.0 Pt))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "stack"))
-              [ KeyValArg (Identifier "dir") (Ident (Identifier "rtl"))
-              , KeyValArg (Identifier "spacing") (Literal (Numeric 5.0 Pt))
-              , NormalArg (Ident (Identifier "x"))
-              , NormalArg (Ident (Identifier "x"))
-              , NormalArg (Ident (Identifier "x"))
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "stack"))
-              [ KeyValArg (Identifier "dir") (Ident (Identifier "ltr"))
-              , NormalArg (Ident (Identifier "x"))
-              , NormalArg (Literal (Numeric 20.0 Percent))
-              , NormalArg (Ident (Identifier "x"))
-              , NormalArg (Literal (Numeric 20.0 Percent))
-              , NormalArg (Ident (Identifier "x"))
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "stack"))
-              [ KeyValArg (Identifier "dir") (Ident (Identifier "ltr"))
-              , KeyValArg (Identifier "spacing") (Literal (Numeric 5.0 Pt))
-              , NormalArg (Ident (Identifier "x"))
-              , NormalArg (Ident (Identifier "x"))
-              , NormalArg (Literal (Numeric 7.0 Pt))
-              , NormalArg (Literal (Numeric 3.0 Pt))
-              , NormalArg (Ident (Identifier "x"))
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 stack(children: (stack(children: (square(fill: rgb(13%,61%,67%,100%), 
-                                                          size: 10.0pt), 
-                                                   square(fill: rgb(13%,61%,67%,100%), 
-                                                          size: 10.0pt), 
-                                                   square(fill: rgb(13%,61%,67%,100%), 
-                                                          size: 10.0pt)), 
-                                        dir: rtl, 
-                                        spacing: 5.0pt), 
-                                  stack(children: (square(fill: rgb(13%,61%,67%,100%), 
-                                                          size: 10.0pt), 
-                                                   20%, 
-                                                   square(fill: rgb(13%,61%,67%,100%), 
-                                                          size: 10.0pt), 
-                                                   20%, 
-                                                   square(fill: rgb(13%,61%,67%,100%), 
-                                                          size: 10.0pt)), 
-                                        dir: ltr), 
-                                  stack(children: (square(fill: rgb(13%,61%,67%,100%), 
-                                                          size: 10.0pt), 
-                                                   square(fill: rgb(13%,61%,67%,100%), 
-                                                          size: 10.0pt), 
-                                                   7.0pt, 
-                                                   3.0pt, 
-                                                   square(fill: rgb(13%,61%,67%,100%), 
-                                                          size: 10.0pt)), 
-                                        dir: ltr, 
-                                        spacing: 5.0pt)), 
-                       spacing: 5.0pt), 
-                 parbreak() })
diff --git a/test/out/layout/stack-1-02.out b/test/out/layout/stack-1-02.out
deleted file mode 100644
--- a/test/out/layout/stack-1-02.out
+++ /dev/null
@@ -1,90 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/stack-1-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/stack-1-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/stack-1-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/stack-1-02.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 50.0 Pt))
-       , KeyValArg (Identifier "height") (Literal (Numeric 30.0 Pt))
-       , KeyValArg (Identifier "margin") (Literal (Numeric 0.0 Pt))
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/stack-1-02.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "stack"))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "rect"))
-                     [ KeyValArg (Identifier "width") (Literal (Numeric 40.0 Pt))
-                     , KeyValArg (Identifier "height") (Literal (Numeric 20.0 Pt))
-                     , KeyValArg (Identifier "fill") (Ident (Identifier "green"))
-                     ])
-              , NormalArg
-                  (FuncCall
-                     (Ident (Identifier "rect"))
-                     [ KeyValArg (Identifier "width") (Literal (Numeric 30.0 Pt))
-                     , KeyValArg (Identifier "height") (Literal (Numeric 13.0 Pt))
-                     , KeyValArg (Identifier "fill") (Ident (Identifier "red"))
-                     ])
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 box(body: stack(children: (rect(fill: rgb(18%,80%,25%,100%), 
-                                                 height: 20.0pt, 
-                                                 width: 40.0pt), 
-                                            rect(fill: rgb(100%,25%,21%,100%), 
-                                                 height: 13.0pt, 
-                                                 width: 30.0pt)))), 
-                 parbreak() })
diff --git a/test/out/layout/stack-1-03.out b/test/out/layout/stack-1-03.out
deleted file mode 100644
--- a/test/out/layout/stack-1-03.out
+++ /dev/null
@@ -1,130 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/stack-1-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/stack-1-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/stack-1-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/stack-1-03.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 50.0 Pt))
-       , KeyValArg (Identifier "margin") (Literal (Numeric 5.0 Pt))
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/stack-1-03.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "block"))
-       [ KeyValArg (Identifier "spacing") (Literal (Numeric 5.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/layout/stack-1-03.typ"
-    ( line 5 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ NormalArg (Literal (Numeric 8.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/layout/stack-1-03.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "stack"))
-       [ KeyValArg (Identifier "dir") (Ident (Identifier "rtl"))
-       , NormalArg (Literal (Numeric 1.0 Fr))
-       , NormalArg (Block (Content [ Text "A" ]))
-       , NormalArg (Literal (Numeric 1.0 Fr))
-       , NormalArg (Block (Content [ Text "B" ]))
-       , NormalArg (Block (Content [ Text "C" ]))
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/stack-1-03.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "stack"))
-       [ KeyValArg (Identifier "dir") (Ident (Identifier "rtl"))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "align"))
-              [ NormalArg (Ident (Identifier "center"))
-              , NormalArg (Block (Content [ Text "A" ]))
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "align"))
-              [ NormalArg (Ident (Identifier "left"))
-              , NormalArg (Block (Content [ Text "B" ]))
-              ])
-       , NormalArg (Block (Content [ Text "C" ]))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-], size: 8.0pt), 
-                 stack(children: (1.0fr, 
-                                  text(body: [A], 
-                                       size: 8.0pt), 
-                                  1.0fr, 
-                                  text(body: [B], 
-                                       size: 8.0pt), 
-                                  text(body: [C], 
-                                       size: 8.0pt)), 
-                       dir: rtl), 
-                 text(body: [
-], size: 8.0pt), 
-                 stack(children: (align(alignment: center, 
-                                        body: text(body: [A], 
-                                                   size: 8.0pt)), 
-                                  align(alignment: left, 
-                                        body: text(body: [B], 
-                                                   size: 8.0pt)), 
-                                  text(body: [C], 
-                                       size: 8.0pt)), 
-                       dir: rtl), 
-                 parbreak() })
diff --git a/test/out/layout/stack-2-00.out b/test/out/layout/stack-2-00.out
deleted file mode 100644
--- a/test/out/layout/stack-2-00.out
+++ /dev/null
@@ -1,142 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/stack-2-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/stack-2-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/stack-2-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/layout/stack-2-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 3.5 Cm)) ])
-, SoftBreak
-, Code
-    "test/typ/layout/stack-2-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "stack"))
-       [ KeyValArg (Identifier "dir") (Ident (Identifier "ltr"))
-       , KeyValArg (Identifier "spacing") (Literal (Numeric 1.0 Fr))
-       , SpreadArg
-           (For
-              (BasicBind (Just (Identifier "c")))
-              (Literal (String "ABCDEFGHI"))
-              (Block
-                 (CodeBlock
-                    [ Array
-                        [ Reg
-                            (Block
-                               (Content
-                                  [ Code
-                                      "test/typ/layout/stack-2-00.typ"
-                                      ( line 6 , column 30 )
-                                      (Ident (Identifier "c"))
-                                  ]))
-                        ]
-                    ])))
-       ])
-, ParBreak
-, Text "Hello"
-, SoftBreak
-, Code
-    "test/typ/layout/stack-2-00.typ"
-    ( line 10 , column 2 )
-    (FuncCall
-       (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 2.0 Fr)) ])
-, SoftBreak
-, Text "from"
-, Space
-, Code
-    "test/typ/layout/stack-2-00.typ"
-    ( line 11 , column 7 )
-    (FuncCall
-       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 1.0 Fr)) ])
-, Space
-, Text "the"
-, Space
-, Code
-    "test/typ/layout/stack-2-00.typ"
-    ( line 11 , column 19 )
-    (FuncCall
-       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 1.0 Fr)) ])
-, Space
-, Text "wonderful"
-, SoftBreak
-, Code
-    "test/typ/layout/stack-2-00.typ"
-    ( line 12 , column 2 )
-    (FuncCall
-       (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 1.0 Fr)) ])
-, SoftBreak
-, Text "World!"
-, Space
-, Text "\127757"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 stack(children: (text(body: [A]), 
-                                  text(body: [B]), 
-                                  text(body: [C]), 
-                                  text(body: [D]), 
-                                  text(body: [E]), 
-                                  text(body: [F]), 
-                                  text(body: [G]), 
-                                  text(body: [H]), 
-                                  text(body: [I])), 
-                       dir: ltr, 
-                       spacing: 1.0fr), 
-                 parbreak(), 
-                 text(body: [Hello
-]), 
-                 v(amount: 2.0fr), 
-                 text(body: [
-from ]), 
-                 h(amount: 1.0fr), 
-                 text(body: [ the ]), 
-                 h(amount: 1.0fr), 
-                 text(body: [ wonderful
-]), 
-                 v(amount: 1.0fr), 
-                 text(body: [
-World! 🌍]), 
-                 parbreak() })
diff --git a/test/out/layout/stack-2-01.out b/test/out/layout/stack-2-01.out
deleted file mode 100644
--- a/test/out/layout/stack-2-01.out
+++ /dev/null
@@ -1,104 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/stack-2-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/stack-2-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/stack-2-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/layout/stack-2-01.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 2.0 Cm)) ])
-, SoftBreak
-, Code
-    "test/typ/layout/stack-2-01.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ NormalArg (Ident (Identifier "white")) ])
-, SoftBreak
-, Code
-    "test/typ/layout/stack-2-01.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "rect"))
-       [ KeyValArg (Identifier "fill") (Ident (Identifier "red"))
-       , BlockArg
-           [ SoftBreak
-           , Code
-               "test/typ/layout/stack-2-01.typ"
-               ( line 5 , column 12 )
-               (FuncCall
-                  (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 1.0 Fr)) ])
-           , SoftBreak
-           , Code
-               "test/typ/layout/stack-2-01.typ"
-               ( line 6 , column 4 )
-               (FuncCall
-                  (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 1.0 Fr)) ])
-           , Space
-           , Text "Hi"
-           , Space
-           , Text "you!"
-           , ParBreak
-           ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-], 
-                      color: rgb(100%,100%,100%,100%)), 
-                 rect(body: { text(body: [
-], 
-                                   color: rgb(100%,100%,100%,100%)), 
-                              v(amount: 1.0fr), 
-                              text(body: [
-], 
-                                   color: rgb(100%,100%,100%,100%)), 
-                              h(amount: 1.0fr), 
-                              text(body: [ Hi you!], 
-                                   color: rgb(100%,100%,100%,100%)), 
-                              parbreak() }, 
-                      fill: rgb(100%,25%,21%,100%)), 
-                 parbreak() })
diff --git a/test/out/layout/table-00.out b/test/out/layout/table-00.out
deleted file mode 100644
--- a/test/out/layout/table-00.out
+++ /dev/null
@@ -1,141 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/table-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/table-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/table-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/layout/table-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 70.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/layout/table-00.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "table"))
-       [ KeyValArg
-           (Identifier "fill")
-           (FuncExpr
-              [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-              (If
-                 [ ( FuncCall
-                       (FieldAccess
-                          (Ident (Identifier "even")) (Ident (Identifier "calc")))
-                       [ NormalArg
-                           (Plus (Ident (Identifier "x")) (Ident (Identifier "y")))
-                       ]
-                   , Block
-                       (CodeBlock
-                          [ FuncCall
-                              (Ident (Identifier "rgb")) [ NormalArg (Literal (String "aaa")) ]
-                          ])
-                   )
-                 ]))
-       ])
-, ParBreak
-, Code
-    "test/typ/layout/table-00.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "table"))
-       [ KeyValArg
-           (Identifier "columns")
-           (Times
-              (Array [ Reg (Literal (Numeric 1.0 Fr)) ]) (Literal (Int 3)))
-       , KeyValArg
-           (Identifier "stroke")
-           (Plus
-              (Literal (Numeric 2.0 Pt))
-              (FuncCall
-                 (Ident (Identifier "rgb")) [ NormalArg (Literal (String "333")) ]))
-       , NormalArg (Block (Content [ Text "A" ]))
-       , NormalArg (Block (Content [ Text "B" ]))
-       , NormalArg (Block (Content [ Text "C" ]))
-       , NormalArg (Block (Content []))
-       , NormalArg (Block (Content []))
-       , NormalArg
-           (Block
-              (Content
-                 [ Text "D"
-                 , Space
-                 , HardBreak
-                 , Text "E"
-                 , Space
-                 , HardBreak
-                 , Text "F"
-                 , Space
-                 , HardBreak
-                 , HardBreak
-                 , HardBreak
-                 , Text "G"
-                 ]))
-       , NormalArg (Block (Content [ Text "H" ]))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 table(children: (text(body: [A]), 
-                                  text(body: [B]), 
-                                  text(body: [C]), 
-                                  {  }, 
-                                  {  }, 
-                                  { text(body: [D ]), 
-                                    linebreak(), 
-                                    text(body: [E ]), 
-                                    linebreak(), 
-                                    text(body: [F ]), 
-                                    linebreak(), 
-                                    linebreak(), 
-                                    linebreak(), 
-                                    text(body: [G]) }, 
-                                  text(body: [H])), 
-                       columns: (1.0fr, 
-                                 1.0fr, 
-                                 1.0fr), 
-                       fill: , 
-                       stroke: (thickness: 2.0pt,
-                                color: rgb(1%,1%,1%,100%))), 
-                 parbreak() })
diff --git a/test/out/layout/table-01.out b/test/out/layout/table-01.out
deleted file mode 100644
--- a/test/out/layout/table-01.out
+++ /dev/null
@@ -1,65 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/table-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/table-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/table-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/layout/table-01.typ"
-    ( line 2 , column 2 )
-    (FuncCall
-       (Ident (Identifier "table"))
-       [ KeyValArg (Identifier "columns") (Literal (Int 3))
-       , KeyValArg (Identifier "stroke") (Literal None)
-       , KeyValArg (Identifier "fill") (Ident (Identifier "green"))
-       , NormalArg (Block (Content [ Text "A" ]))
-       , NormalArg (Block (Content [ Text "B" ]))
-       , NormalArg (Block (Content [ Text "C" ]))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 table(children: (text(body: [A]), 
-                                  text(body: [B]), 
-                                  text(body: [C])), 
-                       columns: 3, 
-                       fill: rgb(18%,80%,25%,100%), 
-                       stroke: none), 
-                 parbreak() })
diff --git a/test/out/layout/table-02.out b/test/out/layout/table-02.out
deleted file mode 100644
--- a/test/out/layout/table-02.out
+++ /dev/null
@@ -1,116 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/table-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/table-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/table-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/table-02.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "table"))
-       [ KeyValArg
-           (Identifier "columns")
-           (Array
-              [ Reg (Literal (Numeric 1.0 Fr))
-              , Reg (Literal (Numeric 1.0 Fr))
-              , Reg (Literal (Numeric 1.0 Fr))
-              ])
-       , KeyValArg
-           (Identifier "align")
-           (Array
-              [ Reg (Ident (Identifier "left"))
-              , Reg (Ident (Identifier "center"))
-              , Reg (Ident (Identifier "right"))
-              ])
-       , NormalArg (Block (Content [ Text "A" ]))
-       , NormalArg (Block (Content [ Text "B" ]))
-       , NormalArg (Block (Content [ Text "C" ]))
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/layout/table-02.typ"
-    ( line 10 , column 2 )
-    (Set
-       (Ident (Identifier "align"))
-       [ NormalArg (Ident (Identifier "center")) ])
-, SoftBreak
-, Code
-    "test/typ/layout/table-02.typ"
-    ( line 11 , column 2 )
-    (FuncCall
-       (Ident (Identifier "table"))
-       [ KeyValArg
-           (Identifier "columns")
-           (Array
-              [ Reg (Literal (Numeric 1.0 Fr))
-              , Reg (Literal (Numeric 1.0 Fr))
-              , Reg (Literal (Numeric 1.0 Fr))
-              ])
-       , KeyValArg (Identifier "align") (Array [])
-       , NormalArg (Block (Content [ Text "A" ]))
-       , NormalArg (Block (Content [ Text "B" ]))
-       , NormalArg (Block (Content [ Text "C" ]))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 table(align: (left, 
-                               center, 
-                               right), 
-                       children: (text(body: [A]), 
-                                  text(body: [B]), 
-                                  text(body: [C])), 
-                       columns: (1.0fr, 
-                                 1.0fr, 
-                                 1.0fr)), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 table(align: (), 
-                       children: (text(body: [A]), 
-                                  text(body: [B]), 
-                                  text(body: [C])), 
-                       columns: (1.0fr, 
-                                 1.0fr, 
-                                 1.0fr)), 
-                 parbreak() })
diff --git a/test/out/layout/table-03.out b/test/out/layout/table-03.out
deleted file mode 100644
--- a/test/out/layout/table-03.out
+++ /dev/null
@@ -1,53 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/table-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/table-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/table-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/table-03.typ"
-    ( line 3 , column 2 )
-    (FuncCall (Ident (Identifier "table")) [])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 table(children: ()), 
-                 parbreak() })
diff --git a/test/out/layout/table-04.out b/test/out/layout/table-04.out
deleted file mode 100644
--- a/test/out/layout/table-04.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/layout/terms-00.out b/test/out/layout/terms-00.out
deleted file mode 100644
--- a/test/out/layout/terms-00.out
+++ /dev/null
@@ -1,68 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/terms-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/terms-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/terms-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/terms-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "terms"))
-       [ NormalArg
-           (Array
-              [ Reg (Block (Content [ Text "One" ]))
-              , Reg (Block (Content [ Text "First" ]))
-              ])
-       , NormalArg
-           (Array
-              [ Reg (Block (Content [ Text "Two" ]))
-              , Reg (Block (Content [ Text "Second" ]))
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 terms(children: ((text(body: [One]), 
-                                   text(body: [First])), 
-                                  (text(body: [Two]), 
-                                   text(body: [Second])))), 
-                 parbreak() })
diff --git a/test/out/layout/terms-01.out b/test/out/layout/terms-01.out
deleted file mode 100644
--- a/test/out/layout/terms-01.out
+++ /dev/null
@@ -1,100 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/terms-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/terms-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/terms-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/terms-01.typ"
-    ( line 3 , column 2 )
-    (For
-       (BasicBind (Just (Identifier "word")))
-       (FuncCall
-          (FieldAccess
-             (Ident (Identifier "map"))
-             (FuncCall
-                (FieldAccess
-                   (Ident (Identifier "split"))
-                   (FuncCall
-                      (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 4)) ]))
-                []))
-          [ NormalArg
-              (FuncExpr
-                 [ NormalParam (Identifier "s") ]
-                 (FuncCall
-                    (FieldAccess (Ident (Identifier "trim")) (Ident (Identifier "s")))
-                    [ NormalArg (Literal (String ".")) ]))
-          ])
-       (Block
-          (Content
-             [ SoftBreak
-             , DescListItem
-                 [ Code
-                     "test/typ/layout/terms-01.typ"
-                     ( line 4 , column 6 )
-                     (Ident (Identifier "word"))
-                 ]
-                 [ Text "Latin" , Space , Text "stuff" , Text "." , ParBreak ]
-             ])))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 terms(children: ((text(body: [Lorem]), 
-                                   { text(body: [Latin stuff.]), 
-                                     parbreak() }))), 
-                 text(body: [
-]), 
-                 terms(children: ((text(body: [ipsum]), 
-                                   { text(body: [Latin stuff.]), 
-                                     parbreak() }))), 
-                 text(body: [
-]), 
-                 terms(children: ((text(body: [dolor]), 
-                                   { text(body: [Latin stuff.]), 
-                                     parbreak() }))), 
-                 text(body: [
-]), 
-                 terms(children: ((text(body: [sit]), 
-                                   { text(body: [Latin stuff.]), 
-                                     parbreak() }))), 
-                 parbreak() })
diff --git a/test/out/layout/terms-02.out b/test/out/layout/terms-02.out
deleted file mode 100644
--- a/test/out/layout/terms-02.out
+++ /dev/null
@@ -1,94 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/terms-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/terms-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/terms-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/terms-02.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ NormalArg (Literal (Numeric 8.0 Pt)) ])
-, ParBreak
-, DescListItem
-    [ Text "Fruit" ]
-    [ Text "A"
-    , Space
-    , Text "tasty,"
-    , Space
-    , Text "edible"
-    , Space
-    , Text "thing"
-    , Text "."
-    ]
-, SoftBreak
-, DescListItem
-    [ Text "Veggie" ]
-    [ SoftBreak
-    , Text "An"
-    , Space
-    , Text "important"
-    , Space
-    , Text "energy"
-    , Space
-    , Text "source"
-    , SoftBreak
-    , Text "for"
-    , Space
-    , Text "vegetarians"
-    , Text "."
-    , ParBreak
-    ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 terms(children: ((text(body: [Fruit], 
-                                        size: 8.0pt), 
-                                   text(body: [A tasty, edible thing.], 
-                                        size: 8.0pt)), 
-                                  (text(body: [Veggie], 
-                                        size: 8.0pt), 
-                                   { text(body: [
-An important energy source
-for vegetarians.], 
-                                          size: 8.0pt), 
-                                     parbreak() }))) })
diff --git a/test/out/layout/terms-03.out b/test/out/layout/terms-03.out
deleted file mode 100644
--- a/test/out/layout/terms-03.out
+++ /dev/null
@@ -1,98 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/terms-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/terms-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/terms-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/terms-03.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ NormalArg (Literal (Numeric 8.0 Pt)) ])
-, SoftBreak
-, DescListItem
-    [ Text "First" , Space , Text "list" ]
-    [ Code
-        "test/typ/layout/terms-03.typ"
-        ( line 4 , column 16 )
-        (FuncCall
-           (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 6)) ])
-    , SoftBreak
-    ]
-, SoftBreak
-, Code
-    "test/typ/layout/terms-03.typ"
-    ( line 6 , column 2 )
-    (Set
-       (Ident (Identifier "terms"))
-       [ KeyValArg
-           (Identifier "hanging-indent") (Literal (Numeric 30.0 Pt))
-       ])
-, SoftBreak
-, DescListItem
-    [ Text "Second" , Space , Text "list" ]
-    [ Code
-        "test/typ/layout/terms-03.typ"
-        ( line 7 , column 17 )
-        (FuncCall
-           (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 5)) ])
-    , ParBreak
-    ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-], size: 8.0pt), 
-                 terms(children: ((text(body: [First list], 
-                                        size: 8.0pt), 
-                                   { text(body: [Lorem ipsum dolor sit amet, consectetur], 
-                                          size: 8.0pt), 
-                                     text(body: [
-], 
-                                          size: 8.0pt) }))), 
-                 text(body: [
-], size: 8.0pt), 
-                 terms(children: ((text(body: [Second list], 
-                                        size: 8.0pt), 
-                                   { text(body: [Lorem ipsum dolor sit amet,], 
-                                          size: 8.0pt), 
-                                     parbreak() })), 
-                       hanging-indent: 30.0pt) })
diff --git a/test/out/layout/terms-04.out b/test/out/layout/terms-04.out
deleted file mode 100644
--- a/test/out/layout/terms-04.out
+++ /dev/null
@@ -1,104 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/terms-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/terms-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/terms-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/terms-04.typ"
-    ( line 3 , column 2 )
-    (Show
-       (Just (Ident (Identifier "terms")))
-       (FuncExpr
-          [ NormalParam (Identifier "it") ]
-          (FuncCall
-             (Ident (Identifier "table"))
-             [ KeyValArg (Identifier "columns") (Literal (Int 2))
-             , KeyValArg (Identifier "inset") (Literal (Numeric 3.0 Pt))
-             , SpreadArg
-                 (FuncCall
-                    (FieldAccess
-                       (Ident (Identifier "flatten"))
-                       (FuncCall
-                          (FieldAccess
-                             (Ident (Identifier "map"))
-                             (FieldAccess
-                                (Ident (Identifier "children")) (Ident (Identifier "it"))))
-                          [ NormalArg
-                              (FuncExpr
-                                 [ NormalParam (Identifier "v") ]
-                                 (Array
-                                    [ Reg
-                                        (FuncCall
-                                           (Ident (Identifier "emph"))
-                                           [ NormalArg
-                                               (FieldAccess
-                                                  (Ident (Identifier "term"))
-                                                  (Ident (Identifier "v")))
-                                           ])
-                                    , Reg
-                                        (FieldAccess
-                                           (Ident (Identifier "description"))
-                                           (Ident (Identifier "v")))
-                                    ]))
-                          ]))
-                    [])
-             ])))
-, ParBreak
-, DescListItem [ Text "A" ] [ Text "One" , Space , Text "letter" ]
-, SoftBreak
-, DescListItem
-    [ Text "BB" ] [ Text "Two" , Space , Text "letters" ]
-, SoftBreak
-, DescListItem
-    [ Text "CCC" ] [ Text "Three" , Space , Text "letters" , ParBreak ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 table(children: (emph(body: text(body: [A])), 
-                                  text(body: [One letter]), 
-                                  emph(body: text(body: [BB])), 
-                                  text(body: [Two letters]), 
-                                  emph(body: text(body: [CCC])), 
-                                  { text(body: [Three letters]), 
-                                    parbreak() }), 
-                       columns: 2, 
-                       inset: 3.0pt) })
diff --git a/test/out/layout/terms-05.out b/test/out/layout/terms-05.out
deleted file mode 100644
--- a/test/out/layout/terms-05.out
+++ /dev/null
@@ -1,61 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/terms-05.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/terms-05.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/terms-05.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, DescListItem [ Text "Term" ] []
-, SoftBreak
-, Text "Not"
-, Space
-, Text "in"
-, Space
-, Text "list"
-, SoftBreak
-, Text "/"
-, Text "Nope"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 terms(children: ((text(body: [Term]), 
-                                   {  }))), 
-                 text(body: [Not in list
-/Nope]), 
-                 parbreak() })
diff --git a/test/out/layout/terms-06.out b/test/out/layout/terms-06.out
deleted file mode 100644
--- a/test/out/layout/terms-06.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/layout/transform-00.out b/test/out/layout/transform-00.out
deleted file mode 100644
--- a/test/out/layout/transform-00.out
+++ /dev/null
@@ -1,214 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/transform-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/transform-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/transform-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/transform-00.typ"
-    ( line 3 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "size"))) (Literal (Numeric 11.0 Pt)))
-, SoftBreak
-, Code
-    "test/typ/layout/transform-00.typ"
-    ( line 4 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "tex")))
-       (Block
-          (CodeBlock
-             [ Block (Content [ Text "T" ])
-             , FuncCall
-                 (Ident (Identifier "h"))
-                 [ NormalArg
-                     (Times
-                        (Negated (Literal (Float 0.14))) (Ident (Identifier "size")))
-                 ]
-             , FuncCall
-                 (Ident (Identifier "box"))
-                 [ NormalArg
-                     (FuncCall
-                        (Ident (Identifier "move"))
-                        [ KeyValArg
-                            (Identifier "dy")
-                            (Times (Literal (Float 0.22)) (Ident (Identifier "size")))
-                        , BlockArg [ Text "E" ]
-                        ])
-                 ]
-             , FuncCall
-                 (Ident (Identifier "h"))
-                 [ NormalArg
-                     (Times
-                        (Negated (Literal (Float 0.12))) (Ident (Identifier "size")))
-                 ]
-             , Block (Content [ Text "X" ])
-             ])))
-, ParBreak
-, Code
-    "test/typ/layout/transform-00.typ"
-    ( line 12 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "xetex")))
-       (Block
-          (CodeBlock
-             [ Block (Content [ Text "X" ])
-             , FuncCall
-                 (Ident (Identifier "h"))
-                 [ NormalArg
-                     (Times
-                        (Negated (Literal (Float 0.14))) (Ident (Identifier "size")))
-                 ]
-             , FuncCall
-                 (Ident (Identifier "box"))
-                 [ NormalArg
-                     (FuncCall
-                        (Ident (Identifier "scale"))
-                        [ KeyValArg
-                            (Identifier "x") (Negated (Literal (Numeric 100.0 Percent)))
-                        , NormalArg
-                            (FuncCall
-                               (Ident (Identifier "move"))
-                               [ KeyValArg
-                                   (Identifier "dy")
-                                   (Times (Literal (Float 0.26)) (Ident (Identifier "size")))
-                               , BlockArg [ Text "E" ]
-                               ])
-                        ])
-                 ]
-             , FuncCall
-                 (Ident (Identifier "h"))
-                 [ NormalArg
-                     (Times
-                        (Negated (Literal (Float 0.14))) (Ident (Identifier "size")))
-                 ]
-             , Block (Content [ Text "T" ])
-             , FuncCall
-                 (Ident (Identifier "h"))
-                 [ NormalArg
-                     (Times
-                        (Negated (Literal (Float 0.14))) (Ident (Identifier "size")))
-                 ]
-             , FuncCall
-                 (Ident (Identifier "box"))
-                 [ NormalArg
-                     (FuncCall
-                        (Ident (Identifier "move"))
-                        [ KeyValArg
-                            (Identifier "dy")
-                            (Times (Literal (Float 0.26)) (Ident (Identifier "size")))
-                        , BlockArg [ Text "E" ]
-                        ])
-                 ]
-             , FuncCall
-                 (Ident (Identifier "h"))
-                 [ NormalArg
-                     (Times
-                        (Negated (Literal (Float 0.12))) (Ident (Identifier "size")))
-                 ]
-             , Block (Content [ Text "X" ])
-             ])))
-, ParBreak
-, Code
-    "test/typ/layout/transform-00.typ"
-    ( line 24 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg
-           (Identifier "font") (Literal (String "New Computer Modern"))
-       , NormalArg (Ident (Identifier "size"))
-       ])
-, SoftBreak
-, Text "Neither"
-, Space
-, Code
-    "test/typ/layout/transform-00.typ"
-    ( line 25 , column 10 )
-    (Ident (Identifier "tex"))
-, Text ","
-, Space
-, HardBreak
-, Text "nor"
-, Space
-, Code
-    "test/typ/layout/transform-00.typ"
-    ( line 26 , column 6 )
-    (Ident (Identifier "xetex"))
-, Text "!"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 parbreak(), 
-                 text(body: [
-Neither ], 
-                      font: "New Computer Modern", 
-                      size: 11.0pt), 
-                 text(body: [T]), 
-                 h(amount: -1.54pt), 
-                 box(body: move(body: text(body: [E]), 
-                                dy: 2.42pt)), 
-                 h(amount: -1.3199999999999998pt), 
-                 text(body: [X]), 
-                 text(body: [, ], 
-                      font: "New Computer Modern", 
-                      size: 11.0pt), 
-                 linebreak(), 
-                 text(body: [nor ], 
-                      font: "New Computer Modern", 
-                      size: 11.0pt), 
-                 text(body: [X]), 
-                 h(amount: -1.54pt), 
-                 box(body: scale(body: move(body: text(body: [E]), 
-                                            dy: 2.8600000000000003pt), 
-                                 x: -100%)), 
-                 h(amount: -1.54pt), 
-                 text(body: [T]), 
-                 h(amount: -1.54pt), 
-                 box(body: move(body: text(body: [E]), 
-                                dy: 2.8600000000000003pt)), 
-                 h(amount: -1.3199999999999998pt), 
-                 text(body: [X]), 
-                 text(body: [!], 
-                      font: "New Computer Modern", 
-                      size: 11.0pt), 
-                 parbreak() })
diff --git a/test/out/layout/transform-01.out b/test/out/layout/transform-01.out
deleted file mode 100644
--- a/test/out/layout/transform-01.out
+++ /dev/null
@@ -1,83 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/transform-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/transform-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/transform-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/transform-01.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 80.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/layout/transform-01.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "align"))
-       [ NormalArg
-           (Plus (Ident (Identifier "center")) (Ident (Identifier "horizon")))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rotate"))
-              [ NormalArg (Literal (Numeric 20.0 Deg))
-              , NormalArg
-                  (FuncCall
-                     (Ident (Identifier "scale"))
-                     [ NormalArg (Literal (Numeric 70.0 Percent))
-                     , NormalArg
-                         (FuncCall
-                            (Ident (Identifier "image"))
-                            [ NormalArg (Literal (String "/assets/files/tiger.jpg")) ])
-                     ])
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 align(alignment: Axes(center, horizon), 
-                       body: rotate(angle: 20.0deg, 
-                                    body: scale(body: image(path: "/assets/files/tiger.jpg"), 
-                                                factor: 70%))), 
-                 parbreak() })
diff --git a/test/out/layout/transform-02.out b/test/out/layout/transform-02.out
deleted file mode 100644
--- a/test/out/layout/transform-02.out
+++ /dev/null
@@ -1,68 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/transform-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/transform-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/transform-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/transform-02.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "rotate"))
-       [ NormalArg (Literal (Numeric 10.0 Deg))
-       , KeyValArg
-           (Identifier "origin")
-           (Plus (Ident (Identifier "top")) (Ident (Identifier "left")))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "image"))
-              [ NormalArg (Literal (String "/assets/files/tiger.jpg"))
-              , KeyValArg (Identifier "width") (Literal (Numeric 50.0 Percent))
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 rotate(angle: 10.0deg, 
-                        body: image(path: "/assets/files/tiger.jpg", 
-                                    width: 50%), 
-                        origin: Axes(left, top)), 
-                 parbreak() })
diff --git a/test/out/layout/transform-03.out b/test/out/layout/transform-03.out
deleted file mode 100644
--- a/test/out/layout/transform-03.out
+++ /dev/null
@@ -1,139 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/layout/transform-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/layout/transform-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/layout/transform-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/layout/transform-03.typ"
-    ( line 3 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "r")))
-       (FuncCall
-          (Ident (Identifier "rect"))
-          [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Pt))
-          , KeyValArg (Identifier "height") (Literal (Numeric 10.0 Pt))
-          , KeyValArg (Identifier "fill") (Ident (Identifier "red"))
-          ]))
-, SoftBreak
-, Code
-    "test/typ/layout/transform-03.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 65.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/layout/transform-03.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "scale"))
-              [ NormalArg (Ident (Identifier "r"))
-              , KeyValArg (Identifier "x") (Literal (Numeric 50.0 Percent))
-              , KeyValArg (Identifier "y") (Literal (Numeric 200.0 Percent))
-              , KeyValArg
-                  (Identifier "origin")
-                  (Plus (Ident (Identifier "left")) (Ident (Identifier "top")))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/transform-03.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "scale"))
-              [ NormalArg (Ident (Identifier "r"))
-              , KeyValArg (Identifier "x") (Literal (Numeric 50.0 Percent))
-              , KeyValArg (Identifier "origin") (Ident (Identifier "center"))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/layout/transform-03.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "scale"))
-              [ NormalArg (Ident (Identifier "r"))
-              , KeyValArg (Identifier "x") (Literal (Numeric 50.0 Percent))
-              , KeyValArg (Identifier "y") (Literal (Numeric 200.0 Percent))
-              , KeyValArg
-                  (Identifier "origin")
-                  (Plus (Ident (Identifier "right")) (Ident (Identifier "bottom")))
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 box(body: scale(body: rect(fill: rgb(100%,25%,21%,100%), 
-                                            height: 10.0pt, 
-                                            width: 100.0pt), 
-                                 origin: Axes(left, top), 
-                                 x: 50%, 
-                                 y: 200%)), 
-                 text(body: [
-]), 
-                 box(body: scale(body: rect(fill: rgb(100%,25%,21%,100%), 
-                                            height: 10.0pt, 
-                                            width: 100.0pt), 
-                                 origin: center, 
-                                 x: 50%)), 
-                 text(body: [
-]), 
-                 box(body: scale(body: rect(fill: rgb(100%,25%,21%,100%), 
-                                            height: 10.0pt, 
-                                            width: 100.0pt), 
-                                 origin: Axes(right, bottom), 
-                                 x: 50%, 
-                                 y: 200%)), 
-                 parbreak() })
diff --git a/test/out/math/accent-00.out b/test/out/math/accent-00.out
deleted file mode 100644
--- a/test/out/math/accent-00.out
+++ /dev/null
@@ -1,155 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/accent-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/accent-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/accent-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    False
-    [ Code
-        "test/typ/math/accent-00.typ"
-        ( line 3 , column 2 )
-        (FuncCall (Ident (Identifier "grave")) [ BlockArg [ Text "a" ] ])
-    , Text ","
-    , Code
-        "test/typ/math/accent-00.typ"
-        ( line 3 , column 12 )
-        (FuncCall (Ident (Identifier "acute")) [ BlockArg [ Text "b" ] ])
-    , Text ","
-    , Code
-        "test/typ/math/accent-00.typ"
-        ( line 3 , column 22 )
-        (FuncCall (Ident (Identifier "hat")) [ BlockArg [ Text "f" ] ])
-    , Text ","
-    , Code
-        "test/typ/math/accent-00.typ"
-        ( line 3 , column 30 )
-        (FuncCall
-           (Ident (Identifier "tilde")) [ BlockArg [ Text "\167" ] ])
-    , Text ","
-    , Code
-        "test/typ/math/accent-00.typ"
-        ( line 3 , column 40 )
-        (FuncCall
-           (Ident (Identifier "macron")) [ BlockArg [ Text "\228" ] ])
-    , Text ","
-    , Code
-        "test/typ/math/accent-00.typ"
-        ( line 3 , column 51 )
-        (FuncCall (Ident (Identifier "diaer")) [ BlockArg [ Text "a" ] ])
-    , Text ","
-    , Text "\228"
-    , HardBreak
-    , Code
-        "test/typ/math/accent-00.typ"
-        ( line 4 , column 2 )
-        (FuncCall (Ident (Identifier "breve")) [ BlockArg [ Text "&" ] ])
-    , Text ","
-    , Code
-        "test/typ/math/accent-00.typ"
-        ( line 4 , column 13 )
-        (FuncCall (Ident (Identifier "dot")) [ BlockArg [ Text "!" ] ])
-    , Text ","
-    , Code
-        "test/typ/math/accent-00.typ"
-        ( line 4 , column 21 )
-        (FuncCall (Ident (Identifier "circle")) [ BlockArg [ Text "a" ] ])
-    , Text ","
-    , Code
-        "test/typ/math/accent-00.typ"
-        ( line 4 , column 32 )
-        (FuncCall (Ident (Identifier "caron")) [ BlockArg [ Text "@" ] ])
-    , Text ","
-    , Code
-        "test/typ/math/accent-00.typ"
-        ( line 4 , column 42 )
-        (FuncCall (Ident (Identifier "arrow")) [ BlockArg [ Text "Z" ] ])
-    , Text ","
-    , Code
-        "test/typ/math/accent-00.typ"
-        ( line 4 , column 52 )
-        (FuncCall
-           (FieldAccess (Ident (Identifier "l")) (Ident (Identifier "arrow")))
-           [ BlockArg [ Text "Z" ] ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: false, 
-                               body: { math.accent(accent: `, 
-                                                   base: text(body: [a])), 
-                                       text(body: [,]), 
-                                       math.accent(accent: ´, 
-                                                   base: text(body: [b])), 
-                                       text(body: [,]), 
-                                       math.accent(accent: ^, 
-                                                   base: text(body: [f])), 
-                                       text(body: [,]), 
-                                       math.accent(accent: ∼, 
-                                                   base: text(body: [§])), 
-                                       text(body: [,]), 
-                                       math.accent(accent: ¯, 
-                                                   base: text(body: [ä])), 
-                                       text(body: [,]), 
-                                       math.accent(accent: ¨, 
-                                                   base: text(body: [a])), 
-                                       text(body: [,]), 
-                                       text(body: [ä]), 
-                                       linebreak(), 
-                                       math.accent(accent: ˘, 
-                                                   base: text(body: [&])), 
-                                       text(body: [,]), 
-                                       math.accent(accent: ⋅, 
-                                                   base: text(body: [!])), 
-                                       text(body: [,]), 
-                                       math.accent(accent: ○, 
-                                                   base: text(body: [a])), 
-                                       text(body: [,]), 
-                                       math.accent(accent: ˇ, 
-                                                   base: text(body: [@])), 
-                                       text(body: [,]), 
-                                       math.accent(accent: →, 
-                                                   base: text(body: [Z])), 
-                                       text(body: [,]), 
-                                       math.accent(accent: ←, 
-                                                   base: text(body: [Z])) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/accent-01.out b/test/out/math/accent-01.out
deleted file mode 100644
--- a/test/out/math/accent-01.out
+++ /dev/null
@@ -1,125 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/accent-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/accent-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/accent-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Equation
-    True
-    [ Text "x"
-    , MAlignPoint
-    , Text "="
-    , Text "p"
-    , HardBreak
-    , Code
-        "test/typ/math/accent-01.typ"
-        ( line 2 , column 12 )
-        (FuncCall (Ident (Identifier "dot")) [ BlockArg [ Text "x" ] ])
-    , MAlignPoint
-    , Text "="
-    , Text "v"
-    , HardBreak
-    , Code
-        "test/typ/math/accent-01.typ"
-        ( line 2 , column 26 )
-        (FuncCall
-           (FieldAccess
-              (Ident (Identifier "double")) (Ident (Identifier "dot")))
-           [ BlockArg [ Text "x" ] ])
-    , MAlignPoint
-    , Text "="
-    , Text "a"
-    , HardBreak
-    , Code
-        "test/typ/math/accent-01.typ"
-        ( line 2 , column 47 )
-        (FuncCall
-           (FieldAccess
-              (Ident (Identifier "triple")) (Ident (Identifier "dot")))
-           [ BlockArg [ Text "x" ] ])
-    , MAlignPoint
-    , Text "="
-    , Text "j"
-    , HardBreak
-    , Code
-        "test/typ/math/accent-01.typ"
-        ( line 2 , column 68 )
-        (FuncCall
-           (FieldAccess
-              (Ident (Identifier "quad")) (Ident (Identifier "dot")))
-           [ BlockArg [ Text "x" ] ])
-    , MAlignPoint
-    , Text "="
-    , Text "s"
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [x]), 
-                                       math.alignpoint(), 
-                                       text(body: [=]), 
-                                       text(body: [p]), 
-                                       linebreak(), 
-                                       math.accent(accent: ⋅, 
-                                                   base: text(body: [x])), 
-                                       math.alignpoint(), 
-                                       text(body: [=]), 
-                                       text(body: [v]), 
-                                       linebreak(), 
-                                       math.accent(accent: ¨, 
-                                                   base: text(body: [x])), 
-                                       math.alignpoint(), 
-                                       text(body: [=]), 
-                                       text(body: [a]), 
-                                       linebreak(), 
-                                       math.accent(accent: ⃛, 
-                                                   base: text(body: [x])), 
-                                       math.alignpoint(), 
-                                       text(body: [=]), 
-                                       text(body: [j]), 
-                                       linebreak(), 
-                                       math.accent(accent: ⃜, 
-                                                   base: text(body: [x])), 
-                                       math.alignpoint(), 
-                                       text(body: [=]), 
-                                       text(body: [s]) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/accent-02.out b/test/out/math/accent-02.out
deleted file mode 100644
--- a/test/out/math/accent-02.out
+++ /dev/null
@@ -1,95 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/accent-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/accent-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/accent-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    False
-    [ Code
-        "test/typ/math/accent-02.typ"
-        ( line 3 , column 2 )
-        (FuncCall
-           (Ident (Identifier "accent"))
-           [ BlockArg [ Text "\246" ] , BlockArg [ Text "." ] ])
-    , Text ","
-    , Code
-        "test/typ/math/accent-02.typ"
-        ( line 3 , column 16 )
-        (FuncCall
-           (Ident (Identifier "accent"))
-           [ BlockArg [ Text "v" ]
-           , BlockArg
-               [ Code
-                   "test/typ/math/accent-02.typ"
-                   ( line 3 , column 26 )
-                   (FieldAccess (Ident (Identifier "l")) (Ident (Identifier "arrow")))
-               ]
-           ])
-    , Text ","
-    , Code
-        "test/typ/math/accent-02.typ"
-        ( line 3 , column 31 )
-        (FuncCall
-           (Ident (Identifier "accent"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/accent-02.typ"
-                   ( line 3 , column 38 )
-                   (Ident (Identifier "ZZ"))
-               ]
-           , BlockArg [ Text "\771" ]
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: false, 
-                               body: { math.accent(accent: text(body: [.]), 
-                                                   base: text(body: [ö])), 
-                                       text(body: [,]), 
-                                       math.accent(accent: text(body: [←]), 
-                                                   base: text(body: [v])), 
-                                       text(body: [,]), 
-                                       math.accent(accent: text(body: [̃]), 
-                                                   base: text(body: [ℤ])) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/accent-03.out b/test/out/math/accent-03.out
deleted file mode 100644
--- a/test/out/math/accent-03.out
+++ /dev/null
@@ -1,82 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/accent-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/accent-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/accent-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    False
-    [ Code
-        "test/typ/math/accent-03.typ"
-        ( line 3 , column 2 )
-        (FuncCall
-           (Ident (Identifier "sqrt"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/accent-03.typ"
-                   ( line 3 , column 7 )
-                   (FuncCall (Ident (Identifier "tilde")) [ BlockArg [ Text "T" ] ])
-               ]
-           ])
-    , Text "+"
-    , MFrac
-        (Code
-           "test/typ/math/accent-03.typ"
-           ( line 3 , column 19 )
-           (FuncCall (Ident (Identifier "hat")) [ BlockArg [ Text "f" ] ]))
-        (Code
-           "test/typ/math/accent-03.typ"
-           ( line 3 , column 26 )
-           (FuncCall (Ident (Identifier "hat")) [ BlockArg [ Text "g" ] ]))
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: false, 
-                               body: { math.sqrt(radicand: math.accent(accent: ∼, 
-                                                                       base: text(body: [T]))), 
-                                       text(body: [+]), 
-                                       math.frac(denom: math.accent(accent: ^, 
-                                                                    base: text(body: [g])), 
-                                                 num: math.accent(accent: ^, 
-                                                                  base: text(body: [f]))) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/accent-04.out b/test/out/math/accent-04.out
deleted file mode 100644
--- a/test/out/math/accent-04.out
+++ /dev/null
@@ -1,79 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/accent-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/accent-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/accent-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    False
-    [ Code
-        "test/typ/math/accent-04.typ"
-        ( line 3 , column 2 )
-        (FuncCall
-           (Ident (Identifier "arrow"))
-           [ BlockArg [ Text "ABC " , Text "+" , Text "d" ] ])
-    , Text ","
-    , Code
-        "test/typ/math/accent-04.typ"
-        ( line 3 , column 20 )
-        (FuncCall
-           (Ident (Identifier "tilde"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/accent-04.typ"
-                   ( line 3 , column 26 )
-                   (Ident (Identifier "sum"))
-               ]
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: false, 
-                               body: { math.accent(accent: →, 
-                                                   base: { text(body: [ABC ]), 
-                                                           text(body: [+]), 
-                                                           text(body: [d]) }), 
-                                       text(body: [,]), 
-                                       math.accent(accent: ∼, 
-                                                   base: text(body: [∑])) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/accent-05.out b/test/out/math/accent-05.out
deleted file mode 100644
--- a/test/out/math/accent-05.out
+++ /dev/null
@@ -1,98 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/accent-05.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/accent-05.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/accent-05.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    False
-    [ MAttach Nothing (Just (Text "x")) (Text "A")
-    , Code
-        "test/typ/math/accent-05.typ"
-        ( line 3 , column 6 )
-        (FieldAccess (Ident (Identifier "not")) (Ident (Identifier "eq")))
-    , MAttach
-        Nothing
-        (Just (Text "x"))
-        (Code
-           "test/typ/math/accent-05.typ"
-           ( line 3 , column 9 )
-           (FuncCall (Ident (Identifier "hat")) [ BlockArg [ Text "A" ] ]))
-    , Code
-        "test/typ/math/accent-05.typ"
-        ( line 3 , column 18 )
-        (FieldAccess (Ident (Identifier "not")) (Ident (Identifier "eq")))
-    , MAttach
-        Nothing
-        (Just (Text "x"))
-        (Code
-           "test/typ/math/accent-05.typ"
-           ( line 3 , column 21 )
-           (FuncCall
-              (Ident (Identifier "hat"))
-              [ BlockArg
-                  [ Code
-                      "test/typ/math/accent-05.typ"
-                      ( line 3 , column 25 )
-                      (FuncCall (Ident (Identifier "hat")) [ BlockArg [ Text "A" ] ])
-                  ]
-              ]))
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: false, 
-                               body: { math.attach(b: none, 
-                                                   base: text(body: [A]), 
-                                                   t: text(body: [x])), 
-                                       text(body: [≠]), 
-                                       math.attach(b: none, 
-                                                   base: math.accent(accent: ^, 
-                                                                     base: text(body: [A])), 
-                                                   t: text(body: [x])), 
-                                       text(body: [≠]), 
-                                       math.attach(b: none, 
-                                                   base: math.accent(accent: ^, 
-                                                                     base: math.accent(accent: ^, 
-                                                                                       base: text(body: [A]))), 
-                                                   t: text(body: [x])) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/accent-06.out b/test/out/math/accent-06.out
deleted file mode 100644
--- a/test/out/math/accent-06.out
+++ /dev/null
@@ -1,109 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/accent-06.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/accent-06.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/accent-06.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Code
-        "test/typ/math/accent-06.typ"
-        ( line 3 , column 3 )
-        (FuncCall
-           (Ident (Identifier "tilde"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/accent-06.typ"
-                   ( line 3 , column 9 )
-                   (Ident (Identifier "integral"))
-               ]
-           ])
-    , Text ","
-    , MAttach
-        (Just (Text "a"))
-        (Just (Text "b"))
-        (Code
-           "test/typ/math/accent-06.typ"
-           ( line 3 , column 20 )
-           (FuncCall
-              (Ident (Identifier "tilde"))
-              [ BlockArg
-                  [ Code
-                      "test/typ/math/accent-06.typ"
-                      ( line 3 , column 26 )
-                      (Ident (Identifier "integral"))
-                  ]
-              ]))
-    , Text ","
-    , Code
-        "test/typ/math/accent-06.typ"
-        ( line 3 , column 41 )
-        (FuncCall
-           (Ident (Identifier "tilde"))
-           [ BlockArg
-               [ MAttach
-                   (Just (Text "a"))
-                   (Just (Text "b"))
-                   (Code
-                      "test/typ/math/accent-06.typ"
-                      ( line 3 , column 47 )
-                      (Ident (Identifier "integral")))
-               ]
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { math.accent(accent: ∼, 
-                                                   base: text(body: [∫])), 
-                                       text(body: [,]), 
-                                       math.attach(b: text(body: [a]), 
-                                                   base: math.accent(accent: ∼, 
-                                                                     base: text(body: [∫])), 
-                                                   t: text(body: [b])), 
-                                       text(body: [,]), 
-                                       math.accent(accent: ∼, 
-                                                   base: math.attach(b: text(body: [a]), 
-                                                                     base: text(body: [∫]), 
-                                                                     t: text(body: [b]))) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/alignment-00.out b/test/out/math/alignment-00.out
deleted file mode 100644
--- a/test/out/math/alignment-00.out
+++ /dev/null
@@ -1,118 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/alignment-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/alignment-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/alignment-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/math/alignment-00.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 225.0 Pt)) ])
-, SoftBreak
-, Equation
-    True
-    [ Text " a "
-    , MAlignPoint
-    , Text "="
-    , Text "c"
-    , HardBreak
-    , MAlignPoint
-    , Text "="
-    , Text "c"
-    , Text "+"
-    , Text "1"
-    , MAlignPoint
-    , Text " By definition "
-    , HardBreak
-    , MAlignPoint
-    , Text "="
-    , Text "d"
-    , Text "+"
-    , Text "100"
-    , Text "+"
-    , Text "1000"
-    , HardBreak
-    , MAlignPoint
-    , Text "="
-    , Text "x"
-    , MAlignPoint
-    , MAlignPoint
-    , Text " Even longer "
-    , HardBreak
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [ a ]), 
-                                       math.alignpoint(), 
-                                       text(body: [=]), 
-                                       text(body: [c]), 
-                                       linebreak(), 
-                                       math.alignpoint(), 
-                                       text(body: [=]), 
-                                       text(body: [c]), 
-                                       text(body: [+]), 
-                                       text(body: [1]), 
-                                       math.alignpoint(), 
-                                       text(body: [ By definition ]), 
-                                       linebreak(), 
-                                       math.alignpoint(), 
-                                       text(body: [=]), 
-                                       text(body: [d]), 
-                                       text(body: [+]), 
-                                       text(body: [100]), 
-                                       text(body: [+]), 
-                                       text(body: [1000]), 
-                                       linebreak(), 
-                                       math.alignpoint(), 
-                                       text(body: [=]), 
-                                       text(body: [x]), 
-                                       math.alignpoint(), 
-                                       math.alignpoint(), 
-                                       text(body: [ Even longer ]), 
-                                       linebreak() }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/alignment-01.out b/test/out/math/alignment-01.out
deleted file mode 100644
--- a/test/out/math/alignment-01.out
+++ /dev/null
@@ -1,67 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/alignment-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/alignment-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/alignment-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ MAlignPoint
-    , Text " right "
-    , HardBreak
-    , Text "a very long line "
-    , HardBreak
-    , Text "left "
-    , HardBreak
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { math.alignpoint(), 
-                                       text(body: [ right ]), 
-                                       linebreak(), 
-                                       text(body: [a very long line ]), 
-                                       linebreak(), 
-                                       text(body: [left ]), 
-                                       linebreak() }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/alignment-02.out b/test/out/math/alignment-02.out
deleted file mode 100644
--- a/test/out/math/alignment-02.out
+++ /dev/null
@@ -1,65 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/alignment-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/alignment-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/alignment-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Text " right "
-    , HardBreak
-    , Text "a very long line "
-    , HardBreak
-    , Text "left "
-    , HardBreak
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [ right ]), 
-                                       linebreak(), 
-                                       text(body: [a very long line ]), 
-                                       linebreak(), 
-                                       text(body: [left ]), 
-                                       linebreak() }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/alignment-03.out b/test/out/math/alignment-03.out
deleted file mode 100644
--- a/test/out/math/alignment-03.out
+++ /dev/null
@@ -1,96 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/alignment-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/alignment-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/alignment-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Text "a"
-    , MAlignPoint
-    , Text "="
-    , Text "b"
-    , MAlignPoint
-    , Code
-        "test/typ/math/alignment-03.typ"
-        ( line 4 , column 9 )
-        (Ident (Identifier "quad"))
-    , Text "c"
-    , MAlignPoint
-    , Text "="
-    , Text "d"
-    , HardBreak
-    , Text "e"
-    , MAlignPoint
-    , Text "="
-    , Text "f"
-    , MAlignPoint
-    , Text "g"
-    , MAlignPoint
-    , Text "="
-    , Text "h"
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [a]), 
-                                       math.alignpoint(), 
-                                       text(body: [=]), 
-                                       text(body: [b]), 
-                                       math.alignpoint(), 
-                                       text(body: [ ]), 
-                                       text(body: [c]), 
-                                       math.alignpoint(), 
-                                       text(body: [=]), 
-                                       text(body: [d]), 
-                                       linebreak(), 
-                                       text(body: [e]), 
-                                       math.alignpoint(), 
-                                       text(body: [=]), 
-                                       text(body: [f]), 
-                                       math.alignpoint(), 
-                                       text(body: [g]), 
-                                       math.alignpoint(), 
-                                       text(body: [=]), 
-                                       text(body: [h]) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/attach-00.out b/test/out/math/attach-00.out
deleted file mode 100644
--- a/test/out/math/attach-00.out
+++ /dev/null
@@ -1,99 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/attach-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/attach-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/attach-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    False
-    [ MAttach (Just (Text "x")) Nothing (Text "f")
-    , Text "+"
-    , MAttach Nothing (Just (Text "b")) (Text "t")
-    , Text "+"
-    , MAttach (Just (Text "1")) (Just (Text "2")) (Text "V")
-    , Text "+"
-    , Code
-        "test/typ/math/attach-00.typ"
-        ( line 3 , column 22 )
-        (FuncCall
-           (Ident (Identifier "attach"))
-           [ BlockArg [ Text "A" ]
-           , KeyValArg
-               (Identifier "t")
-               (Block
-                  (Content
-                     [ Code
-                         "test/typ/math/attach-00.typ"
-                         ( line 3 , column 35 )
-                         (Ident (Identifier "alpha"))
-                     ]))
-           , KeyValArg
-               (Identifier "b")
-               (Block
-                  (Content
-                     [ Code
-                         "test/typ/math/attach-00.typ"
-                         ( line 3 , column 45 )
-                         (Ident (Identifier "beta"))
-                     ]))
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: false, 
-                               body: { math.attach(b: text(body: [x]), 
-                                                   base: text(body: [f]), 
-                                                   t: none), 
-                                       text(body: [+]), 
-                                       math.attach(b: none, 
-                                                   base: text(body: [t]), 
-                                                   t: text(body: [b])), 
-                                       text(body: [+]), 
-                                       math.attach(b: text(body: [1]), 
-                                                   base: text(body: [V]), 
-                                                   t: text(body: [2])), 
-                                       text(body: [+]), 
-                                       math.attach(b: text(body: [β]), 
-                                                   base: text(body: [A]), 
-                                                   t: text(body: [α])) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/attach-01.out b/test/out/math/attach-01.out
deleted file mode 100644
--- a/test/out/math/attach-01.out
+++ /dev/null
@@ -1,143 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/attach-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/attach-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/attach-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Equation
-    True
-    [ Code
-        "test/typ/math/attach-01.typ"
-        ( line 5 , column 1 )
-        (FuncCall
-           (Ident (Identifier "attach"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/attach-01.typ"
-                   ( line 5 , column 8 )
-                   (FuncCall (Ident (Identifier "upright")) [ BlockArg [ Text "O" ] ])
-               ]
-           , KeyValArg (Identifier "bl") (Block (Content [ Text "8" ]))
-           , KeyValArg (Identifier "tl") (Block (Content [ Text "16" ]))
-           , KeyValArg (Identifier "br") (Block (Content [ Text "2" ]))
-           , KeyValArg
-               (Identifier "tr")
-               (Block
-                  (Content
-                     [ Text "2"
-                     , Code
-                         "test/typ/math/attach-01.typ"
-                         ( line 5 , column 47 )
-                         (Ident (Identifier "minus"))
-                     ]))
-           ])
-    , Text ","
-    , Code
-        "test/typ/math/attach-01.typ"
-        ( line 6 , column 1 )
-        (FuncCall
-           (Ident (Identifier "attach"))
-           [ BlockArg [ Text "Pb" ]
-           , KeyValArg (Identifier "bl") (Block (Content [ Text "82" ]))
-           , KeyValArg (Identifier "tl") (Block (Content [ Text "207" ]))
-           ])
-    , Text "+"
-    , Code
-        "test/typ/math/attach-01.typ"
-        ( line 6 , column 33 )
-        (FuncCall
-           (Ident (Identifier "attach"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/attach-01.typ"
-                   ( line 6 , column 40 )
-                   (FuncCall (Ident (Identifier "upright")) [ BlockArg [ Text "e" ] ])
-               ]
-           , KeyValArg
-               (Identifier "bl")
-               (Block
-                  (Content
-                     [ Code
-                         "test/typ/math/attach-01.typ"
-                         ( line 6 , column 56 )
-                         (Ident (Identifier "minus"))
-                     , Text "1"
-                     ]))
-           , KeyValArg (Identifier "tl") (Block (Content [ Text "0" ]))
-           ])
-    , Text "+"
-    , MAttach
-        (Just (Text "e"))
-        Nothing
-        (Code
-           "test/typ/math/attach-01.typ"
-           ( line 6 , column 69 )
-           (FuncCall (Ident (Identifier "macron")) [ BlockArg [ Text "v" ] ]))
-    , HardBreak
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { math.attach(base: math.upright(body: text(body: [O])), 
-                                                   bl: text(body: [8]), 
-                                                   br: text(body: [2]), 
-                                                   tl: text(body: [16]), 
-                                                   tr: { text(body: [2]), 
-                                                         text(body: [−]) }), 
-                                       text(body: [,]), 
-                                       math.attach(base: text(body: [Pb]), 
-                                                   bl: text(body: [82]), 
-                                                   tl: text(body: [207])), 
-                                       text(body: [+]), 
-                                       math.attach(base: math.upright(body: text(body: [e])), 
-                                                   bl: { text(body: [−]), 
-                                                         text(body: [1]) }, 
-                                                   tl: text(body: [0])), 
-                                       text(body: [+]), 
-                                       math.attach(b: text(body: [e]), 
-                                                   base: math.accent(accent: ¯, 
-                                                                     base: text(body: [v])), 
-                                                   t: none), 
-                                       linebreak() }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/attach-02.out b/test/out/math/attach-02.out
deleted file mode 100644
--- a/test/out/math/attach-02.out
+++ /dev/null
@@ -1,465 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/attach-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/attach-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/attach-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Code
-        "test/typ/math/attach-02.typ"
-        ( line 4 , column 1 )
-        (FuncCall
-           (Ident (Identifier "attach"))
-           [ BlockArg [ Text "a" ]
-           , KeyValArg (Identifier "tl") (Block (Content [ Text "u" ]))
-           ])
-    , Text ","
-    , Code
-        "test/typ/math/attach-02.typ"
-        ( line 4 , column 21 )
-        (FuncCall
-           (Ident (Identifier "attach"))
-           [ BlockArg [ Text "a" ]
-           , KeyValArg (Identifier "tr") (Block (Content [ Text "v" ]))
-           ])
-    , Text ","
-    , Code
-        "test/typ/math/attach-02.typ"
-        ( line 4 , column 41 )
-        (FuncCall
-           (Ident (Identifier "attach"))
-           [ BlockArg [ Text "a" ]
-           , KeyValArg (Identifier "bl") (Block (Content [ Text "x" ]))
-           ])
-    , Text ","
-    , Code
-        "test/typ/math/attach-02.typ"
-        ( line 5 , column 1 )
-        (FuncCall
-           (Ident (Identifier "attach"))
-           [ BlockArg [ Text "a" ]
-           , KeyValArg (Identifier "br") (Block (Content [ Text "y" ]))
-           ])
-    , Text ","
-    , MAttach
-        Nothing
-        (Just (Text "t"))
-        (Code
-           "test/typ/math/attach-02.typ"
-           ( line 5 , column 21 )
-           (FuncCall (Ident (Identifier "limits")) [ BlockArg [ Text "a" ] ]))
-    , Text ","
-    , MAttach
-        (Just (Text "b"))
-        Nothing
-        (Code
-           "test/typ/math/attach-02.typ"
-           ( line 5 , column 41 )
-           (FuncCall (Ident (Identifier "limits")) [ BlockArg [ Text "a" ] ]))
-    , HardBreak
-    , Code
-        "test/typ/math/attach-02.typ"
-        ( line 7 , column 1 )
-        (FuncCall
-           (Ident (Identifier "attach"))
-           [ BlockArg [ Text "a" ]
-           , KeyValArg (Identifier "tr") (Block (Content [ Text "v" ]))
-           , KeyValArg (Identifier "t") (Block (Content [ Text "t" ]))
-           ])
-    , Text ","
-    , Code
-        "test/typ/math/attach-02.typ"
-        ( line 8 , column 1 )
-        (FuncCall
-           (Ident (Identifier "attach"))
-           [ BlockArg [ Text "a" ]
-           , KeyValArg (Identifier "tr") (Block (Content [ Text "v" ]))
-           , KeyValArg (Identifier "br") (Block (Content [ Text "y" ]))
-           ])
-    , Text ","
-    , Code
-        "test/typ/math/attach-02.typ"
-        ( line 9 , column 1 )
-        (FuncCall
-           (Ident (Identifier "attach"))
-           [ BlockArg [ Text "a" ]
-           , KeyValArg (Identifier "br") (Block (Content [ Text "y" ]))
-           , KeyValArg (Identifier "b") (Block (Content [ Text "b" ]))
-           ])
-    , Text ","
-    , Code
-        "test/typ/math/attach-02.typ"
-        ( line 10 , column 1 )
-        (FuncCall
-           (Ident (Identifier "attach"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/attach-02.typ"
-                   ( line 10 , column 8 )
-                   (FuncCall (Ident (Identifier "limits")) [ BlockArg [ Text "a" ] ])
-               ]
-           , KeyValArg (Identifier "b") (Block (Content [ Text "b" ]))
-           , KeyValArg (Identifier "bl") (Block (Content [ Text "x" ]))
-           ])
-    , Text ","
-    , Code
-        "test/typ/math/attach-02.typ"
-        ( line 11 , column 1 )
-        (FuncCall
-           (Ident (Identifier "attach"))
-           [ BlockArg [ Text "a" ]
-           , KeyValArg (Identifier "tl") (Block (Content [ Text "u" ]))
-           , KeyValArg (Identifier "bl") (Block (Content [ Text "x" ]))
-           ])
-    , Text ","
-    , Code
-        "test/typ/math/attach-02.typ"
-        ( line 12 , column 1 )
-        (FuncCall
-           (Ident (Identifier "attach"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/attach-02.typ"
-                   ( line 12 , column 8 )
-                   (FuncCall (Ident (Identifier "limits")) [ BlockArg [ Text "a" ] ])
-               ]
-           , KeyValArg (Identifier "t") (Block (Content [ Text "t" ]))
-           , KeyValArg (Identifier "tl") (Block (Content [ Text "u" ]))
-           ])
-    , HardBreak
-    , Code
-        "test/typ/math/attach-02.typ"
-        ( line 14 , column 1 )
-        (FuncCall
-           (Ident (Identifier "attach"))
-           [ BlockArg [ Text "a" ]
-           , KeyValArg (Identifier "tl") (Block (Content [ Text "u" ]))
-           , KeyValArg (Identifier "tr") (Block (Content [ Text "v" ]))
-           ])
-    , Text ","
-    , Code
-        "test/typ/math/attach-02.typ"
-        ( line 15 , column 1 )
-        (FuncCall
-           (Ident (Identifier "attach"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/attach-02.typ"
-                   ( line 15 , column 8 )
-                   (FuncCall (Ident (Identifier "limits")) [ BlockArg [ Text "a" ] ])
-               ]
-           , KeyValArg (Identifier "t") (Block (Content [ Text "t" ]))
-           , KeyValArg (Identifier "br") (Block (Content [ Text "y" ]))
-           ])
-    , Text ","
-    , Code
-        "test/typ/math/attach-02.typ"
-        ( line 16 , column 1 )
-        (FuncCall
-           (Ident (Identifier "attach"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/attach-02.typ"
-                   ( line 16 , column 8 )
-                   (FuncCall (Ident (Identifier "limits")) [ BlockArg [ Text "a" ] ])
-               ]
-           , KeyValArg (Identifier "b") (Block (Content [ Text "b" ]))
-           , KeyValArg (Identifier "tr") (Block (Content [ Text "v" ]))
-           ])
-    , Text ","
-    , Code
-        "test/typ/math/attach-02.typ"
-        ( line 17 , column 1 )
-        (FuncCall
-           (Ident (Identifier "attach"))
-           [ BlockArg [ Text "a" ]
-           , KeyValArg (Identifier "bl") (Block (Content [ Text "x" ]))
-           , KeyValArg (Identifier "br") (Block (Content [ Text "y" ]))
-           ])
-    , Text ","
-    , Code
-        "test/typ/math/attach-02.typ"
-        ( line 18 , column 1 )
-        (FuncCall
-           (Ident (Identifier "attach"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/attach-02.typ"
-                   ( line 18 , column 8 )
-                   (FuncCall (Ident (Identifier "limits")) [ BlockArg [ Text "a" ] ])
-               ]
-           , KeyValArg (Identifier "b") (Block (Content [ Text "b" ]))
-           , KeyValArg (Identifier "tl") (Block (Content [ Text "u" ]))
-           ])
-    , Text ","
-    , Code
-        "test/typ/math/attach-02.typ"
-        ( line 19 , column 1 )
-        (FuncCall
-           (Ident (Identifier "attach"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/attach-02.typ"
-                   ( line 19 , column 8 )
-                   (FuncCall (Ident (Identifier "limits")) [ BlockArg [ Text "a" ] ])
-               ]
-           , KeyValArg (Identifier "t") (Block (Content [ Text "t" ]))
-           , KeyValArg (Identifier "bl") (Block (Content [ Text "u" ]))
-           ])
-    , Text ","
-    , MAttach
-        (Just (Text "b"))
-        (Just (Text "t"))
-        (Code
-           "test/typ/math/attach-02.typ"
-           ( line 20 , column 1 )
-           (FuncCall (Ident (Identifier "limits")) [ BlockArg [ Text "a" ] ]))
-    , HardBreak
-    , Code
-        "test/typ/math/attach-02.typ"
-        ( line 22 , column 1 )
-        (FuncCall
-           (Ident (Identifier "attach"))
-           [ BlockArg [ Text "a" ]
-           , KeyValArg (Identifier "tl") (Block (Content [ Text "u" ]))
-           , KeyValArg (Identifier "tr") (Block (Content [ Text "v" ]))
-           , KeyValArg (Identifier "bl") (Block (Content [ Text "x" ]))
-           , KeyValArg (Identifier "br") (Block (Content [ Text "y" ]))
-           ])
-    , Text ","
-    , Code
-        "test/typ/math/attach-02.typ"
-        ( line 23 , column 1 )
-        (FuncCall
-           (Ident (Identifier "attach"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/attach-02.typ"
-                   ( line 23 , column 8 )
-                   (FuncCall (Ident (Identifier "limits")) [ BlockArg [ Text "a" ] ])
-               ]
-           , KeyValArg (Identifier "t") (Block (Content [ Text "t" ]))
-           , KeyValArg (Identifier "bl") (Block (Content [ Text "x" ]))
-           , KeyValArg (Identifier "br") (Block (Content [ Text "y" ]))
-           , KeyValArg (Identifier "b") (Block (Content [ Text "b" ]))
-           ])
-    , Text ","
-    , Code
-        "test/typ/math/attach-02.typ"
-        ( line 24 , column 1 )
-        (FuncCall
-           (Ident (Identifier "attach"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/attach-02.typ"
-                   ( line 24 , column 8 )
-                   (FuncCall (Ident (Identifier "limits")) [ BlockArg [ Text "a" ] ])
-               ]
-           , KeyValArg (Identifier "t") (Block (Content [ Text "t" ]))
-           , KeyValArg (Identifier "tl") (Block (Content [ Text "u" ]))
-           , KeyValArg (Identifier "tr") (Block (Content [ Text "v" ]))
-           , KeyValArg (Identifier "b") (Block (Content [ Text "b" ]))
-           ])
-    , Text ","
-    , Code
-        "test/typ/math/attach-02.typ"
-        ( line 25 , column 1 )
-        (FuncCall
-           (Ident (Identifier "attach"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/attach-02.typ"
-                   ( line 25 , column 8 )
-                   (FuncCall (Ident (Identifier "limits")) [ BlockArg [ Text "a" ] ])
-               ]
-           , KeyValArg (Identifier "tl") (Block (Content [ Text "u" ]))
-           , KeyValArg (Identifier "bl") (Block (Content [ Text "x" ]))
-           , KeyValArg (Identifier "t") (Block (Content [ Text "t" ]))
-           , KeyValArg (Identifier "b") (Block (Content [ Text "b" ]))
-           ])
-    , Text ","
-    , Code
-        "test/typ/math/attach-02.typ"
-        ( line 26 , column 1 )
-        (FuncCall
-           (Ident (Identifier "attach"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/attach-02.typ"
-                   ( line 26 , column 8 )
-                   (FuncCall (Ident (Identifier "limits")) [ BlockArg [ Text "a" ] ])
-               ]
-           , KeyValArg (Identifier "t") (Block (Content [ Text "t" ]))
-           , KeyValArg (Identifier "b") (Block (Content [ Text "b" ]))
-           , KeyValArg (Identifier "tr") (Block (Content [ Text "v" ]))
-           , KeyValArg (Identifier "br") (Block (Content [ Text "y" ]))
-           ])
-    , Text ","
-    , Code
-        "test/typ/math/attach-02.typ"
-        ( line 27 , column 1 )
-        (FuncCall
-           (Ident (Identifier "attach"))
-           [ BlockArg [ Text "a" ]
-           , KeyValArg (Identifier "tl") (Block (Content [ Text "u" ]))
-           , KeyValArg (Identifier "t") (Block (Content [ Text "t" ]))
-           , KeyValArg (Identifier "tr") (Block (Content [ Text "v" ]))
-           , KeyValArg (Identifier "bl") (Block (Content [ Text "x" ]))
-           , KeyValArg (Identifier "b") (Block (Content [ Text "b" ]))
-           , KeyValArg (Identifier "br") (Block (Content [ Text "y" ]))
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { math.attach(base: text(body: [a]), 
-                                                   tl: text(body: [u])), 
-                                       text(body: [,]), 
-                                       math.attach(base: text(body: [a]), 
-                                                   tr: text(body: [v])), 
-                                       text(body: [,]), 
-                                       math.attach(base: text(body: [a]), 
-                                                   bl: text(body: [x])), 
-                                       text(body: [,]), 
-                                       math.attach(base: text(body: [a]), 
-                                                   br: text(body: [y])), 
-                                       text(body: [,]), 
-                                       math.attach(b: none, 
-                                                   base: math.limits(body: text(body: [a])), 
-                                                   t: text(body: [t])), 
-                                       text(body: [,]), 
-                                       math.attach(b: text(body: [b]), 
-                                                   base: math.limits(body: text(body: [a])), 
-                                                   t: none), 
-                                       linebreak(), 
-                                       math.attach(base: text(body: [a]), 
-                                                   t: text(body: [t]), 
-                                                   tr: text(body: [v])), 
-                                       text(body: [,]), 
-                                       math.attach(base: text(body: [a]), 
-                                                   br: text(body: [y]), 
-                                                   tr: text(body: [v])), 
-                                       text(body: [,]), 
-                                       math.attach(b: text(body: [b]), 
-                                                   base: text(body: [a]), 
-                                                   br: text(body: [y])), 
-                                       text(body: [,]), 
-                                       math.attach(b: text(body: [b]), 
-                                                   base: math.limits(body: text(body: [a])), 
-                                                   bl: text(body: [x])), 
-                                       text(body: [,]), 
-                                       math.attach(base: text(body: [a]), 
-                                                   bl: text(body: [x]), 
-                                                   tl: text(body: [u])), 
-                                       text(body: [,]), 
-                                       math.attach(base: math.limits(body: text(body: [a])), 
-                                                   t: text(body: [t]), 
-                                                   tl: text(body: [u])), 
-                                       linebreak(), 
-                                       math.attach(base: text(body: [a]), 
-                                                   tl: text(body: [u]), 
-                                                   tr: text(body: [v])), 
-                                       text(body: [,]), 
-                                       math.attach(base: math.limits(body: text(body: [a])), 
-                                                   br: text(body: [y]), 
-                                                   t: text(body: [t])), 
-                                       text(body: [,]), 
-                                       math.attach(b: text(body: [b]), 
-                                                   base: math.limits(body: text(body: [a])), 
-                                                   tr: text(body: [v])), 
-                                       text(body: [,]), 
-                                       math.attach(base: text(body: [a]), 
-                                                   bl: text(body: [x]), 
-                                                   br: text(body: [y])), 
-                                       text(body: [,]), 
-                                       math.attach(b: text(body: [b]), 
-                                                   base: math.limits(body: text(body: [a])), 
-                                                   tl: text(body: [u])), 
-                                       text(body: [,]), 
-                                       math.attach(base: math.limits(body: text(body: [a])), 
-                                                   bl: text(body: [u]), 
-                                                   t: text(body: [t])), 
-                                       text(body: [,]), 
-                                       math.attach(b: text(body: [b]), 
-                                                   base: math.limits(body: text(body: [a])), 
-                                                   t: text(body: [t])), 
-                                       linebreak(), 
-                                       math.attach(base: text(body: [a]), 
-                                                   bl: text(body: [x]), 
-                                                   br: text(body: [y]), 
-                                                   tl: text(body: [u]), 
-                                                   tr: text(body: [v])), 
-                                       text(body: [,]), 
-                                       math.attach(b: text(body: [b]), 
-                                                   base: math.limits(body: text(body: [a])), 
-                                                   bl: text(body: [x]), 
-                                                   br: text(body: [y]), 
-                                                   t: text(body: [t])), 
-                                       text(body: [,]), 
-                                       math.attach(b: text(body: [b]), 
-                                                   base: math.limits(body: text(body: [a])), 
-                                                   t: text(body: [t]), 
-                                                   tl: text(body: [u]), 
-                                                   tr: text(body: [v])), 
-                                       text(body: [,]), 
-                                       math.attach(b: text(body: [b]), 
-                                                   base: math.limits(body: text(body: [a])), 
-                                                   bl: text(body: [x]), 
-                                                   t: text(body: [t]), 
-                                                   tl: text(body: [u])), 
-                                       text(body: [,]), 
-                                       math.attach(b: text(body: [b]), 
-                                                   base: math.limits(body: text(body: [a])), 
-                                                   br: text(body: [y]), 
-                                                   t: text(body: [t]), 
-                                                   tr: text(body: [v])), 
-                                       text(body: [,]), 
-                                       math.attach(b: text(body: [b]), 
-                                                   base: text(body: [a]), 
-                                                   bl: text(body: [x]), 
-                                                   br: text(body: [y]), 
-                                                   t: text(body: [t]), 
-                                                   tl: text(body: [u]), 
-                                                   tr: text(body: [v])) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/attach-03.out b/test/out/math/attach-03.out
deleted file mode 100644
--- a/test/out/math/attach-03.out
+++ /dev/null
@@ -1,157 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/attach-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/attach-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/attach-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    False
-    [ MAttach
-        (Just (Text "1"))
-        Nothing
-        (Code
-           "test/typ/math/attach-03.typ"
-           ( line 3 , column 2 )
-           (Ident (Identifier "pi")))
-    , MGroup (Just "(") (Just ")") [ Text "Y" ]
-    , Text ","
-    , MAttach
-        (Just
-           (MGroup
-              Nothing
-              Nothing
-              [ Text "f" , MGroup (Just "(") (Just ")") [ Text "x" ] ]))
-        Nothing
-        (Text "a")
-    , Text ","
-    , MAttach
-        Nothing
-        (Just
-           (Code
-              "test/typ/math/attach-03.typ"
-              ( line 3 , column 21 )
-              (FuncCall (Ident (Identifier "zeta")) [ BlockArg [ Text "x" ] ])))
-        (Text "a")
-    , HardBreak
-    , MAttach
-        Nothing
-        (Just
-           (Code
-              "test/typ/math/attach-03.typ"
-              ( line 4 , column 4 )
-              (FuncCall
-                 (FieldAccess
-                    (Ident (Identifier "eq")) (Ident (Identifier "subset")))
-                 [ BlockArg [ Text "x" ] ])))
-        (Text "a")
-    , Text ","
-    , MAttach
-        (Just
-           (MGroup
-              Nothing
-              Nothing
-              [ Code
-                  "test/typ/math/attach-03.typ"
-                  ( line 4 , column 21 )
-                  (FuncCall (Ident (Identifier "zeta")) [ BlockArg [ Text "x" ] ])
-              ]))
-        Nothing
-        (Text "a")
-    , Text ","
-    , MAttach
-        (Just
-           (MGroup
-              Nothing
-              Nothing
-              [ Text "1" , MGroup (Just "(") (Just ")") [ Text "Y" ] ]))
-        Nothing
-        (Code
-           "test/typ/math/attach-03.typ"
-           ( line 4 , column 31 )
-           (Ident (Identifier "pi")))
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: false, 
-                               body: { math.attach(b: text(body: [1]), 
-                                                   base: text(body: [π]), 
-                                                   t: none), 
-                                       math.lr(body: ({ [(], 
-                                                        text(body: [Y]), 
-                                                        [)] })), 
-                                       text(body: [,]), 
-                                       math.attach(b: { text(body: [f]), 
-                                                        math.lr(body: ({ [(], 
-                                                                         text(body: [x]), 
-                                                                         [)] })) }, 
-                                                   base: text(body: [a]), 
-                                                   t: none), 
-                                       text(body: [,]), 
-                                       math.attach(b: none, 
-                                                   base: text(body: [a]), 
-                                                   t: { text(body: [ζ]), 
-                                                        text(body: [(]), 
-                                                        text(body: [x]), 
-                                                        text(body: [)]) }), 
-                                       linebreak(), 
-                                       math.attach(b: none, 
-                                                   base: text(body: [a]), 
-                                                   t: { text(body: [⊆]), 
-                                                        text(body: [(]), 
-                                                        text(body: [x]), 
-                                                        text(body: [)]) }), 
-                                       text(body: [,]), 
-                                       math.attach(b: { text(body: [ζ]), 
-                                                        text(body: [(]), 
-                                                        text(body: [x]), 
-                                                        text(body: [)]) }, 
-                                                   base: text(body: [a]), 
-                                                   t: none), 
-                                       text(body: [,]), 
-                                       math.attach(b: { text(body: [1]), 
-                                                        math.lr(body: ({ [(], 
-                                                                         text(body: [Y]), 
-                                                                         [)] })) }, 
-                                                   base: text(body: [π]), 
-                                                   t: none) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/attach-04.out b/test/out/math/attach-04.out
deleted file mode 100644
--- a/test/out/math/attach-04.out
+++ /dev/null
@@ -1,322 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/attach-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/attach-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/attach-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ MFrac
-        (Text "1")
-        (MGroup
-           Nothing
-           Nothing
-           [ MAttach
-               Nothing
-               (Just (Text "5"))
-               (MAttach
-                  Nothing
-                  (Just (Text "4"))
-                  (MAttach
-                     Nothing
-                     (Just (Text "3"))
-                     (MAttach Nothing (Just (Text "2")) (Text "V"))))
-           ])
-    , Text ","
-    , MFrac
-        (Text "1")
-        (Code
-           "test/typ/math/attach-04.typ"
-           ( line 4 , column 5 )
-           (FuncCall
-              (Ident (Identifier "attach"))
-              [ BlockArg [ Text "V" ]
-              , KeyValArg
-                  (Identifier "tl")
-                  (Block
-                     (Content
-                        [ Code
-                            "test/typ/math/attach-04.typ"
-                            ( line 4 , column 19 )
-                            (FuncCall
-                               (Ident (Identifier "attach"))
-                               [ BlockArg [ Text "2" ]
-                               , KeyValArg
-                                   (Identifier "tl")
-                                   (Block
-                                      (Content
-                                         [ Code
-                                             "test/typ/math/attach-04.typ"
-                                             ( line 4 , column 33 )
-                                             (FuncCall
-                                                (Ident (Identifier "attach"))
-                                                [ BlockArg [ Text "3" ]
-                                                , KeyValArg
-                                                    (Identifier "tl")
-                                                    (Block
-                                                       (Content
-                                                          [ Code
-                                                              "test/typ/math/attach-04.typ"
-                                                              ( line 4 , column 47 )
-                                                              (FuncCall
-                                                                 (Ident (Identifier "attach"))
-                                                                 [ BlockArg [ Text "4" ]
-                                                                 , KeyValArg
-                                                                     (Identifier "tl")
-                                                                     (Block (Content [ Text "5" ]))
-                                                                 ])
-                                                          ]))
-                                                ])
-                                         ]))
-                               ])
-                        ]))
-              ]))
-    , Text ","
-    , Code
-        "test/typ/math/attach-04.typ"
-        ( line 5 , column 3 )
-        (FuncCall
-           (Ident (Identifier "attach"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/attach-04.typ"
-                   ( line 5 , column 10 )
-                   (Ident (Identifier "Omega"))
-               ]
-           , KeyValArg
-               (Identifier "tl")
-               (Block
-                  (Content
-                     [ Code
-                         "test/typ/math/attach-04.typ"
-                         ( line 6 , column 9 )
-                         (FuncCall
-                            (Ident (Identifier "attach"))
-                            [ BlockArg [ Text "2" ]
-                            , KeyValArg
-                                (Identifier "tl")
-                                (Block
-                                   (Content
-                                      [ Code
-                                          "test/typ/math/attach-04.typ"
-                                          ( line 6 , column 23 )
-                                          (FuncCall
-                                             (Ident (Identifier "attach"))
-                                             [ BlockArg [ Text "3" ]
-                                             , KeyValArg
-                                                 (Identifier "tl")
-                                                 (Block
-                                                    (Content
-                                                       [ Code
-                                                           "test/typ/math/attach-04.typ"
-                                                           ( line 6 , column 37 )
-                                                           (FuncCall
-                                                              (Ident (Identifier "attach"))
-                                                              [ BlockArg [ Text "4" ]
-                                                              , KeyValArg
-                                                                  (Identifier "tl")
-                                                                  (Block (Content [ Text "5" ]))
-                                                              ])
-                                                       ]))
-                                             ])
-                                      ]))
-                            ])
-                     ]))
-           , KeyValArg
-               (Identifier "tr")
-               (Block
-                  (Content
-                     [ Code
-                         "test/typ/math/attach-04.typ"
-                         ( line 7 , column 9 )
-                         (FuncCall
-                            (Ident (Identifier "attach"))
-                            [ BlockArg [ Text "2" ]
-                            , KeyValArg
-                                (Identifier "tr")
-                                (Block
-                                   (Content
-                                      [ Code
-                                          "test/typ/math/attach-04.typ"
-                                          ( line 7 , column 23 )
-                                          (FuncCall
-                                             (Ident (Identifier "attach"))
-                                             [ BlockArg [ Text "3" ]
-                                             , KeyValArg
-                                                 (Identifier "tr")
-                                                 (Block
-                                                    (Content
-                                                       [ Code
-                                                           "test/typ/math/attach-04.typ"
-                                                           ( line 7 , column 37 )
-                                                           (FuncCall
-                                                              (Ident (Identifier "attach"))
-                                                              [ BlockArg [ Text "4" ]
-                                                              , KeyValArg
-                                                                  (Identifier "tr")
-                                                                  (Block (Content [ Text "5" ]))
-                                                              ])
-                                                       ]))
-                                             ])
-                                      ]))
-                            ])
-                     ]))
-           , KeyValArg
-               (Identifier "bl")
-               (Block
-                  (Content
-                     [ Code
-                         "test/typ/math/attach-04.typ"
-                         ( line 8 , column 9 )
-                         (FuncCall
-                            (Ident (Identifier "attach"))
-                            [ BlockArg [ Text "2" ]
-                            , KeyValArg
-                                (Identifier "bl")
-                                (Block
-                                   (Content
-                                      [ Code
-                                          "test/typ/math/attach-04.typ"
-                                          ( line 8 , column 23 )
-                                          (FuncCall
-                                             (Ident (Identifier "attach"))
-                                             [ BlockArg [ Text "3" ]
-                                             , KeyValArg
-                                                 (Identifier "bl")
-                                                 (Block
-                                                    (Content
-                                                       [ Code
-                                                           "test/typ/math/attach-04.typ"
-                                                           ( line 8 , column 37 )
-                                                           (FuncCall
-                                                              (Ident (Identifier "attach"))
-                                                              [ BlockArg [ Text "4" ]
-                                                              , KeyValArg
-                                                                  (Identifier "bl")
-                                                                  (Block (Content [ Text "5" ]))
-                                                              ])
-                                                       ]))
-                                             ])
-                                      ]))
-                            ])
-                     ]))
-           , KeyValArg
-               (Identifier "br")
-               (Block
-                  (Content
-                     [ Code
-                         "test/typ/math/attach-04.typ"
-                         ( line 9 , column 9 )
-                         (FuncCall
-                            (Ident (Identifier "attach"))
-                            [ BlockArg [ Text "2" ]
-                            , KeyValArg
-                                (Identifier "br")
-                                (Block
-                                   (Content
-                                      [ Code
-                                          "test/typ/math/attach-04.typ"
-                                          ( line 9 , column 23 )
-                                          (FuncCall
-                                             (Ident (Identifier "attach"))
-                                             [ BlockArg [ Text "3" ]
-                                             , KeyValArg
-                                                 (Identifier "br")
-                                                 (Block
-                                                    (Content
-                                                       [ Code
-                                                           "test/typ/math/attach-04.typ"
-                                                           ( line 9 , column 37 )
-                                                           (FuncCall
-                                                              (Ident (Identifier "attach"))
-                                                              [ BlockArg [ Text "4" ]
-                                                              , KeyValArg
-                                                                  (Identifier "br")
-                                                                  (Block (Content [ Text "5" ]))
-                                                              ])
-                                                       ]))
-                                             ])
-                                      ]))
-                            ])
-                     ]))
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { math.frac(denom: math.attach(b: none, 
-                                                                    base: math.attach(b: none, 
-                                                                                      base: math.attach(b: none, 
-                                                                                                        base: math.attach(b: none, 
-                                                                                                                          base: text(body: [V]), 
-                                                                                                                          t: text(body: [2])), 
-                                                                                                        t: text(body: [3])), 
-                                                                                      t: text(body: [4])), 
-                                                                    t: text(body: [5])), 
-                                                 num: text(body: [1])), 
-                                       text(body: [,]), 
-                                       math.frac(denom: math.attach(base: text(body: [V]), 
-                                                                    tl: math.attach(base: text(body: [2]), 
-                                                                                    tl: math.attach(base: text(body: [3]), 
-                                                                                                    tl: math.attach(base: text(body: [4]), 
-                                                                                                                    tl: text(body: [5]))))), 
-                                                 num: text(body: [1])), 
-                                       text(body: [,]), 
-                                       math.attach(base: text(body: [Ω]), 
-                                                   bl: math.attach(base: text(body: [2]), 
-                                                                   bl: math.attach(base: text(body: [3]), 
-                                                                                   bl: math.attach(base: text(body: [4]), 
-                                                                                                   bl: text(body: [5])))), 
-                                                   br: math.attach(base: text(body: [2]), 
-                                                                   br: math.attach(base: text(body: [3]), 
-                                                                                   br: math.attach(base: text(body: [4]), 
-                                                                                                   br: text(body: [5])))), 
-                                                   tl: math.attach(base: text(body: [2]), 
-                                                                   tl: math.attach(base: text(body: [3]), 
-                                                                                   tl: math.attach(base: text(body: [4]), 
-                                                                                                   tl: text(body: [5])))), 
-                                                   tr: math.attach(base: text(body: [2]), 
-                                                                   tr: math.attach(base: text(body: [3]), 
-                                                                                   tr: math.attach(base: text(body: [4]), 
-                                                                                                   tr: text(body: [5]))))) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/attach-05.out b/test/out/math/attach-05.out
deleted file mode 100644
--- a/test/out/math/attach-05.out
+++ /dev/null
@@ -1,174 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/attach-05.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/attach-05.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/attach-05.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Code
-        "test/typ/math/attach-05.typ"
-        ( line 3 , column 3 )
-        (FuncCall
-           (Ident (Identifier "sqrt"))
-           [ BlockArg
-               [ MAttach
-                   (Just (MGroup Nothing Nothing [ MFrac (Text "1") (Text "2") ]))
-                   (Just
-                      (Code
-                         "test/typ/math/attach-05.typ"
-                         ( line 3 , column 16 )
-                         (Ident (Identifier "zeta"))))
-                   (Text "a")
-               ]
-           ])
-    , Text ","
-    , Code
-        "test/typ/math/attach-05.typ"
-        ( line 3 , column 23 )
-        (FuncCall
-           (Ident (Identifier "sqrt"))
-           [ BlockArg
-               [ MAttach
-                   (Just
-                      (Code
-                         "test/typ/math/attach-05.typ"
-                         ( line 3 , column 30 )
-                         (Ident (Identifier "alpha"))))
-                   (Just (MGroup Nothing Nothing [ MFrac (Text "1") (Text "2") ]))
-                   (Text "a")
-               ]
-           ])
-    , Text ","
-    , Code
-        "test/typ/math/attach-05.typ"
-        ( line 3 , column 44 )
-        (FuncCall
-           (Ident (Identifier "sqrt"))
-           [ BlockArg
-               [ MAttach
-                   (Just (MGroup Nothing Nothing [ MFrac (Text "1") (Text "2") ]))
-                   (Just (MGroup Nothing Nothing [ MFrac (Text "3") (Text "4") ]))
-                   (Text "a")
-               ]
-           ])
-    , HardBreak
-    , Code
-        "test/typ/math/attach-05.typ"
-        ( line 4 , column 3 )
-        (FuncCall
-           (Ident (Identifier "sqrt"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/attach-05.typ"
-                   ( line 4 , column 8 )
-                   (FuncCall
-                      (Ident (Identifier "attach"))
-                      [ BlockArg [ Text "a" ]
-                      , KeyValArg
-                          (Identifier "tl") (Block (Content [ MFrac (Text "1") (Text "2") ]))
-                      , KeyValArg
-                          (Identifier "bl") (Block (Content [ MFrac (Text "3") (Text "4") ]))
-                      ])
-               ]
-           ])
-    , Text ","
-    , Code
-        "test/typ/math/attach-05.typ"
-        ( line 5 , column 3 )
-        (FuncCall
-           (Ident (Identifier "sqrt"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/attach-05.typ"
-                   ( line 5 , column 8 )
-                   (FuncCall
-                      (Ident (Identifier "attach"))
-                      [ BlockArg [ Text "a" ]
-                      , KeyValArg
-                          (Identifier "tl") (Block (Content [ MFrac (Text "1") (Text "2") ]))
-                      , KeyValArg
-                          (Identifier "bl") (Block (Content [ MFrac (Text "3") (Text "4") ]))
-                      , KeyValArg
-                          (Identifier "tr") (Block (Content [ MFrac (Text "1") (Text "2") ]))
-                      , KeyValArg
-                          (Identifier "br") (Block (Content [ MFrac (Text "3") (Text "4") ]))
-                      ])
-               ]
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { math.sqrt(radicand: math.attach(b: math.frac(denom: text(body: [2]), 
-                                                                                    num: text(body: [1])), 
-                                                                       base: text(body: [a]), 
-                                                                       t: text(body: [ζ]))), 
-                                       text(body: [,]), 
-                                       math.sqrt(radicand: math.attach(b: text(body: [α]), 
-                                                                       base: text(body: [a]), 
-                                                                       t: math.frac(denom: text(body: [2]), 
-                                                                                    num: text(body: [1])))), 
-                                       text(body: [,]), 
-                                       math.sqrt(radicand: math.attach(b: math.frac(denom: text(body: [2]), 
-                                                                                    num: text(body: [1])), 
-                                                                       base: text(body: [a]), 
-                                                                       t: math.frac(denom: text(body: [4]), 
-                                                                                    num: text(body: [3])))), 
-                                       linebreak(), 
-                                       math.sqrt(radicand: math.attach(base: text(body: [a]), 
-                                                                       bl: math.frac(denom: text(body: [4]), 
-                                                                                     num: text(body: [3])), 
-                                                                       tl: math.frac(denom: text(body: [2]), 
-                                                                                     num: text(body: [1])))), 
-                                       text(body: [,]), 
-                                       math.sqrt(radicand: math.attach(base: text(body: [a]), 
-                                                                       bl: math.frac(denom: text(body: [4]), 
-                                                                                     num: text(body: [3])), 
-                                                                       br: math.frac(denom: text(body: [4]), 
-                                                                                     num: text(body: [3])), 
-                                                                       tl: math.frac(denom: text(body: [2]), 
-                                                                                     num: text(body: [1])), 
-                                                                       tr: math.frac(denom: text(body: [2]), 
-                                                                                     num: text(body: [1])))) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/attach-06.out b/test/out/math/attach-06.out
deleted file mode 100644
--- a/test/out/math/attach-06.out
+++ /dev/null
@@ -1,99 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/attach-06.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/attach-06.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/attach-06.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ MAttach
-        Nothing
-        (Just (Text "n"))
-        (MGroup
-           (Just "(")
-           (Just ")")
-           [ Code
-               "test/typ/math/attach-06.typ"
-               ( line 3 , column 4 )
-               (Ident (Identifier "minus"))
-           , Text "1"
-           ])
-    , Text "+"
-    , MAttach
-        Nothing
-        (Just
-           (MGroup
-              Nothing
-              Nothing
-              [ Code
-                  "test/typ/math/attach-06.typ"
-                  ( line 3 , column 23 )
-                  (Ident (Identifier "minus"))
-              , MFrac (Text "1") (Text "2")
-              ]))
-        (MGroup
-           (Just "(")
-           (Just ")")
-           [ MFrac (Text "1") (Text "2") , Text "+" , Text "3" ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { math.attach(b: none, 
-                                                   base: math.lr(body: ({ [(], 
-                                                                          text(body: [−]), 
-                                                                          text(body: [1]), 
-                                                                          [)] })), 
-                                                   t: text(body: [n])), 
-                                       text(body: [+]), 
-                                       math.attach(b: none, 
-                                                   base: math.lr(body: ({ [(], 
-                                                                          math.frac(denom: text(body: [2]), 
-                                                                                    num: text(body: [1])), 
-                                                                          text(body: [+]), 
-                                                                          text(body: [3]), 
-                                                                          [)] })), 
-                                                   t: { text(body: [−]), 
-                                                        math.frac(denom: text(body: [2]), 
-                                                                  num: text(body: [1])) }) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/attach-07.out b/test/out/math/attach-07.out
deleted file mode 100644
--- a/test/out/math/attach-07.out
+++ /dev/null
@@ -1,426 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/attach-07.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/attach-07.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/attach-07.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/math/attach-07.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "size") (Literal (Numeric 8.0 Pt)) ])
-, ParBreak
-, Comment
-, Equation
-    True
-    [ MAttach (Just (Text "1")) Nothing (Text "x")
-    , MAttach (Just (Text "1")) Nothing (Text "p")
-    , MAttach
-        (Just (Text "1"))
-        Nothing
-        (Code
-           "test/typ/math/attach-07.typ"
-           ( line 5 , column 11 )
-           (FuncCall (Ident (Identifier "frak")) [ BlockArg [ Text "p" ] ]))
-    , MAttach (Just (Text "1")) Nothing (Text "2")
-    , MAttach
-        (Just (Text "1"))
-        Nothing
-        (Code
-           "test/typ/math/attach-07.typ"
-           ( line 5 , column 25 )
-           (Ident (Identifier "dot")))
-    , MAttach
-        (Just (Text "1"))
-        Nothing
-        (Code
-           "test/typ/math/attach-07.typ"
-           ( line 5 , column 31 )
-           (Ident (Identifier "lg")))
-    , MAttach (Just (Text "1")) Nothing (Text "!")
-    , MAttach (Just (Text "1")) Nothing (Text "\\")
-    , MAttach (Just (Text "1")) Nothing (Text "]")
-    , MAttach (Just (Text "1")) Nothing (Text " ip")
-    , MAttach
-        (Just (Text "1"))
-        Nothing
-        (Code
-           "test/typ/math/attach-07.typ"
-           ( line 5 , column 56 )
-           (FuncCall (Ident (Identifier "op")) [ BlockArg [ Text "iq" ] ]))
-    , HardBreak
-    , MAttach Nothing (Just (Text "1")) (Text "x")
-    , MAttach Nothing (Just (Text "1")) (Text "b")
-    , MAttach
-        Nothing
-        (Just (Text "1"))
-        (Code
-           "test/typ/math/attach-07.typ"
-           ( line 6 , column 11 )
-           (FuncCall (Ident (Identifier "frak")) [ BlockArg [ Text "b" ] ]))
-    , MAttach Nothing (Just (Text "1")) (Text "2")
-    , MAttach
-        Nothing
-        (Just (Text "1"))
-        (Code
-           "test/typ/math/attach-07.typ"
-           ( line 6 , column 25 )
-           (Ident (Identifier "dot")))
-    , MAttach
-        Nothing
-        (Just (Text "1"))
-        (Code
-           "test/typ/math/attach-07.typ"
-           ( line 6 , column 31 )
-           (Ident (Identifier "lg")))
-    , MAttach Nothing (Just (Text "1")) (Text "!")
-    , MAttach Nothing (Just (Text "1")) (Text "\\")
-    , MAttach Nothing (Just (Text "1")) (Text "]")
-    , MAttach Nothing (Just (Text "1")) (Text " ib")
-    , MAttach
-        Nothing
-        (Just (Text "1"))
-        (Code
-           "test/typ/math/attach-07.typ"
-           ( line 6 , column 56 )
-           (FuncCall (Ident (Identifier "op")) [ BlockArg [ Text "id" ] ]))
-    , HardBreak
-    , MAttach (Just (Text "1")) Nothing (Text "x")
-    , MAttach (Just (Text "1")) Nothing (Text "y")
-    , MAttach (Just (Text "1")) Nothing (Text " _")
-    , MAttach Nothing (Just (Text "1")) (Text "x")
-    , MAttach Nothing (Just (Text "1")) (Text "l")
-    , MAttach Nothing (Just (Text "1")) (Text " `")
-    , Code
-        "test/typ/math/attach-07.typ"
-        ( line 7 , column 31 )
-        (FuncCall
-           (Ident (Identifier "attach"))
-           [ BlockArg [ Text "I" ]
-           , KeyValArg (Identifier "tl") (Block (Content [ Text "1" ]))
-           , KeyValArg (Identifier "bl") (Block (Content [ Text "1" ]))
-           , KeyValArg (Identifier "tr") (Block (Content [ Text "1" ]))
-           , KeyValArg (Identifier "br") (Block (Content [ Text "1" ]))
-           ])
-    , MAttach
-        (Just (Text "1"))
-        (Just (Text "1"))
-        (Code
-           "test/typ/math/attach-07.typ"
-           ( line 8 , column 3 )
-           (FuncCall
-              (Ident (Identifier "scripts"))
-              [ BlockArg
-                  [ Code
-                      "test/typ/math/attach-07.typ"
-                      ( line 8 , column 11 )
-                      (Ident (Identifier "sum"))
-                  ]
-              ]))
-    , MAttach
-        (Just (Text "1"))
-        (Just (Text "1"))
-        (Code
-           "test/typ/math/attach-07.typ"
-           ( line 8 , column 20 )
-           (Ident (Identifier "integral")))
-    , Text "|"
-    , MFrac (Text "1") (Text "2")
-    , MAttach (Just (Text "1")) (Just (Text "1")) (Text "|")
-    , HardBreak
-    , MAttach (Just (Text "1")) (Just (Text "1")) (Text "x")
-    , Text ","
-    , Text " ("
-    , Text "b"
-    , Text "y"
-    , MAttach (Just (Text "1")) (Just (Text "1")) (Text ")")
-    , Code
-        "test/typ/math/attach-07.typ"
-        ( line 9 , column 24 )
-        (FieldAccess (Ident (Identifier "not")) (Ident (Identifier "eq")))
-    , MAttach
-        (Just (Text "1"))
-        (Just (Text "1"))
-        (MGroup (Just "(") (Just ")") [ Text "b" , Text "y" ])
-    , Text ","
-    , MAttach (Just (Text "1")) Nothing (Text " [\8747]")
-    , MAttach
-        (Just (Text "1"))
-        Nothing
-        (MGroup
-           (Just "[")
-           (Just "]")
-           [ Code
-               "test/typ/math/attach-07.typ"
-               ( line 9 , column 47 )
-               (Ident (Identifier "integral"))
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 math.equation(block: true, 
-                               body: { math.attach(b: text(body: [1], 
-                                                           size: 8.0pt), 
-                                                   base: text(body: [x], 
-                                                              size: 8.0pt), 
-                                                   t: none), 
-                                       math.attach(b: text(body: [1], 
-                                                           size: 8.0pt), 
-                                                   base: text(body: [p], 
-                                                              size: 8.0pt), 
-                                                   t: none), 
-                                       math.attach(b: text(body: [1], 
-                                                           size: 8.0pt), 
-                                                   base: math.frak(body: text(body: [p], 
-                                                                              size: 8.0pt)), 
-                                                   t: none), 
-                                       math.attach(b: text(body: [1], 
-                                                           size: 8.0pt), 
-                                                   base: text(body: [2], 
-                                                              size: 8.0pt), 
-                                                   t: none), 
-                                       math.attach(b: text(body: [1], 
-                                                           size: 8.0pt), 
-                                                   base: text(body: [⋅], 
-                                                              size: 8.0pt), 
-                                                   t: none), 
-                                       math.attach(b: text(body: [1], 
-                                                           size: 8.0pt), 
-                                                   base: math.op(limits: false, 
-                                                                 text: "lg"), 
-                                                   t: none), 
-                                       math.attach(b: text(body: [1], 
-                                                           size: 8.0pt), 
-                                                   base: text(body: [!], 
-                                                              size: 8.0pt), 
-                                                   t: none), 
-                                       math.attach(b: text(body: [1], 
-                                                           size: 8.0pt), 
-                                                   base: text(body: [\], 
-                                                              size: 8.0pt), 
-                                                   t: none), 
-                                       math.attach(b: text(body: [1], 
-                                                           size: 8.0pt), 
-                                                   base: text(body: []], 
-                                                              size: 8.0pt), 
-                                                   t: none), 
-                                       math.attach(b: text(body: [1], 
-                                                           size: 8.0pt), 
-                                                   base: text(body: [ ip], 
-                                                              size: 8.0pt), 
-                                                   t: none), 
-                                       math.attach(b: text(body: [1], 
-                                                           size: 8.0pt), 
-                                                   base: math.op(text: text(body: [iq], 
-                                                                            size: 8.0pt)), 
-                                                   t: none), 
-                                       linebreak(), 
-                                       math.attach(b: none, 
-                                                   base: text(body: [x], 
-                                                              size: 8.0pt), 
-                                                   t: text(body: [1], 
-                                                           size: 8.0pt)), 
-                                       math.attach(b: none, 
-                                                   base: text(body: [b], 
-                                                              size: 8.0pt), 
-                                                   t: text(body: [1], 
-                                                           size: 8.0pt)), 
-                                       math.attach(b: none, 
-                                                   base: math.frak(body: text(body: [b], 
-                                                                              size: 8.0pt)), 
-                                                   t: text(body: [1], 
-                                                           size: 8.0pt)), 
-                                       math.attach(b: none, 
-                                                   base: text(body: [2], 
-                                                              size: 8.0pt), 
-                                                   t: text(body: [1], 
-                                                           size: 8.0pt)), 
-                                       math.attach(b: none, 
-                                                   base: text(body: [⋅], 
-                                                              size: 8.0pt), 
-                                                   t: text(body: [1], 
-                                                           size: 8.0pt)), 
-                                       math.attach(b: none, 
-                                                   base: math.op(limits: false, 
-                                                                 text: "lg"), 
-                                                   t: text(body: [1], 
-                                                           size: 8.0pt)), 
-                                       math.attach(b: none, 
-                                                   base: text(body: [!], 
-                                                              size: 8.0pt), 
-                                                   t: text(body: [1], 
-                                                           size: 8.0pt)), 
-                                       math.attach(b: none, 
-                                                   base: text(body: [\], 
-                                                              size: 8.0pt), 
-                                                   t: text(body: [1], 
-                                                           size: 8.0pt)), 
-                                       math.attach(b: none, 
-                                                   base: text(body: []], 
-                                                              size: 8.0pt), 
-                                                   t: text(body: [1], 
-                                                           size: 8.0pt)), 
-                                       math.attach(b: none, 
-                                                   base: text(body: [ ib], 
-                                                              size: 8.0pt), 
-                                                   t: text(body: [1], 
-                                                           size: 8.0pt)), 
-                                       math.attach(b: none, 
-                                                   base: math.op(text: text(body: [id], 
-                                                                            size: 8.0pt)), 
-                                                   t: text(body: [1], 
-                                                           size: 8.0pt)), 
-                                       linebreak(), 
-                                       math.attach(b: text(body: [1], 
-                                                           size: 8.0pt), 
-                                                   base: text(body: [x], 
-                                                              size: 8.0pt), 
-                                                   t: none), 
-                                       math.attach(b: text(body: [1], 
-                                                           size: 8.0pt), 
-                                                   base: text(body: [y], 
-                                                              size: 8.0pt), 
-                                                   t: none), 
-                                       math.attach(b: text(body: [1], 
-                                                           size: 8.0pt), 
-                                                   base: text(body: [ _], 
-                                                              size: 8.0pt), 
-                                                   t: none), 
-                                       math.attach(b: none, 
-                                                   base: text(body: [x], 
-                                                              size: 8.0pt), 
-                                                   t: text(body: [1], 
-                                                           size: 8.0pt)), 
-                                       math.attach(b: none, 
-                                                   base: text(body: [l], 
-                                                              size: 8.0pt), 
-                                                   t: text(body: [1], 
-                                                           size: 8.0pt)), 
-                                       math.attach(b: none, 
-                                                   base: text(body: [ `], 
-                                                              size: 8.0pt), 
-                                                   t: text(body: [1], 
-                                                           size: 8.0pt)), 
-                                       math.attach(base: text(body: [I], 
-                                                              size: 8.0pt), 
-                                                   bl: text(body: [1], 
-                                                            size: 8.0pt), 
-                                                   br: text(body: [1], 
-                                                            size: 8.0pt), 
-                                                   tl: text(body: [1], 
-                                                            size: 8.0pt), 
-                                                   tr: text(body: [1], 
-                                                            size: 8.0pt)), 
-                                       math.attach(b: text(body: [1], 
-                                                           size: 8.0pt), 
-                                                   base: math.scripts(body: text(body: [∑], 
-                                                                                 size: 8.0pt)), 
-                                                   t: text(body: [1], 
-                                                           size: 8.0pt)), 
-                                       math.attach(b: text(body: [1], 
-                                                           size: 8.0pt), 
-                                                   base: text(body: [∫], 
-                                                              size: 8.0pt), 
-                                                   t: text(body: [1], 
-                                                           size: 8.0pt)), 
-                                       text(body: [|], 
-                                            size: 8.0pt), 
-                                       math.frac(denom: text(body: [2], 
-                                                             size: 8.0pt), 
-                                                 num: text(body: [1], 
-                                                           size: 8.0pt)), 
-                                       math.attach(b: text(body: [1], 
-                                                           size: 8.0pt), 
-                                                   base: text(body: [|], 
-                                                              size: 8.0pt), 
-                                                   t: text(body: [1], 
-                                                           size: 8.0pt)), 
-                                       linebreak(), 
-                                       math.attach(b: text(body: [1], 
-                                                           size: 8.0pt), 
-                                                   base: text(body: [x], 
-                                                              size: 8.0pt), 
-                                                   t: text(body: [1], 
-                                                           size: 8.0pt)), 
-                                       text(body: [,], 
-                                            size: 8.0pt), 
-                                       text(body: [ (], 
-                                            size: 8.0pt), 
-                                       text(body: [b], 
-                                            size: 8.0pt), 
-                                       text(body: [y], 
-                                            size: 8.0pt), 
-                                       math.attach(b: text(body: [1], 
-                                                           size: 8.0pt), 
-                                                   base: text(body: [)], 
-                                                              size: 8.0pt), 
-                                                   t: text(body: [1], 
-                                                           size: 8.0pt)), 
-                                       text(body: [≠], 
-                                            size: 8.0pt), 
-                                       math.attach(b: text(body: [1], 
-                                                           size: 8.0pt), 
-                                                   base: math.lr(body: ({ [(], 
-                                                                          text(body: [b], 
-                                                                               size: 8.0pt), 
-                                                                          text(body: [y], 
-                                                                               size: 8.0pt), 
-                                                                          [)] })), 
-                                                   t: text(body: [1], 
-                                                           size: 8.0pt)), 
-                                       text(body: [,], 
-                                            size: 8.0pt), 
-                                       math.attach(b: text(body: [1], 
-                                                           size: 8.0pt), 
-                                                   base: text(body: [ [∫]], 
-                                                              size: 8.0pt), 
-                                                   t: none), 
-                                       math.attach(b: text(body: [1], 
-                                                           size: 8.0pt), 
-                                                   base: math.lr(body: ({ [[], 
-                                                                          text(body: [∫], 
-                                                                               size: 8.0pt), 
-                                                                          []] })), 
-                                                   t: none) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/attach-08.out b/test/out/math/attach-08.out
deleted file mode 100644
--- a/test/out/math/attach-08.out
+++ /dev/null
@@ -1,120 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/attach-08.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/attach-08.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/attach-08.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ MAttach
-        (Just
-           (MGroup
-              Nothing
-              Nothing
-              [ Text "n"
-              , Code
-                  "test/typ/math/attach-08.typ"
-                  ( line 3 , column 9 )
-                  (FieldAccess (Ident (Identifier "r")) (Ident (Identifier "arrow")))
-              , Code
-                  "test/typ/math/attach-08.typ"
-                  ( line 3 , column 11 )
-                  (Ident (Identifier "oo"))
-              , HardBreak
-              , Text "n"
-              , Text " grows"
-              ]))
-        Nothing
-        (Code
-           "test/typ/math/attach-08.typ"
-           ( line 3 , column 3 )
-           (Ident (Identifier "lim")))
-    , MAttach
-        (Just
-           (MGroup
-              Nothing
-              Nothing
-              [ Text "k"
-              , Text "="
-              , Text "0"
-              , HardBreak
-              , Text "k"
-              , Code
-                  "test/typ/math/attach-08.typ"
-                  ( line 3 , column 40 )
-                  (Ident (Identifier "in"))
-              , Code
-                  "test/typ/math/attach-08.typ"
-                  ( line 3 , column 43 )
-                  (Ident (Identifier "NN"))
-              ]))
-        (Just (Text "n"))
-        (Code
-           "test/typ/math/attach-08.typ"
-           ( line 3 , column 27 )
-           (Ident (Identifier "sum")))
-    , Text "k"
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { math.attach(b: { text(body: [n]), 
-                                                        text(body: [→]), 
-                                                        text(body: [∞]), 
-                                                        linebreak(), 
-                                                        text(body: [n]), 
-                                                        text(body: [ grows]) }, 
-                                                   base: math.op(limits: true, 
-                                                                 text: "lim"), 
-                                                   t: none), 
-                                       math.attach(b: { text(body: [k]), 
-                                                        text(body: [=]), 
-                                                        text(body: [0]), 
-                                                        linebreak(), 
-                                                        text(body: [k]), 
-                                                        text(body: [∈]), 
-                                                        text(body: [ℕ]) }, 
-                                                   base: text(body: [∑]), 
-                                                   t: text(body: [n])), 
-                                       text(body: [k]) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/attach-09.out b/test/out/math/attach-09.out
deleted file mode 100644
--- a/test/out/math/attach-09.out
+++ /dev/null
@@ -1,154 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/attach-09.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/attach-09.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/attach-09.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ MAttach
-        (Just (Text "1"))
-        (Just (Text "2"))
-        (Code
-           "test/typ/math/attach-09.typ"
-           ( line 3 , column 3 )
-           (FuncCall (Ident (Identifier "limits")) [ BlockArg [ Text "A" ] ]))
-    , Code
-        "test/typ/math/attach-09.typ"
-        ( line 3 , column 17 )
-        (FieldAccess (Ident (Identifier "not")) (Ident (Identifier "eq")))
-    , MAttach (Just (Text "1")) (Just (Text "2")) (Text "A")
-    ]
-, SoftBreak
-, Equation
-    True
-    [ MAttach
-        (Just (Text "1"))
-        (Just (Text "2"))
-        (Code
-           "test/typ/math/attach-09.typ"
-           ( line 4 , column 3 )
-           (FuncCall
-              (Ident (Identifier "scripts"))
-              [ BlockArg
-                  [ Code
-                      "test/typ/math/attach-09.typ"
-                      ( line 4 , column 11 )
-                      (Ident (Identifier "sum"))
-                  ]
-              ]))
-    , Code
-        "test/typ/math/attach-09.typ"
-        ( line 4 , column 20 )
-        (FieldAccess (Ident (Identifier "not")) (Ident (Identifier "eq")))
-    , MAttach
-        (Just (Text "1"))
-        (Just (Text "2"))
-        (Code
-           "test/typ/math/attach-09.typ"
-           ( line 4 , column 23 )
-           (Ident (Identifier "sum")))
-    ]
-, SoftBreak
-, Equation
-    True
-    [ MAttach
-        (Just (Text "a"))
-        (Just (Text "b"))
-        (Code
-           "test/typ/math/attach-09.typ"
-           ( line 5 , column 3 )
-           (FuncCall
-              (Ident (Identifier "limits"))
-              [ BlockArg
-                  [ Code
-                      "test/typ/math/attach-09.typ"
-                      ( line 5 , column 10 )
-                      (Ident (Identifier "integral"))
-                  ]
-              ]))
-    , Code
-        "test/typ/math/attach-09.typ"
-        ( line 5 , column 24 )
-        (FieldAccess (Ident (Identifier "not")) (Ident (Identifier "eq")))
-    , MAttach
-        (Just (Text "a"))
-        (Just (Text "b"))
-        (Code
-           "test/typ/math/attach-09.typ"
-           ( line 5 , column 27 )
-           (Ident (Identifier "integral")))
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { math.attach(b: text(body: [1]), 
-                                                   base: math.limits(body: text(body: [A])), 
-                                                   t: text(body: [2])), 
-                                       text(body: [≠]), 
-                                       math.attach(b: text(body: [1]), 
-                                                   base: text(body: [A]), 
-                                                   t: text(body: [2])) }, 
-                               numbering: none), 
-                 text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { math.attach(b: text(body: [1]), 
-                                                   base: math.scripts(body: text(body: [∑])), 
-                                                   t: text(body: [2])), 
-                                       text(body: [≠]), 
-                                       math.attach(b: text(body: [1]), 
-                                                   base: text(body: [∑]), 
-                                                   t: text(body: [2])) }, 
-                               numbering: none), 
-                 text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { math.attach(b: text(body: [a]), 
-                                                   base: math.limits(body: text(body: [∫])), 
-                                                   t: text(body: [b])), 
-                                       text(body: [≠]), 
-                                       math.attach(b: text(body: [a]), 
-                                                   base: text(body: [∫]), 
-                                                   t: text(body: [b])) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/cancel-00.out b/test/out/math/cancel-00.out
deleted file mode 100644
--- a/test/out/math/cancel-00.out
+++ /dev/null
@@ -1,141 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/cancel-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/cancel-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/cancel-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    False
-    [ Text "a"
-    , Text "+"
-    , Text "5"
-    , Text "+"
-    , Code
-        "test/typ/math/cancel-00.typ"
-        ( line 3 , column 10 )
-        (FuncCall (Ident (Identifier "cancel")) [ BlockArg [ Text "x" ] ])
-    , Text "+"
-    , Text "b"
-    , Code
-        "test/typ/math/cancel-00.typ"
-        ( line 3 , column 24 )
-        (Ident (Identifier "minus"))
-    , Code
-        "test/typ/math/cancel-00.typ"
-        ( line 3 , column 26 )
-        (FuncCall (Ident (Identifier "cancel")) [ BlockArg [ Text "x" ] ])
-    ]
-, ParBreak
-, Equation
-    False
-    [ Text "c"
-    , Text "+"
-    , MFrac
-        (MGroup
-           (Just "(")
-           (Just ")")
-           [ Text "a"
-           , Code
-               "test/typ/math/cancel-00.typ"
-               ( line 5 , column 9 )
-               (FieldAccess (Ident (Identifier "c")) (Ident (Identifier "dot")))
-           , Code
-               "test/typ/math/cancel-00.typ"
-               ( line 5 , column 15 )
-               (FuncCall
-                  (Ident (Identifier "cancel"))
-                  [ BlockArg
-                      [ Text "b"
-                      , Code
-                          "test/typ/math/cancel-00.typ"
-                          ( line 5 , column 24 )
-                          (FieldAccess (Ident (Identifier "c")) (Ident (Identifier "dot")))
-                      , Text "c"
-                      ]
-                  ])
-           ])
-        (MGroup
-           Nothing
-           Nothing
-           [ Code
-               "test/typ/math/cancel-00.typ"
-               ( line 5 , column 35 )
-               (FuncCall
-                  (Ident (Identifier "cancel"))
-                  [ BlockArg
-                      [ Text "b"
-                      , Code
-                          "test/typ/math/cancel-00.typ"
-                          ( line 5 , column 44 )
-                          (FieldAccess (Ident (Identifier "c")) (Ident (Identifier "dot")))
-                      , Text "c"
-                      ]
-                  ])
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: false, 
-                               body: { text(body: [a]), 
-                                       text(body: [+]), 
-                                       text(body: [5]), 
-                                       text(body: [+]), 
-                                       math.cancel(body: text(body: [x])), 
-                                       text(body: [+]), 
-                                       text(body: [b]), 
-                                       text(body: [−]), 
-                                       math.cancel(body: text(body: [x])) }, 
-                               numbering: none), 
-                 parbreak(), 
-                 math.equation(block: false, 
-                               body: { text(body: [c]), 
-                                       text(body: [+]), 
-                                       math.frac(denom: math.cancel(body: { text(body: [b]), 
-                                                                            text(body: [·]), 
-                                                                            text(body: [c]) }), 
-                                                 num: { text(body: [a]), 
-                                                        text(body: [·]), 
-                                                        math.cancel(body: { text(body: [b]), 
-                                                                            text(body: [·]), 
-                                                                            text(body: [c]) }) }) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/cancel-01.out b/test/out/math/cancel-01.out
deleted file mode 100644
--- a/test/out/math/cancel-01.out
+++ /dev/null
@@ -1,182 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/cancel-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/cancel-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/cancel-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/math/cancel-01.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal Auto) ])
-, SoftBreak
-, Equation
-    True
-    [ Text "a"
-    , Text "+"
-    , Text "b"
-    , Text "+"
-    , Code
-        "test/typ/math/cancel-01.typ"
-        ( line 4 , column 11 )
-        (FuncCall
-           (Ident (Identifier "cancel"))
-           [ BlockArg [ Text "b" , Text "+" , Text "c" ] ])
-    , Code
-        "test/typ/math/cancel-01.typ"
-        ( line 4 , column 25 )
-        (Ident (Identifier "minus"))
-    , Code
-        "test/typ/math/cancel-01.typ"
-        ( line 4 , column 27 )
-        (FuncCall (Ident (Identifier "cancel")) [ BlockArg [ Text "b" ] ])
-    , Code
-        "test/typ/math/cancel-01.typ"
-        ( line 4 , column 37 )
-        (Ident (Identifier "minus"))
-    , Code
-        "test/typ/math/cancel-01.typ"
-        ( line 4 , column 39 )
-        (FuncCall (Ident (Identifier "cancel")) [ BlockArg [ Text "c" ] ])
-    , Code
-        "test/typ/math/cancel-01.typ"
-        ( line 4 , column 49 )
-        (Ident (Identifier "minus"))
-    , Text "5"
-    , Text "+"
-    , Code
-        "test/typ/math/cancel-01.typ"
-        ( line 4 , column 55 )
-        (FuncCall (Ident (Identifier "cancel")) [ BlockArg [ Text "6" ] ])
-    , Code
-        "test/typ/math/cancel-01.typ"
-        ( line 4 , column 65 )
-        (Ident (Identifier "minus"))
-    , Code
-        "test/typ/math/cancel-01.typ"
-        ( line 4 , column 67 )
-        (FuncCall (Ident (Identifier "cancel")) [ BlockArg [ Text "6" ] ])
-    ]
-, SoftBreak
-, Equation
-    True
-    [ Text "e"
-    , Text "+"
-    , MFrac
-        (MGroup
-           (Just "(")
-           (Just ")")
-           [ Text "a"
-           , Code
-               "test/typ/math/cancel-01.typ"
-               ( line 5 , column 10 )
-               (FieldAccess (Ident (Identifier "c")) (Ident (Identifier "dot")))
-           , Code
-               "test/typ/math/cancel-01.typ"
-               ( line 5 , column 16 )
-               (FuncCall
-                  (Ident (Identifier "cancel"))
-                  [ BlockArg
-                      [ MGroup
-                          (Just "(")
-                          (Just ")")
-                          [ Text "b" , Text "+" , Text "c" , Text "+" , Text "d" ]
-                      ]
-                  ])
-           ])
-        (MGroup
-           Nothing
-           Nothing
-           [ Code
-               "test/typ/math/cancel-01.typ"
-               ( line 5 , column 38 )
-               (FuncCall
-                  (Ident (Identifier "cancel"))
-                  [ BlockArg [ Text "b" , Text "+" , Text "c" , Text "+" , Text "d" ]
-                  ])
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [a]), 
-                                       text(body: [+]), 
-                                       text(body: [b]), 
-                                       text(body: [+]), 
-                                       math.cancel(body: { text(body: [b]), 
-                                                           text(body: [+]), 
-                                                           text(body: [c]) }), 
-                                       text(body: [−]), 
-                                       math.cancel(body: text(body: [b])), 
-                                       text(body: [−]), 
-                                       math.cancel(body: text(body: [c])), 
-                                       text(body: [−]), 
-                                       text(body: [5]), 
-                                       text(body: [+]), 
-                                       math.cancel(body: text(body: [6])), 
-                                       text(body: [−]), 
-                                       math.cancel(body: text(body: [6])) }, 
-                               numbering: none), 
-                 text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [e]), 
-                                       text(body: [+]), 
-                                       math.frac(denom: math.cancel(body: { text(body: [b]), 
-                                                                            text(body: [+]), 
-                                                                            text(body: [c]), 
-                                                                            text(body: [+]), 
-                                                                            text(body: [d]) }), 
-                                                 num: { text(body: [a]), 
-                                                        text(body: [·]), 
-                                                        math.cancel(body: math.lr(body: ({ [(], 
-                                                                                           text(body: [b]), 
-                                                                                           text(body: [+]), 
-                                                                                           text(body: [c]), 
-                                                                                           text(body: [+]), 
-                                                                                           text(body: [d]), 
-                                                                                           [)] }))) }) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/cancel-02.out b/test/out/math/cancel-02.out
deleted file mode 100644
--- a/test/out/math/cancel-02.out
+++ /dev/null
@@ -1,125 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/cancel-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/cancel-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/cancel-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    False
-    [ Text "a"
-    , Text "+"
-    , Code
-        "test/typ/math/cancel-02.typ"
-        ( line 3 , column 6 )
-        (FuncCall
-           (Ident (Identifier "cancel"))
-           [ BlockArg [ Text "x" ]
-           , KeyValArg (Identifier "inverted") (Literal (Boolean True))
-           ])
-    , Code
-        "test/typ/math/cancel-02.typ"
-        ( line 3 , column 33 )
-        (Ident (Identifier "minus"))
-    , Code
-        "test/typ/math/cancel-02.typ"
-        ( line 3 , column 35 )
-        (FuncCall
-           (Ident (Identifier "cancel"))
-           [ BlockArg [ Text "x" ]
-           , KeyValArg (Identifier "inverted") (Literal (Boolean True))
-           ])
-    , Text "+"
-    , Text "10"
-    , Text "+"
-    , Code
-        "test/typ/math/cancel-02.typ"
-        ( line 3 , column 69 )
-        (FuncCall (Ident (Identifier "cancel")) [ BlockArg [ Text "y" ] ])
-    , Code
-        "test/typ/math/cancel-02.typ"
-        ( line 3 , column 79 )
-        (Ident (Identifier "minus"))
-    , Code
-        "test/typ/math/cancel-02.typ"
-        ( line 3 , column 81 )
-        (FuncCall (Ident (Identifier "cancel")) [ BlockArg [ Text "y" ] ])
-    ]
-, SoftBreak
-, Equation
-    True
-    [ Text "x"
-    , Text "+"
-    , Code
-        "test/typ/math/cancel-02.typ"
-        ( line 4 , column 7 )
-        (FuncCall
-           (Ident (Identifier "cancel"))
-           [ BlockArg [ Text "abcdefg" ]
-           , KeyValArg (Identifier "inverted") (Literal (Boolean True))
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: false, 
-                               body: { text(body: [a]), 
-                                       text(body: [+]), 
-                                       math.cancel(body: text(body: [x]), 
-                                                   inverted: true), 
-                                       text(body: [−]), 
-                                       math.cancel(body: text(body: [x]), 
-                                                   inverted: true), 
-                                       text(body: [+]), 
-                                       text(body: [10]), 
-                                       text(body: [+]), 
-                                       math.cancel(body: text(body: [y])), 
-                                       text(body: [−]), 
-                                       math.cancel(body: text(body: [y])) }, 
-                               numbering: none), 
-                 text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [x]), 
-                                       text(body: [+]), 
-                                       math.cancel(body: text(body: [abcdefg]), 
-                                                   inverted: true) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/cancel-03.out b/test/out/math/cancel-03.out
deleted file mode 100644
--- a/test/out/math/cancel-03.out
+++ /dev/null
@@ -1,107 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/cancel-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/cancel-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/cancel-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    False
-    [ Text "a"
-    , Text "+"
-    , Code
-        "test/typ/math/cancel-03.typ"
-        ( line 3 , column 6 )
-        (FuncCall
-           (Ident (Identifier "cancel"))
-           [ BlockArg [ Text "b" , Text "+" , Text "c" , Text "+" , Text "d" ]
-           , KeyValArg (Identifier "cross") (Literal (Boolean True))
-           , KeyValArg (Identifier "stroke") (Ident (Identifier "red"))
-           ])
-    , Text "+"
-    , Text "e"
-    ]
-, SoftBreak
-, Equation
-    True
-    [ Text "a"
-    , Text "+"
-    , Code
-        "test/typ/math/cancel-03.typ"
-        ( line 4 , column 7 )
-        (FuncCall
-           (Ident (Identifier "cancel"))
-           [ BlockArg [ Text "b" , Text "+" , Text "c" , Text "+" , Text "d" ]
-           , KeyValArg (Identifier "cross") (Literal (Boolean True))
-           ])
-    , Text "+"
-    , Text "e"
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: false, 
-                               body: { text(body: [a]), 
-                                       text(body: [+]), 
-                                       math.cancel(body: { text(body: [b]), 
-                                                           text(body: [+]), 
-                                                           text(body: [c]), 
-                                                           text(body: [+]), 
-                                                           text(body: [d]) }, 
-                                                   cross: true, 
-                                                   stroke: rgb(100%,25%,21%,100%)), 
-                                       text(body: [+]), 
-                                       text(body: [e]) }, 
-                               numbering: none), 
-                 text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [a]), 
-                                       text(body: [+]), 
-                                       math.cancel(body: { text(body: [b]), 
-                                                           text(body: [+]), 
-                                                           text(body: [c]), 
-                                                           text(body: [+]), 
-                                                           text(body: [d]) }, 
-                                                   cross: true), 
-                                       text(body: [+]), 
-                                       text(body: [e]) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/cancel-04.out b/test/out/math/cancel-04.out
deleted file mode 100644
--- a/test/out/math/cancel-04.out
+++ /dev/null
@@ -1,148 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/cancel-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/cancel-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/cancel-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/math/cancel-04.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 200.0 Pt))
-       , KeyValArg (Identifier "height") (Literal Auto)
-       ])
-, SoftBreak
-, Equation
-    False
-    [ Text "a"
-    , Text "+"
-    , Code
-        "test/typ/math/cancel-04.typ"
-        ( line 4 , column 6 )
-        (FuncCall
-           (Ident (Identifier "cancel"))
-           [ BlockArg [ Text "x" ]
-           , KeyValArg (Identifier "length") (Literal (Numeric 200.0 Percent))
-           ])
-    , Code
-        "test/typ/math/cancel-04.typ"
-        ( line 4 , column 31 )
-        (Ident (Identifier "minus"))
-    , Code
-        "test/typ/math/cancel-04.typ"
-        ( line 4 , column 33 )
-        (FuncCall
-           (Ident (Identifier "cancel"))
-           [ BlockArg [ Text "x" ]
-           , KeyValArg (Identifier "length") (Literal (Numeric 50.0 Percent))
-           , KeyValArg
-               (Identifier "stroke")
-               (Block
-                  (CodeBlock
-                     [ Plus (Ident (Identifier "red")) (Literal (Numeric 1.1 Pt)) ]))
-           ])
-    ]
-, SoftBreak
-, Equation
-    True
-    [ Text "b"
-    , Text "+"
-    , Code
-        "test/typ/math/cancel-04.typ"
-        ( line 5 , column 7 )
-        (FuncCall
-           (Ident (Identifier "cancel"))
-           [ BlockArg [ Text "x" ]
-           , KeyValArg (Identifier "length") (Literal (Numeric 150.0 Percent))
-           ])
-    , Code
-        "test/typ/math/cancel-04.typ"
-        ( line 5 , column 32 )
-        (Ident (Identifier "minus"))
-    , Code
-        "test/typ/math/cancel-04.typ"
-        ( line 5 , column 34 )
-        (FuncCall
-           (Ident (Identifier "cancel"))
-           [ BlockArg [ Text "a" , Text "+" , Text "b" , Text "+" , Text "c" ]
-           , KeyValArg (Identifier "length") (Literal (Numeric 50.0 Percent))
-           , KeyValArg
-               (Identifier "stroke")
-               (Block
-                  (CodeBlock
-                     [ Plus (Ident (Identifier "blue")) (Literal (Numeric 1.2 Pt)) ]))
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 math.equation(block: false, 
-                               body: { text(body: [a]), 
-                                       text(body: [+]), 
-                                       math.cancel(body: text(body: [x]), 
-                                                   length: 200%), 
-                                       text(body: [−]), 
-                                       math.cancel(body: text(body: [x]), 
-                                                   length: 50%, 
-                                                   stroke: (thickness: 1.1pt,
-                                                            color: rgb(100%,25%,21%,100%))) }, 
-                               numbering: none), 
-                 text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [b]), 
-                                       text(body: [+]), 
-                                       math.cancel(body: text(body: [x]), 
-                                                   length: 150%), 
-                                       text(body: [−]), 
-                                       math.cancel(body: { text(body: [a]), 
-                                                           text(body: [+]), 
-                                                           text(body: [b]), 
-                                                           text(body: [+]), 
-                                                           text(body: [c]) }, 
-                                                   length: 50%, 
-                                                   stroke: (thickness: 1.2pt,
-                                                            color: rgb(0%,45%,85%,100%))) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/cancel-05.out b/test/out/math/cancel-05.out
deleted file mode 100644
--- a/test/out/math/cancel-05.out
+++ /dev/null
@@ -1,135 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/cancel-05.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/cancel-05.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/cancel-05.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    False
-    [ Text "x"
-    , Text "+"
-    , Code
-        "test/typ/math/cancel-05.typ"
-        ( line 3 , column 6 )
-        (FuncCall
-           (Ident (Identifier "cancel"))
-           [ BlockArg [ Text "y" ]
-           , KeyValArg (Identifier "rotation") (Literal (Numeric 90.0 Deg))
-           ])
-    , Code
-        "test/typ/math/cancel-05.typ"
-        ( line 3 , column 34 )
-        (Ident (Identifier "minus"))
-    , Code
-        "test/typ/math/cancel-05.typ"
-        ( line 3 , column 36 )
-        (FuncCall
-           (Ident (Identifier "cancel"))
-           [ BlockArg [ Text "z" ]
-           , KeyValArg (Identifier "rotation") (Literal (Numeric 135.0 Deg))
-           ])
-    ]
-, SoftBreak
-, Equation
-    True
-    [ Text "e"
-    , Text "+"
-    , Code
-        "test/typ/math/cancel-05.typ"
-        ( line 4 , column 7 )
-        (FuncCall
-           (Ident (Identifier "cancel"))
-           [ BlockArg
-               [ MFrac
-                   (MGroup (Just "(") (Just ")") [ Text "j" , Text "+" , Text "e" ])
-                   (MGroup Nothing Nothing [ Text "f" , Text "+" , Text "e" ])
-               ]
-           ])
-    , Code
-        "test/typ/math/cancel-05.typ"
-        ( line 4 , column 31 )
-        (Ident (Identifier "minus"))
-    , Code
-        "test/typ/math/cancel-05.typ"
-        ( line 4 , column 33 )
-        (FuncCall
-           (Ident (Identifier "cancel"))
-           [ BlockArg
-               [ MFrac
-                   (MGroup (Just "(") (Just ")") [ Text "j" , Text "+" , Text "e" ])
-                   (MGroup Nothing Nothing [ Text "f" , Text "+" , Text "e" ])
-               ]
-           , KeyValArg (Identifier "rotation") (Literal (Numeric 30.0 Deg))
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: false, 
-                               body: { text(body: [x]), 
-                                       text(body: [+]), 
-                                       math.cancel(body: text(body: [y]), 
-                                                   rotation: 90.0deg), 
-                                       text(body: [−]), 
-                                       math.cancel(body: text(body: [z]), 
-                                                   rotation: 135.0deg) }, 
-                               numbering: none), 
-                 text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [e]), 
-                                       text(body: [+]), 
-                                       math.cancel(body: math.frac(denom: { text(body: [f]), 
-                                                                            text(body: [+]), 
-                                                                            text(body: [e]) }, 
-                                                                   num: { text(body: [j]), 
-                                                                          text(body: [+]), 
-                                                                          text(body: [e]) })), 
-                                       text(body: [−]), 
-                                       math.cancel(body: math.frac(denom: { text(body: [f]), 
-                                                                            text(body: [+]), 
-                                                                            text(body: [e]) }, 
-                                                                   num: { text(body: [j]), 
-                                                                          text(body: [+]), 
-                                                                          text(body: [e]) }), 
-                                                   rotation: 30.0deg) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/cases-00.out b/test/out/math/cases-00.out
deleted file mode 100644
--- a/test/out/math/cases-00.out
+++ /dev/null
@@ -1,153 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/cases-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/cases-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/cases-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Equation
-    True
-    [ MGroup
-        Nothing
-        Nothing
-        [ Text "f"
-        , MGroup (Just "(") (Just ")") [ Text "x" , Text "," , Text "y" ]
-        ]
-    , Code
-        "test/typ/math/cases-00.typ"
-        ( line 2 , column 11 )
-        (FieldAccess
-           (Ident (Identifier "eq")) (Ident (Identifier "colon")))
-    , Code
-        "test/typ/math/cases-00.typ"
-        ( line 2 , column 14 )
-        (FuncCall
-           (Ident (Identifier "cases"))
-           [ BlockArg
-               [ Text "1"
-               , Code
-                   "test/typ/math/cases-00.typ"
-                   ( line 3 , column 5 )
-                   (Ident (Identifier "quad"))
-               , MAlignPoint
-               , Text "if "
-               , MFrac
-                   (MGroup
-                      (Just "(")
-                      (Just ")")
-                      [ Text "x"
-                      , Code
-                          "test/typ/math/cases-00.typ"
-                          ( line 3 , column 19 )
-                          (Ident (Identifier "dot"))
-                      , Text "y"
-                      ])
-                   (Text "2")
-               , Code
-                   "test/typ/math/cases-00.typ"
-                   ( line 3 , column 28 )
-                   (FieldAccess (Ident (Identifier "eq")) (Ident (Identifier "lt")))
-               , Text "0"
-               ]
-           , BlockArg
-               [ Text "2"
-               , MAlignPoint
-               , Text "if "
-               , Text "x"
-               , Code
-                   "test/typ/math/cases-00.typ"
-                   ( line 4 , column 13 )
-                   (Ident (Identifier "divides"))
-               , Text "2"
-               ]
-           , BlockArg
-               [ Text "3"
-               , MAlignPoint
-               , Text "if "
-               , Text "x"
-               , Code
-                   "test/typ/math/cases-00.typ"
-                   ( line 5 , column 13 )
-                   (Ident (Identifier "in"))
-               , Code
-                   "test/typ/math/cases-00.typ"
-                   ( line 5 , column 16 )
-                   (Ident (Identifier "NN"))
-               ]
-           , BlockArg [ Text "4" , MAlignPoint , Text "else" ]
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [f]), 
-                                       math.lr(body: ({ [(], 
-                                                        text(body: [x]), 
-                                                        text(body: [,]), 
-                                                        text(body: [y]), 
-                                                        [)] })), 
-                                       text(body: [≔]), 
-                                       math.cases(children: ({ text(body: [1]), 
-                                                               text(body: [ ]), 
-                                                               math.alignpoint(), 
-                                                               text(body: [if ]), 
-                                                               math.frac(denom: text(body: [2]), 
-                                                                         num: { text(body: [x]), 
-                                                                                text(body: [⋅]), 
-                                                                                text(body: [y]) }), 
-                                                               text(body: [≤]), 
-                                                               text(body: [0]) }, 
-                                                             { text(body: [2]), 
-                                                               math.alignpoint(), 
-                                                               text(body: [if ]), 
-                                                               text(body: [x]), 
-                                                               text(body: [∣]), 
-                                                               text(body: [2]) }, 
-                                                             { text(body: [3]), 
-                                                               math.alignpoint(), 
-                                                               text(body: [if ]), 
-                                                               text(body: [x]), 
-                                                               text(body: [∈]), 
-                                                               text(body: [ℕ]) }, 
-                                                             { text(body: [4]), 
-                                                               math.alignpoint(), 
-                                                               text(body: [else]) })) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/content-00.out b/test/out/math/content-00.out
deleted file mode 100644
--- a/test/out/math/content-00.out
+++ /dev/null
@@ -1,115 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/content-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/content-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/content-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/math/content-00.typ"
-    ( line 3 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "monkey")))
-       (FuncCall
-          (Ident (Identifier "move"))
-          [ KeyValArg (Identifier "dy") (Literal (Numeric 0.2 Em))
-          , NormalArg
-              (FuncCall
-                 (Ident (Identifier "image"))
-                 [ NormalArg (Literal (String "/assets/files/monkey.svg"))
-                 , KeyValArg (Identifier "height") (Literal (Numeric 1.0 Em))
-                 ])
-          ]))
-, SoftBreak
-, Equation
-    True
-    [ MAttach
-        (Just
-           (MGroup
-              Nothing
-              Nothing
-              [ Text "i"
-              , Text "="
-              , Code
-                  "test/typ/math/content-00.typ"
-                  ( line 4 , column 11 )
-                  (FieldAccess
-                     (Ident (Identifier "apple")) (Ident (Identifier "emoji")))
-              ]))
-        (Just
-           (Code
-              "test/typ/math/content-00.typ"
-              ( line 4 , column 25 )
-              (FieldAccess
-                 (Ident (Identifier "red"))
-                 (FieldAccess
-                    (Ident (Identifier "apple")) (Ident (Identifier "emoji"))))))
-        (Code
-           "test/typ/math/content-00.typ"
-           ( line 4 , column 3 )
-           (Ident (Identifier "sum")))
-    , Text "i"
-    , Text "+"
-    , MFrac
-        (Code
-           "test/typ/math/content-00.typ"
-           ( line 4 , column 45 )
-           (Ident (Identifier "monkey")))
-        (Text "2")
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { math.attach(b: { text(body: [i]), 
-                                                        text(body: [=]), 
-                                                        text(body: [🍏]) }, 
-                                                   base: text(body: [∑]), 
-                                                   t: text(body: [🍎])), 
-                                       text(body: [i]), 
-                                       text(body: [+]), 
-                                       math.frac(denom: text(body: [2]), 
-                                                 num: move(body: image(height: 1.0em, 
-                                                                       path: "/assets/files/monkey.svg"), 
-                                                           dy: 0.2em)) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/content-01.out b/test/out/math/content-01.out
deleted file mode 100644
--- a/test/out/math/content-01.out
+++ /dev/null
@@ -1,100 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/content-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/content-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/content-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Text "x"
-    , Code
-        "test/typ/math/content-01.typ"
-        ( line 3 , column 5 )
-        (FieldAccess
-           (Ident (Identifier "eq")) (Ident (Identifier "colon")))
-    , MFrac
-        (Code
-           "test/typ/math/content-01.typ"
-           ( line 3 , column 9 )
-           (FuncCall
-              (Ident (Identifier "table"))
-              [ KeyValArg (Identifier "columns") (Literal (Int 2))
-              , BlockArg [ Text "x" ]
-              , BlockArg [ Text "y" ]
-              ]))
-        (Code
-           "test/typ/math/content-01.typ"
-           ( line 3 , column 33 )
-           (FuncCall
-              (Ident (Identifier "mat"))
-              [ BlockArg [ Text "1" ]
-              , BlockArg [ Text "2" ]
-              , BlockArg [ Text "3" ]
-              ]))
-    , Text "="
-    , Code
-        "test/typ/math/content-01.typ"
-        ( line 4 , column 9 )
-        (FuncCall
-           (Ident (Identifier "table"))
-           [ BlockArg [ Text "A" ]
-           , BlockArg [ Text "B" ]
-           , BlockArg [ Text "C" ]
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [x]), 
-                                       text(body: [≔]), 
-                                       math.frac(denom: math.mat(rows: ((text(body: [1]), 
-                                                                         text(body: [2]), 
-                                                                         text(body: [3])))), 
-                                                 num: table(children: (text(body: [x]), 
-                                                                       text(body: [y])), 
-                                                            columns: 2)), 
-                                       text(body: [=]), 
-                                       table(children: (text(body: [A]), 
-                                                        text(body: [B]), 
-                                                        text(body: [C]))) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/content-02.out b/test/out/math/content-02.out
deleted file mode 100644
--- a/test/out/math/content-02.out
+++ /dev/null
@@ -1,61 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/content-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/content-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/content-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/math/content-02.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (FieldAccess
-          (Ident (Identifier "attach")) (Ident (Identifier "math")))
-       [ NormalArg (Block (Content [ Equation False [ Text "a" ] ]))
-       , KeyValArg (Identifier "t") (Block (Content [ Text "b" ]))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.attach(base: math.equation(block: false, 
-                                                 body: text(body: [a]), 
-                                                 numbering: none), 
-                             t: text(body: [b])), 
-                 parbreak() })
diff --git a/test/out/math/content-03.out b/test/out/math/content-03.out
deleted file mode 100644
--- a/test/out/math/content-03.out
+++ /dev/null
@@ -1,89 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/content-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/content-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/content-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/math/content-03.typ"
-    ( line 3 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "here")))
-       (FuncCall
-          (FieldAccess
-             (Ident (Identifier "with")) (Ident (Identifier "text")))
-          [ KeyValArg (Identifier "font") (Literal (String "Noto Sans")) ]))
-, SoftBreak
-, Equation
-    False
-    [ Code
-        "test/typ/math/content-03.typ"
-        ( line 4 , column 3 )
-        (FuncCall (Ident (Identifier "here")) [ BlockArg [ Text "f" ] ])
-    , Code
-        "test/typ/math/content-03.typ"
-        ( line 4 , column 11 )
-        (FieldAccess
-           (Ident (Identifier "eq")) (Ident (Identifier "colon")))
-    , Code
-        "test/typ/math/content-03.typ"
-        ( line 4 , column 15 )
-        (FuncCall
-           (Ident (Identifier "here"))
-           [ BlockArg [ Text "Hi" , Space , Text "there" ] ])
-    ]
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 math.equation(block: false, 
-                               body: { text(body: text(body: [f]), 
-                                            font: "Noto Sans"), 
-                                       text(body: [≔]), 
-                                       text(body: { text(body: [Hi]), 
-                                                    text(body: [ ]), 
-                                                    text(body: [there]) }, 
-                                            font: "Noto Sans") }, 
-                               numbering: none), 
-                 text(body: [.]), 
-                 parbreak() })
diff --git a/test/out/math/delimited-00.out b/test/out/math/delimited-00.out
deleted file mode 100644
--- a/test/out/math/delimited-00.out
+++ /dev/null
@@ -1,128 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/delimited-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/delimited-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/delimited-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ MGroup (Just "(") (Just ")") [ Text "a" ]
-    , Text "+"
-    , MGroup (Just "{") (Just "}") [ MFrac (Text "b") (Text "2") ]
-    , Text "+"
-    , Text "|"
-    , Text "a"
-    , MFrac (Text "|") (Text "2")
-    , Text "+"
-    , MGroup (Just "(") (Just ")") [ Text "b" ]
-    ]
-, SoftBreak
-, Equation
-    False
-    [ MGroup
-        Nothing
-        Nothing
-        [ Text "f"
-        , MGroup (Just "(") (Just ")") [ MFrac (Text "x") (Text "2") ]
-        ]
-    , Text "<"
-    , Code
-        "test/typ/math/delimited-00.typ"
-        ( line 4 , column 11 )
-        (FuncCall
-           (Ident (Identifier "zeta"))
-           [ BlockArg
-               [ MAttach Nothing (Just (Text "2")) (Text "c")
-               , Text "+"
-               , Text "|"
-               , Text "a"
-               , Text "+"
-               , MFrac (Text "b") (Text "2")
-               , Text "|"
-               ]
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { math.lr(body: ({ [(], 
-                                                        text(body: [a]), 
-                                                        [)] })), 
-                                       text(body: [+]), 
-                                       math.lr(body: ({ [{], 
-                                                        math.frac(denom: text(body: [2]), 
-                                                                  num: text(body: [b])), 
-                                                        [}] })), 
-                                       text(body: [+]), 
-                                       text(body: [|]), 
-                                       text(body: [a]), 
-                                       math.frac(denom: text(body: [2]), 
-                                                 num: text(body: [|])), 
-                                       text(body: [+]), 
-                                       math.lr(body: ({ [(], 
-                                                        text(body: [b]), 
-                                                        [)] })) }, 
-                               numbering: none), 
-                 text(body: [
-]), 
-                 math.equation(block: false, 
-                               body: { text(body: [f]), 
-                                       math.lr(body: ({ [(], 
-                                                        math.frac(denom: text(body: [2]), 
-                                                                  num: text(body: [x])), 
-                                                        [)] })), 
-                                       text(body: [<]), 
-                                       text(body: [ζ]), 
-                                       text(body: [(]), 
-                                       math.attach(b: none, 
-                                                   base: text(body: [c]), 
-                                                   t: text(body: [2])), 
-                                       text(body: [+]), 
-                                       text(body: [|]), 
-                                       text(body: [a]), 
-                                       text(body: [+]), 
-                                       math.frac(denom: text(body: [2]), 
-                                                 num: text(body: [b])), 
-                                       text(body: [|]), 
-                                       text(body: [)]) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/delimited-01.out b/test/out/math/delimited-01.out
deleted file mode 100644
--- a/test/out/math/delimited-01.out
+++ /dev/null
@@ -1,101 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/delimited-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/delimited-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/delimited-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    False
-    [ MGroup
-        (Just "[")
-        Nothing
-        [ Text "1"
-        , Text ","
-        , Text "2"
-        , MGroup
-            (Just "[")
-            Nothing
-            [ Text "="
-            , MGroup
-                (Just "[")
-                Nothing
-                [ Text "1"
-                , Text ","
-                , Text "2"
-                , Text ")"
-                , Code
-                    "test/typ/math/delimited-01.typ"
-                    ( line 3 , column 16 )
-                    (FieldAccess (Ident (Identifier "not")) (Ident (Identifier "eq")))
-                , Code
-                    "test/typ/math/delimited-01.typ"
-                    ( line 3 , column 19 )
-                    (Ident (Identifier "zeta"))
-                , Text "("
-                , MFrac (Text "x") (Text "2")
-                , Text ")"
-                ]
-            ]
-        ]
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: false, 
-                               body: { text(body: [[]), 
-                                       text(body: [1]), 
-                                       text(body: [,]), 
-                                       text(body: [2]), 
-                                       text(body: [[]), 
-                                       text(body: [=]), 
-                                       text(body: [[]), 
-                                       text(body: [1]), 
-                                       text(body: [,]), 
-                                       text(body: [2]), 
-                                       text(body: [)]), 
-                                       text(body: [≠]), 
-                                       text(body: [ζ]), 
-                                       text(body: [(]), 
-                                       math.frac(denom: text(body: [2]), 
-                                                 num: text(body: [x])), 
-                                       text(body: [)]) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/delimited-02.out b/test/out/math/delimited-02.out
deleted file mode 100644
--- a/test/out/math/delimited-02.out
+++ /dev/null
@@ -1,146 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/delimited-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/delimited-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/delimited-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Code
-        "test/typ/math/delimited-02.typ"
-        ( line 3 , column 3 )
-        (FieldAccess
-           (Ident (Identifier "l"))
-           (FieldAccess
-              (Ident (Identifier "double")) (Ident (Identifier "bracket"))))
-    , MFrac (Text "a") (Text "b")
-    , Code
-        "test/typ/math/delimited-02.typ"
-        ( line 3 , column 8 )
-        (FieldAccess
-           (Ident (Identifier "r"))
-           (FieldAccess
-              (Ident (Identifier "double")) (Ident (Identifier "bracket"))))
-    , Code
-        "test/typ/math/delimited-02.typ"
-        ( line 3 , column 11 )
-        (FieldAccess (Ident (Identifier "not")) (Ident (Identifier "eq")))
-    , Code
-        "test/typ/math/delimited-02.typ"
-        ( line 3 , column 14 )
-        (FuncCall
-           (Ident (Identifier "lr"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/delimited-02.typ"
-                   ( line 3 , column 17 )
-                   (FieldAccess
-                      (Ident (Identifier "r"))
-                      (FieldAccess
-                         (Ident (Identifier "double")) (Ident (Identifier "bracket"))))
-               , MFrac (Text "a") (Text "b")
-               , Code
-                   "test/typ/math/delimited-02.typ"
-                   ( line 3 , column 22 )
-                   (FieldAccess
-                      (Ident (Identifier "r"))
-                      (FieldAccess
-                         (Ident (Identifier "double")) (Ident (Identifier "bracket"))))
-               ]
-           ])
-    , Code
-        "test/typ/math/delimited-02.typ"
-        ( line 3 , column 26 )
-        (FieldAccess (Ident (Identifier "not")) (Ident (Identifier "eq")))
-    , MGroup
-        (Just "[") Nothing [ MFrac (Text "a") (Text "b") , Text ")" ]
-    ]
-, SoftBreak
-, Equation
-    True
-    [ Code
-        "test/typ/math/delimited-02.typ"
-        ( line 4 , column 3 )
-        (FuncCall
-           (Ident (Identifier "lr"))
-           [ BlockArg [ Text "|" , Text "]" , Text "1" ]
-           , BlockArg
-               [ Text "2"
-               , Text "["
-               , Text "+"
-               , MFrac (Text "1") (Text "2")
-               , Text "|"
-               ]
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [⟦]), 
-                                       math.frac(denom: text(body: [b]), 
-                                                 num: text(body: [a])), 
-                                       text(body: [⟧]), 
-                                       text(body: [≠]), 
-                                       math.lr(body: ({ text(body: [⟧]), 
-                                                        math.frac(denom: text(body: [b]), 
-                                                                  num: text(body: [a])), 
-                                                        text(body: [⟧]) })), 
-                                       text(body: [≠]), 
-                                       text(body: [[]), 
-                                       math.frac(denom: text(body: [b]), 
-                                                 num: text(body: [a])), 
-                                       text(body: [)]) }, 
-                               numbering: none), 
-                 text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: math.lr(body: ({ text(body: [|]), 
-                                                      text(body: []]), 
-                                                      text(body: [1]) }, 
-                                                    { text(body: [2]), 
-                                                      text(body: [[]), 
-                                                      text(body: [+]), 
-                                                      math.frac(denom: text(body: [2]), 
-                                                                num: text(body: [1])), 
-                                                      text(body: [|]) })), 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/delimited-03.out b/test/out/math/delimited-03.out
deleted file mode 100644
--- a/test/out/math/delimited-03.out
+++ /dev/null
@@ -1,96 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/delimited-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/delimited-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/delimited-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Text "|"
-    , Text "x"
-    , Text "+"
-    , Text "|"
-    , Text "y"
-    , Text "|"
-    , Text "+"
-    , MFrac (Text "z") (Text "a")
-    , Text "|"
-    , HardBreak
-    , Text "|"
-    , Text "x"
-    , Text "+"
-    , Code
-        "test/typ/math/delimited-03.typ"
-        ( line 4 , column 8 )
-        (FuncCall
-           (Ident (Identifier "lr"))
-           [ BlockArg [ Text "|" , Text "y" , Text "|" ] ])
-    , Text "+"
-    , MFrac (Text "z") (Text "a")
-    , Text "|"
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [|]), 
-                                       text(body: [x]), 
-                                       text(body: [+]), 
-                                       text(body: [|]), 
-                                       text(body: [y]), 
-                                       text(body: [|]), 
-                                       text(body: [+]), 
-                                       math.frac(denom: text(body: [a]), 
-                                                 num: text(body: [z])), 
-                                       text(body: [|]), 
-                                       linebreak(), 
-                                       text(body: [|]), 
-                                       text(body: [x]), 
-                                       text(body: [+]), 
-                                       math.lr(body: ({ text(body: [|]), 
-                                                        text(body: [y]), 
-                                                        text(body: [|]) })), 
-                                       text(body: [+]), 
-                                       math.frac(denom: text(body: [a]), 
-                                                 num: text(body: [z])), 
-                                       text(body: [|]) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/delimited-04.out b/test/out/math/delimited-04.out
deleted file mode 100644
--- a/test/out/math/delimited-04.out
+++ /dev/null
@@ -1,93 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/delimited-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/delimited-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/delimited-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Code
-        "test/typ/math/delimited-04.typ"
-        ( line 3 , column 3 )
-        (FieldAccess
-           (Ident (Identifier "l")) (Ident (Identifier "bracket")))
-    , MFrac (Text "a") (Text "b")
-    , Code
-        "test/typ/math/delimited-04.typ"
-        ( line 3 , column 17 )
-        (FieldAccess
-           (Ident (Identifier "r")) (Ident (Identifier "bracket")))
-    , Text "="
-    , Code
-        "test/typ/math/delimited-04.typ"
-        ( line 4 , column 5 )
-        (FuncCall
-           (Ident (Identifier "lr"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/delimited-04.typ"
-                   ( line 4 , column 8 )
-                   (FieldAccess
-                      (Ident (Identifier "l")) (Ident (Identifier "bracket")))
-               , MFrac (Text "a") (Text "b")
-               , Code
-                   "test/typ/math/delimited-04.typ"
-                   ( line 4 , column 22 )
-                   (FieldAccess
-                      (Ident (Identifier "r")) (Ident (Identifier "bracket")))
-               ]
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [[]), 
-                                       math.frac(denom: text(body: [b]), 
-                                                 num: text(body: [a])), 
-                                       text(body: []]), 
-                                       text(body: [=]), 
-                                       math.lr(body: ({ text(body: [[]), 
-                                                        math.frac(denom: text(body: [b]), 
-                                                                  num: text(body: [a])), 
-                                                        text(body: []]) })) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/delimited-05.out b/test/out/math/delimited-05.out
deleted file mode 100644
--- a/test/out/math/delimited-05.out
+++ /dev/null
@@ -1,77 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/delimited-05.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/delimited-05.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/delimited-05.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Code
-        "test/typ/math/delimited-05.typ"
-        ( line 3 , column 3 )
-        (FuncCall
-           (Ident (Identifier "lr"))
-           [ BlockArg [ MFrac (Text "a") (Text "b") , Text "]" ] ])
-    , Text "="
-    , Text "a"
-    , Text "="
-    , Code
-        "test/typ/math/delimited-05.typ"
-        ( line 3 , column 19 )
-        (FuncCall
-           (Ident (Identifier "lr"))
-           [ BlockArg [ Text "{" , MFrac (Text "a") (Text "b") ] ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { math.lr(body: ({ math.frac(denom: text(body: [b]), 
-                                                                  num: text(body: [a])), 
-                                                        text(body: []]) })), 
-                                       text(body: [=]), 
-                                       text(body: [a]), 
-                                       text(body: [=]), 
-                                       math.lr(body: ({ text(body: [{]), 
-                                                        math.frac(denom: text(body: [b]), 
-                                                                  num: text(body: [a])) })) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/delimited-06.out b/test/out/math/delimited-06.out
deleted file mode 100644
--- a/test/out/math/delimited-06.out
+++ /dev/null
@@ -1,98 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/delimited-06.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/delimited-06.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/delimited-06.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Code
-        "test/typ/math/delimited-06.typ"
-        ( line 3 , column 3 )
-        (FuncCall
-           (Ident (Identifier "lr"))
-           [ BlockArg
-               [ Text "]"
-               , MAttach
-                   (Just (MGroup Nothing Nothing [ Text "x" , Text "=" , Text "1" ]))
-                   (Just (Text "n"))
-                   (Code
-                      "test/typ/math/delimited-06.typ"
-                      ( line 3 , column 7 )
-                      (Ident (Identifier "sum")))
-               , Text "x"
-               , Text "]"
-               ]
-           , KeyValArg (Identifier "size") (Literal (Numeric 70.0 Percent))
-           ])
-    , Text "<"
-    , Code
-        "test/typ/math/delimited-06.typ"
-        ( line 4 , column 5 )
-        (FuncCall
-           (Ident (Identifier "lr"))
-           [ BlockArg
-               [ MGroup (Just "(") (Just ")") [ Text "1" , Text "," , Text "2" ] ]
-           , KeyValArg (Identifier "size") (Literal (Numeric 200.0 Percent))
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { math.lr(body: ({ text(body: []]), 
-                                                        math.attach(b: { text(body: [x]), 
-                                                                         text(body: [=]), 
-                                                                         text(body: [1]) }, 
-                                                                    base: text(body: [∑]), 
-                                                                    t: text(body: [n])), 
-                                                        text(body: [x]), 
-                                                        text(body: []]) }), 
-                                               size: 70%), 
-                                       text(body: [<]), 
-                                       math.lr(body: (math.lr(body: ({ [(], 
-                                                                       text(body: [1]), 
-                                                                       text(body: [,]), 
-                                                                       text(body: [2]), 
-                                                                       [)] }))), 
-                                               size: 200%) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/delimited-07.out b/test/out/math/delimited-07.out
deleted file mode 100644
--- a/test/out/math/delimited-07.out
+++ /dev/null
@@ -1,85 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/delimited-07.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/delimited-07.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/delimited-07.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    False
-    [ Code
-        "test/typ/math/delimited-07.typ"
-        ( line 3 , column 2 )
-        (FuncCall
-           (Ident (Identifier "floor"))
-           [ BlockArg [ MFrac (Text "x") (Text "2") ] ])
-    , Text ","
-    , Code
-        "test/typ/math/delimited-07.typ"
-        ( line 3 , column 14 )
-        (FuncCall
-           (Ident (Identifier "ceil"))
-           [ BlockArg [ MFrac (Text "x") (Text "2") ] ])
-    , Text ","
-    , Code
-        "test/typ/math/delimited-07.typ"
-        ( line 3 , column 25 )
-        (FuncCall (Ident (Identifier "abs")) [ BlockArg [ Text "x" ] ])
-    , Text ","
-    , Code
-        "test/typ/math/delimited-07.typ"
-        ( line 3 , column 33 )
-        (FuncCall (Ident (Identifier "norm")) [ BlockArg [ Text "x" ] ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: false, 
-                               body: { math.floor(body: math.frac(denom: text(body: [2]), 
-                                                                  num: text(body: [x]))), 
-                                       text(body: [,]), 
-                                       math.ceil(body: math.frac(denom: text(body: [2]), 
-                                                                 num: text(body: [x]))), 
-                                       text(body: [,]), 
-                                       math.abs(body: text(body: [x])), 
-                                       text(body: [,]), 
-                                       math.norm(body: text(body: [x])) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/delimited-08.out b/test/out/math/delimited-08.out
deleted file mode 100644
--- a/test/out/math/delimited-08.out
+++ /dev/null
@@ -1,84 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/delimited-08.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/delimited-08.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/delimited-08.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Code
-        "test/typ/math/delimited-08.typ"
-        ( line 3 , column 3 )
-        (FuncCall
-           (Ident (Identifier "lr"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/delimited-08.typ"
-                   ( line 4 , column 5 )
-                   (FuncCall
-                      (Ident (Identifier "text"))
-                      [ BlockArg [ Text "(" ]
-                      , KeyValArg (Identifier "fill") (Ident (Identifier "green"))
-                      ])
-               , MFrac (Text "a") (Text "b")
-               , Code
-                   "test/typ/math/delimited-08.typ"
-                   ( line 5 , column 5 )
-                   (FuncCall
-                      (Ident (Identifier "text"))
-                      [ BlockArg [ Text ")" ]
-                      , KeyValArg (Identifier "fill") (Ident (Identifier "blue"))
-                      ])
-               ]
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: math.lr(body: ({ text(body: text(body: [(]), 
-                                                           fill: rgb(18%,80%,25%,100%)), 
-                                                      math.frac(denom: text(body: [b]), 
-                                                                num: text(body: [a])), 
-                                                      text(body: text(body: [)]), 
-                                                           fill: rgb(0%,45%,85%,100%)) })), 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/frac-00.out b/test/out/math/frac-00.out
deleted file mode 100644
--- a/test/out/math/frac-00.out
+++ /dev/null
@@ -1,78 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/frac-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/frac-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/frac-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Text "x"
-    , Text "="
-    , MFrac (Text "1") (Text "2")
-    , Text "="
-    , MFrac (Text "a") (MGroup Nothing Nothing [ Text "a" , Text "h" ])
-    , Text "="
-    , MFrac (Text "a") (Text "a")
-    , Text "="
-    , MFrac
-        (Text "a") (MGroup Nothing Nothing [ MFrac (Text "1") (Text "2") ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [x]), 
-                                       text(body: [=]), 
-                                       math.frac(denom: text(body: [2]), 
-                                                 num: text(body: [1])), 
-                                       text(body: [=]), 
-                                       math.frac(denom: { text(body: [a]), 
-                                                          text(body: [h]) }, 
-                                                 num: text(body: [a])), 
-                                       text(body: [=]), 
-                                       math.frac(denom: text(body: [a]), 
-                                                 num: text(body: [a])), 
-                                       text(body: [=]), 
-                                       math.frac(denom: math.frac(denom: text(body: [2]), 
-                                                                  num: text(body: [1])), 
-                                                 num: text(body: [a])) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/frac-01.out b/test/out/math/frac-01.out
deleted file mode 100644
--- a/test/out/math/frac-01.out
+++ /dev/null
@@ -1,85 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/frac-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/frac-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/frac-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ MFrac
-        (MGroup
-           (Just "(")
-           (Just ")")
-           [ Text "|"
-           , Text "x"
-           , Text "|"
-           , Text "+"
-           , Text "|"
-           , Text "y"
-           , Text "|"
-           ])
-        (Text "2")
-    , Text "<"
-    , MFrac
-        (MGroup (Just "[") (Just "]") [ Text "1" , Text "+" , Text "2" ])
-        (Text "3")
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { math.frac(denom: text(body: [2]), 
-                                                 num: { text(body: [|]), 
-                                                        text(body: [x]), 
-                                                        text(body: [|]), 
-                                                        text(body: [+]), 
-                                                        text(body: [|]), 
-                                                        text(body: [y]), 
-                                                        text(body: [|]) }), 
-                                       text(body: [<]), 
-                                       math.frac(denom: text(body: [3]), 
-                                                 num: math.lr(body: ({ [[], 
-                                                                       text(body: [1]), 
-                                                                       text(body: [+]), 
-                                                                       text(body: [2]), 
-                                                                       []] }))) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/frac-02.out b/test/out/math/frac-02.out
deleted file mode 100644
--- a/test/out/math/frac-02.out
+++ /dev/null
@@ -1,101 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/frac-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/frac-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/frac-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Text "x"
-    , Text "="
-    , MFrac
-        (MGroup
-           (Just "(")
-           (Just ")")
-           [ Code
-               "test/typ/math/frac-02.typ"
-               ( line 3 , column 8 )
-               (Ident (Identifier "minus"))
-           , Text "b"
-           , Code
-               "test/typ/math/frac-02.typ"
-               ( line 3 , column 11 )
-               (FieldAccess
-                  (Ident (Identifier "minus")) (Ident (Identifier "plus")))
-           , Code
-               "test/typ/math/frac-02.typ"
-               ( line 3 , column 22 )
-               (FuncCall
-                  (Ident (Identifier "sqrt"))
-                  [ BlockArg
-                      [ MAttach Nothing (Just (Text "2")) (Text "b")
-                      , Code
-                          "test/typ/math/frac-02.typ"
-                          ( line 3 , column 31 )
-                          (Ident (Identifier "minus"))
-                      , Text "4"
-                      , Text "a"
-                      , Text "c"
-                      ]
-                  ])
-           ])
-        (MGroup Nothing Nothing [ Text "2" , Text "a" ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [x]), 
-                                       text(body: [=]), 
-                                       math.frac(denom: { text(body: [2]), 
-                                                          text(body: [a]) }, 
-                                                 num: { text(body: [−]), 
-                                                        text(body: [b]), 
-                                                        text(body: [±]), 
-                                                        math.sqrt(radicand: { math.attach(b: none, 
-                                                                                          base: text(body: [b]), 
-                                                                                          t: text(body: [2])), 
-                                                                              text(body: [−]), 
-                                                                              text(body: [4]), 
-                                                                              text(body: [a]), 
-                                                                              text(body: [c]) }) }) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/frac-03.out b/test/out/math/frac-03.out
deleted file mode 100644
--- a/test/out/math/frac-03.out
+++ /dev/null
@@ -1,73 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/frac-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/frac-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/frac-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Code
-        "test/typ/math/frac-03.typ"
-        ( line 3 , column 3 )
-        (FuncCall
-           (Ident (Identifier "binom"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/frac-03.typ"
-                   ( line 3 , column 9 )
-                   (Ident (Identifier "circle"))
-               ]
-           , BlockArg
-               [ Code
-                   "test/typ/math/frac-03.typ"
-                   ( line 3 , column 17 )
-                   (Ident (Identifier "square"))
-               ]
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: math.binom(lower: text(body: [□]), 
-                                                upper: text(body: [○])), 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/frac-04.out b/test/out/math/frac-04.out
deleted file mode 100644
--- a/test/out/math/frac-04.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/math/frac-05.out b/test/out/math/frac-05.out
deleted file mode 100644
--- a/test/out/math/frac-05.out
+++ /dev/null
@@ -1,72 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/frac-05.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/frac-05.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/frac-05.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ MFrac (MFrac (Text "1") (Text "2")) (Text "3")
-    , Text "="
-    , MFrac
-        (MGroup (Just "(") (Just ")") [ MFrac (Text "1") (Text "2") ])
-        (Text "3")
-    , Text "="
-    , MFrac
-        (Text "1") (MGroup Nothing Nothing [ MFrac (Text "2") (Text "3") ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { math.frac(denom: text(body: [3]), 
-                                                 num: math.frac(denom: text(body: [2]), 
-                                                                num: text(body: [1]))), 
-                                       text(body: [=]), 
-                                       math.frac(denom: text(body: [3]), 
-                                                 num: math.frac(denom: text(body: [2]), 
-                                                                num: text(body: [1]))), 
-                                       text(body: [=]), 
-                                       math.frac(denom: math.frac(denom: text(body: [3]), 
-                                                                  num: text(body: [2])), 
-                                                 num: text(body: [1])) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/frac-06.out b/test/out/math/frac-06.out
deleted file mode 100644
--- a/test/out/math/frac-06.out
+++ /dev/null
@@ -1,226 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/frac-06.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/frac-06.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/frac-06.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ MFrac
-        (MAttach (Just (Text "1")) Nothing (Text "a"))
-        (MAttach (Just (Text "2")) Nothing (Text "b"))
-    , Text ","
-    , MFrac
-        (Text "1")
-        (MGroup
-           Nothing
-           Nothing
-           [ Text "f" , MGroup (Just "(") (Just ")") [ Text "x" ] ])
-    , Text ","
-    , MFrac
-        (Code
-           "test/typ/math/frac-06.typ"
-           ( line 3 , column 20 )
-           (FuncCall (Ident (Identifier "zeta")) [ BlockArg [ Text "x" ] ]))
-        (Text "2")
-    , Text ","
-    , Text " foo"
-    , Code
-        "test/typ/math/frac-06.typ"
-        ( line 3 , column 36 )
-        (FieldAccess
-           (Ident (Identifier "l"))
-           (FieldAccess
-              (Ident (Identifier "double")) (Ident (Identifier "bracket"))))
-    , Text "x"
-    , MFrac
-        (Code
-           "test/typ/math/frac-06.typ"
-           ( line 3 , column 39 )
-           (FieldAccess
-              (Ident (Identifier "r"))
-              (FieldAccess
-                 (Ident (Identifier "double")) (Ident (Identifier "bracket")))))
-        (Text "2")
-    , HardBreak
-    , MFrac (Text "1.2") (Text "3.7")
-    , Text ","
-    , MAttach Nothing (Just (Text "3.4")) (Text "2.3")
-    , HardBreak
-    , Text "\127987"
-    , Text "\65039"
-    , Text "\8205"
-    , Text "\127752"
-    , MFrac (MGroup (Just "[") (Just "]") [ Text "x" ]) (Text "2")
-    , Text ","
-    , Text "f"
-    , MFrac (MGroup (Just "[") (Just "]") [ Text "x" ]) (Text "2")
-    , Text ","
-    , Code
-        "test/typ/math/frac-06.typ"
-        ( line 5 , column 23 )
-        (Ident (Identifier "phi"))
-    , MFrac (MGroup (Just "[") (Just "]") [ Text "x" ]) (Text "2")
-    , Text ","
-    , Text "\127987"
-    , Text "\65039"
-    , Text "\8205"
-    , Text "\127752"
-    , MFrac (MGroup (Just "[") (Just "]") [ Text "x" ]) (Text "2")
-    , HardBreak
-    , Text "+"
-    , MFrac (MGroup (Just "[") (Just "]") [ Text "x" ]) (Text "2")
-    , Text ","
-    , Text "1"
-    , MFrac (MGroup (Just "(") (Just ")") [ Text "x" ]) (Text "2")
-    , Text ","
-    , Text "2"
-    , MFrac (MGroup (Just "[") (Just "]") [ Text "x" ]) (Text "2")
-    , MGroup
-        Nothing
-        Nothing
-        [ HardBreak , MGroup (Just "(") (Just ")") [ Text "a" ] ]
-    , MFrac (Text "b") (Text "2")
-    , Text ","
-    , MGroup
-        Nothing
-        Nothing
-        [ Text "b" , MGroup (Just "(") (Just ")") [ Text "a" ] ]
-    , MFrac (MGroup (Just "[") (Just "]") [ Text "b" ]) (Text "2")
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { math.frac(denom: math.attach(b: text(body: [2]), 
-                                                                    base: text(body: [b]), 
-                                                                    t: none), 
-                                                 num: math.attach(b: text(body: [1]), 
-                                                                  base: text(body: [a]), 
-                                                                  t: none)), 
-                                       text(body: [,]), 
-                                       math.frac(denom: { text(body: [f]), 
-                                                          math.lr(body: ({ [(], 
-                                                                           text(body: [x]), 
-                                                                           [)] })) }, 
-                                                 num: text(body: [1])), 
-                                       text(body: [,]), 
-                                       math.frac(denom: text(body: [2]), 
-                                                 num: { text(body: [ζ]), 
-                                                        text(body: [(]), 
-                                                        text(body: [x]), 
-                                                        text(body: [)]) }), 
-                                       text(body: [,]), 
-                                       text(body: [ foo]), 
-                                       text(body: [⟦]), 
-                                       text(body: [x]), 
-                                       math.frac(denom: text(body: [2]), 
-                                                 num: text(body: [⟧])), 
-                                       linebreak(), 
-                                       math.frac(denom: text(body: [3.7]), 
-                                                 num: text(body: [1.2])), 
-                                       text(body: [,]), 
-                                       math.attach(b: none, 
-                                                   base: text(body: [2.3]), 
-                                                   t: text(body: [3.4])), 
-                                       linebreak(), 
-                                       text(body: [🏳]), 
-                                       text(body: [️]), 
-                                       text(body: [‍]), 
-                                       text(body: [🌈]), 
-                                       math.frac(denom: text(body: [2]), 
-                                                 num: math.lr(body: ({ [[], 
-                                                                       text(body: [x]), 
-                                                                       []] }))), 
-                                       text(body: [,]), 
-                                       text(body: [f]), 
-                                       math.frac(denom: text(body: [2]), 
-                                                 num: math.lr(body: ({ [[], 
-                                                                       text(body: [x]), 
-                                                                       []] }))), 
-                                       text(body: [,]), 
-                                       text(body: [φ]), 
-                                       math.frac(denom: text(body: [2]), 
-                                                 num: math.lr(body: ({ [[], 
-                                                                       text(body: [x]), 
-                                                                       []] }))), 
-                                       text(body: [,]), 
-                                       text(body: [🏳]), 
-                                       text(body: [️]), 
-                                       text(body: [‍]), 
-                                       text(body: [🌈]), 
-                                       math.frac(denom: text(body: [2]), 
-                                                 num: math.lr(body: ({ [[], 
-                                                                       text(body: [x]), 
-                                                                       []] }))), 
-                                       linebreak(), 
-                                       text(body: [+]), 
-                                       math.frac(denom: text(body: [2]), 
-                                                 num: math.lr(body: ({ [[], 
-                                                                       text(body: [x]), 
-                                                                       []] }))), 
-                                       text(body: [,]), 
-                                       text(body: [1]), 
-                                       math.frac(denom: text(body: [2]), 
-                                                 num: text(body: [x])), 
-                                       text(body: [,]), 
-                                       text(body: [2]), 
-                                       math.frac(denom: text(body: [2]), 
-                                                 num: math.lr(body: ({ [[], 
-                                                                       text(body: [x]), 
-                                                                       []] }))), 
-                                       linebreak(), 
-                                       math.lr(body: ({ [(], 
-                                                        text(body: [a]), 
-                                                        [)] })), 
-                                       math.frac(denom: text(body: [2]), 
-                                                 num: text(body: [b])), 
-                                       text(body: [,]), 
-                                       text(body: [b]), 
-                                       math.lr(body: ({ [(], 
-                                                        text(body: [a]), 
-                                                        [)] })), 
-                                       math.frac(denom: text(body: [2]), 
-                                                 num: math.lr(body: ({ [[], 
-                                                                       text(body: [b]), 
-                                                                       []] }))) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/matrix-00.out b/test/out/math/matrix-00.out
deleted file mode 100644
--- a/test/out/math/matrix-00.out
+++ /dev/null
@@ -1,157 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/matrix-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/matrix-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/matrix-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/math/matrix-00.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "align"))
-       [ NormalArg (Ident (Identifier "center")) ])
-, SoftBreak
-, Equation
-    False
-    [ Code
-        "test/typ/math/matrix-00.typ"
-        ( line 4 , column 2 )
-        (FuncCall (Ident (Identifier "mat")) [])
-    , Code
-        "test/typ/math/matrix-00.typ"
-        ( line 4 , column 8 )
-        (Ident (Identifier "dot"))
-    , Code
-        "test/typ/math/matrix-00.typ"
-        ( line 5 , column 2 )
-        (FuncCall
-           (Ident (Identifier "mat"))
-           [ ArrayArg [ [ MGroup Nothing Nothing [] ] ] ])
-    , Code
-        "test/typ/math/matrix-00.typ"
-        ( line 5 , column 9 )
-        (Ident (Identifier "dot"))
-    , Code
-        "test/typ/math/matrix-00.typ"
-        ( line 6 , column 2 )
-        (FuncCall
-           (Ident (Identifier "mat"))
-           [ BlockArg [ Text "1" ] , BlockArg [ Text "2" ] ])
-    , Code
-        "test/typ/math/matrix-00.typ"
-        ( line 6 , column 12 )
-        (Ident (Identifier "dot"))
-    , Code
-        "test/typ/math/matrix-00.typ"
-        ( line 7 , column 2 )
-        (FuncCall
-           (Ident (Identifier "mat"))
-           [ ArrayArg [ [ Text "1" , Text "2" ] ] ])
-    , HardBreak
-    , Code
-        "test/typ/math/matrix-00.typ"
-        ( line 8 , column 2 )
-        (FuncCall
-           (Ident (Identifier "mat"))
-           [ ArrayArg [ [ Text "1" ] , [ Text "2" ] ] ])
-    , Code
-        "test/typ/math/matrix-00.typ"
-        ( line 8 , column 12 )
-        (Ident (Identifier "dot"))
-    , Code
-        "test/typ/math/matrix-00.typ"
-        ( line 9 , column 2 )
-        (FuncCall
-           (Ident (Identifier "mat"))
-           [ ArrayArg [ [ Text "1" , Text "2" ] , [ Text "3" , Text "4" ] ] ])
-    , Code
-        "test/typ/math/matrix-00.typ"
-        ( line 9 , column 18 )
-        (Ident (Identifier "dot"))
-    , Code
-        "test/typ/math/matrix-00.typ"
-        ( line 10 , column 2 )
-        (FuncCall
-           (Ident (Identifier "mat"))
-           [ ArrayArg
-               [ [ MGroup
-                     Nothing Nothing [ Text "1" , Text "+" , MAlignPoint , Text "2" ]
-                 , MFrac (Text "1") (Text "2")
-                 ]
-               , [ MGroup Nothing Nothing [ MAlignPoint , Text "3" ] , Text "4" ]
-               ]
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 math.equation(block: false, 
-                               body: { math.mat(rows: ()), 
-                                       text(body: [⋅]), 
-                                       math.mat(rows: (({  }))), 
-                                       text(body: [⋅]), 
-                                       math.mat(rows: ((text(body: [1]), 
-                                                        text(body: [2])))), 
-                                       text(body: [⋅]), 
-                                       math.mat(rows: ((text(body: [1]), 
-                                                        text(body: [2])))), 
-                                       linebreak(), 
-                                       math.mat(rows: ((text(body: [1])), 
-                                                       (text(body: [2])))), 
-                                       text(body: [⋅]), 
-                                       math.mat(rows: ((text(body: [1]), 
-                                                        text(body: [2])), 
-                                                       (text(body: [3]), 
-                                                        text(body: [4])))), 
-                                       text(body: [⋅]), 
-                                       math.mat(rows: (({ text(body: [1]), 
-                                                          text(body: [+]), 
-                                                          math.alignpoint(), 
-                                                          text(body: [2]) }, 
-                                                        math.frac(denom: text(body: [2]), 
-                                                                  num: text(body: [1]))), 
-                                                       ({ math.alignpoint(), 
-                                                          text(body: [3]) }, 
-                                                        text(body: [4])))) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/matrix-01.out b/test/out/math/matrix-01.out
deleted file mode 100644
--- a/test/out/math/matrix-01.out
+++ /dev/null
@@ -1,119 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/matrix-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/matrix-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/matrix-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Code
-        "test/typ/math/matrix-01.typ"
-        ( line 3 , column 3 )
-        (FuncCall
-           (Ident (Identifier "mat"))
-           [ ArrayArg
-               [ [ Text "1"
-                 , Text "2"
-                 , Code
-                     "test/typ/math/matrix-01.typ"
-                     ( line 4 , column 9 )
-                     (FieldAccess (Ident (Identifier "h")) (Ident (Identifier "dots")))
-                 , Text "10"
-                 ]
-               , [ Text "2"
-                 , Text "2"
-                 , Code
-                     "test/typ/math/matrix-01.typ"
-                     ( line 5 , column 9 )
-                     (FieldAccess (Ident (Identifier "h")) (Ident (Identifier "dots")))
-                 , Text "10"
-                 ]
-               , [ Code
-                     "test/typ/math/matrix-01.typ"
-                     ( line 6 , column 3 )
-                     (FieldAccess (Ident (Identifier "v")) (Ident (Identifier "dots")))
-                 , Code
-                     "test/typ/math/matrix-01.typ"
-                     ( line 6 , column 11 )
-                     (FieldAccess (Ident (Identifier "v")) (Ident (Identifier "dots")))
-                 , Code
-                     "test/typ/math/matrix-01.typ"
-                     ( line 6 , column 19 )
-                     (FieldAccess
-                        (Ident (Identifier "down")) (Ident (Identifier "dots")))
-                 , Code
-                     "test/typ/math/matrix-01.typ"
-                     ( line 6 , column 30 )
-                     (FieldAccess (Ident (Identifier "v")) (Ident (Identifier "dots")))
-                 ]
-               , [ Text "10"
-                 , Text "10"
-                 , Code
-                     "test/typ/math/matrix-01.typ"
-                     ( line 7 , column 11 )
-                     (FieldAccess (Ident (Identifier "h")) (Ident (Identifier "dots")))
-                 , Text "10"
-                 ]
-               ]
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: math.mat(rows: ((text(body: [1]), 
-                                                      text(body: [2]), 
-                                                      text(body: […]), 
-                                                      text(body: [10])), 
-                                                     (text(body: [2]), 
-                                                      text(body: [2]), 
-                                                      text(body: […]), 
-                                                      text(body: [10])), 
-                                                     (text(body: [⋮]), 
-                                                      text(body: [⋮]), 
-                                                      text(body: [⋱]), 
-                                                      text(body: [⋮])), 
-                                                     (text(body: [10]), 
-                                                      text(body: [10]), 
-                                                      text(body: […]), 
-                                                      text(body: [10])))), 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/matrix-02.out b/test/out/math/matrix-02.out
deleted file mode 100644
--- a/test/out/math/matrix-02.out
+++ /dev/null
@@ -1,104 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/matrix-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/matrix-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/matrix-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Code
-        "test/typ/math/matrix-02.typ"
-        ( line 3 , column 3 )
-        (FuncCall
-           (Ident (Identifier "mat"))
-           [ ArrayArg
-               [ [ Text "a" , MAttach Nothing (Just (Text "2")) (Text "b") ]
-               , [ MGroup
-                     Nothing
-                     Nothing
-                     [ MAttach
-                         (Just (MGroup Nothing Nothing [ Text "x" , HardBreak , Text "y" ]))
-                         Nothing
-                         (Code
-                            "test/typ/math/matrix-02.typ"
-                            ( line 5 , column 3 )
-                            (Ident (Identifier "sum")))
-                     , Text "x"
-                     ]
-                 , MAttach
-                     Nothing
-                     (Just (MGroup Nothing Nothing [ MFrac (Text "1") (Text "2") ]))
-                     (Text "a")
-                 ]
-               , [ Code
-                     "test/typ/math/matrix-02.typ"
-                     ( line 6 , column 3 )
-                     (Ident (Identifier "zeta"))
-                 , Code
-                     "test/typ/math/matrix-02.typ"
-                     ( line 6 , column 9 )
-                     (Ident (Identifier "alpha"))
-                 ]
-               ]
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: math.mat(rows: ((text(body: [a]), 
-                                                      math.attach(b: none, 
-                                                                  base: text(body: [b]), 
-                                                                  t: text(body: [2]))), 
-                                                     ({ math.attach(b: { text(body: [x]), 
-                                                                         linebreak(), 
-                                                                         text(body: [y]) }, 
-                                                                    base: text(body: [∑]), 
-                                                                    t: none), 
-                                                        text(body: [x]) }, 
-                                                      math.attach(b: none, 
-                                                                  base: text(body: [a]), 
-                                                                  t: math.frac(denom: text(body: [2]), 
-                                                                               num: text(body: [1])))), 
-                                                     (text(body: [ζ]), 
-                                                      text(body: [α])))), 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/matrix-03.out b/test/out/math/matrix-03.out
deleted file mode 100644
--- a/test/out/math/matrix-03.out
+++ /dev/null
@@ -1,101 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/matrix-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/matrix-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/matrix-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/math/matrix-03.typ"
-    ( line 3 , column 2 )
-    (Set
-       (FieldAccess
-          (Ident (Identifier "mat")) (Ident (Identifier "math")))
-       [ KeyValArg (Identifier "delim") (Literal (String "[")) ])
-, SoftBreak
-, Equation
-    True
-    [ Code
-        "test/typ/math/matrix-03.typ"
-        ( line 4 , column 3 )
-        (FuncCall
-           (Ident (Identifier "mat"))
-           [ ArrayArg [ [ Text "1" , Text "2" ] , [ Text "3" , Text "4" ] ] ])
-    ]
-, SoftBreak
-, Equation
-    True
-    [ Text "a"
-    , Text "+"
-    , Code
-        "test/typ/math/matrix-03.typ"
-        ( line 5 , column 7 )
-        (FuncCall
-           (Ident (Identifier "mat"))
-           [ KeyValArg (Identifier "delim") (Literal None)
-           , ArrayArg [ [ Text "1" , Text "2" ] , [ Text "3" , Text "4" ] ]
-           ])
-    , Text "+"
-    , Text "b"
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: math.mat(rows: ((text(body: [1]), 
-                                                      text(body: [2])), 
-                                                     (text(body: [3]), 
-                                                      text(body: [4])))), 
-                               numbering: none), 
-                 text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [a]), 
-                                       text(body: [+]), 
-                                       math.mat(rows: ((text(body: [1]), 
-                                                        text(body: [2])), 
-                                                       (text(body: [3]), 
-                                                        text(body: [4])))), 
-                                       text(body: [+]), 
-                                       text(body: [b]) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/matrix-04.out b/test/out/math/matrix-04.out
deleted file mode 100644
--- a/test/out/math/matrix-04.out
+++ /dev/null
@@ -1,249 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/matrix-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/matrix-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/matrix-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/math/matrix-04.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "align"))
-       [ NormalArg (Ident (Identifier "center")) ])
-, SoftBreak
-, Code
-    "test/typ/math/matrix-04.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "grid"))
-       [ KeyValArg (Identifier "columns") (Literal (Int 3))
-       , KeyValArg (Identifier "gutter") (Literal (Numeric 10.0 Pt))
-       , NormalArg
-           (Block
-              (Content
-                 [ Equation
-                     True
-                     [ Code
-                         "test/typ/math/matrix-04.typ"
-                         ( line 8 , column 5 )
-                         (FuncCall
-                            (Ident (Identifier "mat"))
-                            [ BlockArg [ Text "1" ]
-                            , BlockArg [ Text "2" ]
-                            , KeyValArg (Identifier "delim") (Block (Content [ Text " [" ]))
-                            ])
-                     ]
-                 ]))
-       , NormalArg
-           (Block
-              (Content
-                 [ Equation
-                     True
-                     [ Code
-                         "test/typ/math/matrix-04.typ"
-                         ( line 9 , column 5 )
-                         (FuncCall
-                            (Ident (Identifier "mat"))
-                            [ ArrayArg [ [ Text "1" , Text "2" ] ]
-                            , KeyValArg (Identifier "delim") (Block (Content [ Text " [" ]))
-                            ])
-                     ]
-                 ]))
-       , NormalArg
-           (Block
-              (Content
-                 [ Equation
-                     True
-                     [ Code
-                         "test/typ/math/matrix-04.typ"
-                         ( line 10 , column 5 )
-                         (FuncCall
-                            (Ident (Identifier "mat"))
-                            [ KeyValArg (Identifier "delim") (Block (Content [ Text " [" ]))
-                            , BlockArg [ Text "1" ]
-                            , BlockArg [ Text "2" ]
-                            ])
-                     ]
-                 ]))
-       , NormalArg
-           (Block
-              (Content
-                 [ Equation
-                     True
-                     [ Code
-                         "test/typ/math/matrix-04.typ"
-                         ( line 12 , column 5 )
-                         (FuncCall
-                            (Ident (Identifier "mat"))
-                            [ ArrayArg [ [ Text "1" ] , [ Text "2" ] ]
-                            , KeyValArg (Identifier "delim") (Block (Content [ Text " [" ]))
-                            ])
-                     ]
-                 ]))
-       , NormalArg
-           (Block
-              (Content
-                 [ Equation
-                     True
-                     [ Code
-                         "test/typ/math/matrix-04.typ"
-                         ( line 13 , column 5 )
-                         (FuncCall
-                            (Ident (Identifier "mat"))
-                            [ ArrayArg [ [ Text "1" ] ]
-                            , KeyValArg (Identifier "delim") (Block (Content [ Text " [" ]))
-                            , BlockArg [ Text "2" ]
-                            ])
-                     ]
-                 ]))
-       , NormalArg
-           (Block
-              (Content
-                 [ Equation
-                     True
-                     [ Code
-                         "test/typ/math/matrix-04.typ"
-                         ( line 14 , column 5 )
-                         (FuncCall
-                            (Ident (Identifier "mat"))
-                            [ KeyValArg (Identifier "delim") (Block (Content [ Text " [" ]))
-                            , ArrayArg [ [ Text "1" ] , [ Text "2" ] ]
-                            ])
-                     ]
-                 ]))
-       , NormalArg
-           (Block
-              (Content
-                 [ Equation
-                     True
-                     [ Code
-                         "test/typ/math/matrix-04.typ"
-                         ( line 16 , column 5 )
-                         (FuncCall
-                            (Ident (Identifier "mat"))
-                            [ ArrayArg [ [ Text "1" , Text "2" ] ]
-                            , KeyValArg (Identifier "delim") (Block (Content [ Text " [" ]))
-                            , BlockArg [ Text "3" ]
-                            , BlockArg [ Text "4" ]
-                            ])
-                     ]
-                 ]))
-       , NormalArg
-           (Block
-              (Content
-                 [ Equation
-                     True
-                     [ Code
-                         "test/typ/math/matrix-04.typ"
-                         ( line 17 , column 5 )
-                         (FuncCall
-                            (Ident (Identifier "mat"))
-                            [ KeyValArg (Identifier "delim") (Block (Content [ Text " [" ]))
-                            , ArrayArg [ [ Text "1" , Text "2" ] , [ Text "3" , Text "4" ] ]
-                            ])
-                     ]
-                 ]))
-       , NormalArg
-           (Block
-              (Content
-                 [ Equation
-                     True
-                     [ Code
-                         "test/typ/math/matrix-04.typ"
-                         ( line 18 , column 5 )
-                         (FuncCall
-                            (Ident (Identifier "mat"))
-                            [ ArrayArg [ [ Text "1" , Text "2" ] , [ Text "3" , Text "4" ] ]
-                            , KeyValArg (Identifier "delim") (Block (Content [ Text " [" ]))
-                            ])
-                     ]
-                 ]))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 grid(children: (math.equation(block: true, 
-                                               body: math.mat(rows: ((text(body: [1]), 
-                                                                      text(body: [2])))), 
-                                               numbering: none), 
-                                 math.equation(block: true, 
-                                               body: math.mat(rows: ((text(body: [1]), 
-                                                                      text(body: [2])))), 
-                                               numbering: none), 
-                                 math.equation(block: true, 
-                                               body: math.mat(rows: ((text(body: [1]), 
-                                                                      text(body: [2])))), 
-                                               numbering: none), 
-                                 math.equation(block: true, 
-                                               body: math.mat(rows: ((text(body: [1])), 
-                                                                     (text(body: [2])))), 
-                                               numbering: none), 
-                                 math.equation(block: true, 
-                                               body: math.mat(rows: ((text(body: [1])), 
-                                                                     (text(body: [2])))), 
-                                               numbering: none), 
-                                 math.equation(block: true, 
-                                               body: math.mat(rows: ((text(body: [1])), 
-                                                                     (text(body: [2])))), 
-                                               numbering: none), 
-                                 math.equation(block: true, 
-                                               body: math.mat(rows: ((text(body: [1]), 
-                                                                      text(body: [2])), 
-                                                                     (text(body: [3]), 
-                                                                      text(body: [4])))), 
-                                               numbering: none), 
-                                 math.equation(block: true, 
-                                               body: math.mat(rows: ((text(body: [1]), 
-                                                                      text(body: [2])), 
-                                                                     (text(body: [3]), 
-                                                                      text(body: [4])))), 
-                                               numbering: none), 
-                                 math.equation(block: true, 
-                                               body: math.mat(rows: ((text(body: [1]), 
-                                                                      text(body: [2])), 
-                                                                     (text(body: [3]), 
-                                                                      text(body: [4])))), 
-                                               numbering: none)), 
-                      columns: 3, 
-                      gutter: 10.0pt), 
-                 parbreak() })
diff --git a/test/out/math/matrix-05.out b/test/out/math/matrix-05.out
deleted file mode 100644
--- a/test/out/math/matrix-05.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/math/matrix-alignment-00.out b/test/out/math/matrix-alignment-00.out
deleted file mode 100644
--- a/test/out/math/matrix-alignment-00.out
+++ /dev/null
@@ -1,95 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/matrix-alignment-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/matrix-alignment-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/matrix-alignment-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Code
-        "test/typ/math/matrix-alignment-00.typ"
-        ( line 3 , column 3 )
-        (FuncCall
-           (Ident (Identifier "vec"))
-           [ BlockArg
-               [ Text " a "
-               , MAlignPoint
-               , Text " a a a "
-               , MAlignPoint
-               , Text " a a"
-               ]
-           , BlockArg
-               [ Text " a a "
-               , MAlignPoint
-               , Text " a a "
-               , MAlignPoint
-               , Text " a"
-               ]
-           , BlockArg
-               [ Text " a a a "
-               , MAlignPoint
-               , Text " a "
-               , MAlignPoint
-               , Text " a a a"
-               ]
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: math.vec(children: ({ text(body: [ a ]), 
-                                                           math.alignpoint(), 
-                                                           text(body: [ a a a ]), 
-                                                           math.alignpoint(), 
-                                                           text(body: [ a a]) }, 
-                                                         { text(body: [ a a ]), 
-                                                           math.alignpoint(), 
-                                                           text(body: [ a a ]), 
-                                                           math.alignpoint(), 
-                                                           text(body: [ a]) }, 
-                                                         { text(body: [ a a a ]), 
-                                                           math.alignpoint(), 
-                                                           text(body: [ a ]), 
-                                                           math.alignpoint(), 
-                                                           text(body: [ a a a]) })), 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/matrix-alignment-01.out b/test/out/math/matrix-alignment-01.out
deleted file mode 100644
--- a/test/out/math/matrix-alignment-01.out
+++ /dev/null
@@ -1,106 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/matrix-alignment-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/matrix-alignment-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/matrix-alignment-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Code
-        "test/typ/math/matrix-alignment-01.typ"
-        ( line 3 , column 3 )
-        (FuncCall
-           (Ident (Identifier "mat"))
-           [ ArrayArg
-               [ [ MGroup
-                     Nothing
-                     Nothing
-                     [ Text " a "
-                     , MAlignPoint
-                     , Text " a a a "
-                     , MAlignPoint
-                     , Text " a a"
-                     ]
-                 ]
-               , [ MGroup
-                     Nothing
-                     Nothing
-                     [ Text " a a "
-                     , MAlignPoint
-                     , Text " a a "
-                     , MAlignPoint
-                     , Text " a"
-                     ]
-                 ]
-               , [ MGroup
-                     Nothing
-                     Nothing
-                     [ Text " a a a "
-                     , MAlignPoint
-                     , Text " a "
-                     , MAlignPoint
-                     , Text " a a a"
-                     ]
-                 ]
-               ]
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: math.mat(rows: (({ text(body: [ a ]), 
-                                                        math.alignpoint(), 
-                                                        text(body: [ a a a ]), 
-                                                        math.alignpoint(), 
-                                                        text(body: [ a a]) }), 
-                                                     ({ text(body: [ a a ]), 
-                                                        math.alignpoint(), 
-                                                        text(body: [ a a ]), 
-                                                        math.alignpoint(), 
-                                                        text(body: [ a]) }), 
-                                                     ({ text(body: [ a a a ]), 
-                                                        math.alignpoint(), 
-                                                        text(body: [ a ]), 
-                                                        math.alignpoint(), 
-                                                        text(body: [ a a a]) }))), 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/matrix-alignment-02.out b/test/out/math/matrix-alignment-02.out
deleted file mode 100644
--- a/test/out/math/matrix-alignment-02.out
+++ /dev/null
@@ -1,73 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/matrix-alignment-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/matrix-alignment-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/matrix-alignment-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Code
-        "test/typ/math/matrix-alignment-02.typ"
-        ( line 3 , column 3 )
-        (FuncCall
-           (Ident (Identifier "mat"))
-           [ ArrayArg
-               [ [ Text " a" , Text " a a a" , Text " a a" ]
-               , [ Text " a a" , Text " a a" , Text " a" ]
-               , [ Text " a a a" , Text " a" , Text " a a a" ]
-               ]
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: math.mat(rows: ((text(body: [ a]), 
-                                                      text(body: [ a a a]), 
-                                                      text(body: [ a a])), 
-                                                     (text(body: [ a a]), 
-                                                      text(body: [ a a]), 
-                                                      text(body: [ a])), 
-                                                     (text(body: [ a a a]), 
-                                                      text(body: [ a]), 
-                                                      text(body: [ a a a])))), 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/matrix-alignment-03.out b/test/out/math/matrix-alignment-03.out
deleted file mode 100644
--- a/test/out/math/matrix-alignment-03.out
+++ /dev/null
@@ -1,91 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/matrix-alignment-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/matrix-alignment-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/matrix-alignment-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Code
-        "test/typ/math/matrix-alignment-03.typ"
-        ( line 3 , column 3 )
-        (FuncCall
-           (Ident (Identifier "mat"))
-           [ ArrayArg
-               [ [ MGroup Nothing Nothing [ MAlignPoint , Text "a" ]
-                 , MGroup Nothing Nothing [ MAlignPoint , Text "a a a" ]
-                 , MGroup Nothing Nothing [ MAlignPoint , Text "a a" ]
-                 ]
-               , [ MGroup Nothing Nothing [ MAlignPoint , Text "a a" ]
-                 , MGroup Nothing Nothing [ MAlignPoint , Text "a a" ]
-                 , MGroup Nothing Nothing [ MAlignPoint , Text "a" ]
-                 ]
-               , [ MGroup Nothing Nothing [ MAlignPoint , Text "a a a" ]
-                 , MGroup Nothing Nothing [ MAlignPoint , Text "a" ]
-                 , MGroup Nothing Nothing [ MAlignPoint , Text "a a a" ]
-                 ]
-               ]
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: math.mat(rows: (({ math.alignpoint(), 
-                                                        text(body: [a]) }, 
-                                                      { math.alignpoint(), 
-                                                        text(body: [a a a]) }, 
-                                                      { math.alignpoint(), 
-                                                        text(body: [a a]) }), 
-                                                     ({ math.alignpoint(), 
-                                                        text(body: [a a]) }, 
-                                                      { math.alignpoint(), 
-                                                        text(body: [a a]) }, 
-                                                      { math.alignpoint(), 
-                                                        text(body: [a]) }), 
-                                                     ({ math.alignpoint(), 
-                                                        text(body: [a a a]) }, 
-                                                      { math.alignpoint(), 
-                                                        text(body: [a]) }, 
-                                                      { math.alignpoint(), 
-                                                        text(body: [a a a]) }))), 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/matrix-alignment-04.out b/test/out/math/matrix-alignment-04.out
deleted file mode 100644
--- a/test/out/math/matrix-alignment-04.out
+++ /dev/null
@@ -1,91 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/matrix-alignment-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/matrix-alignment-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/matrix-alignment-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Code
-        "test/typ/math/matrix-alignment-04.typ"
-        ( line 3 , column 3 )
-        (FuncCall
-           (Ident (Identifier "mat"))
-           [ ArrayArg
-               [ [ MGroup Nothing Nothing [ Text " a" , MAlignPoint ]
-                 , MGroup Nothing Nothing [ Text " a a a" , MAlignPoint ]
-                 , MGroup Nothing Nothing [ Text " a a" , MAlignPoint ]
-                 ]
-               , [ MGroup Nothing Nothing [ Text " a a" , MAlignPoint ]
-                 , MGroup Nothing Nothing [ Text " a a" , MAlignPoint ]
-                 , MGroup Nothing Nothing [ Text " a" , MAlignPoint ]
-                 ]
-               , [ MGroup Nothing Nothing [ Text " a a a" , MAlignPoint ]
-                 , MGroup Nothing Nothing [ Text " a" , MAlignPoint ]
-                 , MGroup Nothing Nothing [ Text " a a a" , MAlignPoint ]
-                 ]
-               ]
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: math.mat(rows: (({ text(body: [ a]), 
-                                                        math.alignpoint() }, 
-                                                      { text(body: [ a a a]), 
-                                                        math.alignpoint() }, 
-                                                      { text(body: [ a a]), 
-                                                        math.alignpoint() }), 
-                                                     ({ text(body: [ a a]), 
-                                                        math.alignpoint() }, 
-                                                      { text(body: [ a a]), 
-                                                        math.alignpoint() }, 
-                                                      { text(body: [ a]), 
-                                                        math.alignpoint() }), 
-                                                     ({ text(body: [ a a a]), 
-                                                        math.alignpoint() }, 
-                                                      { text(body: [ a]), 
-                                                        math.alignpoint() }, 
-                                                      { text(body: [ a a a]), 
-                                                        math.alignpoint() }))), 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/matrix-alignment-05.out b/test/out/math/matrix-alignment-05.out
deleted file mode 100644
--- a/test/out/math/matrix-alignment-05.out
+++ /dev/null
@@ -1,223 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/matrix-alignment-05.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/matrix-alignment-05.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/matrix-alignment-05.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Code
-        "test/typ/math/matrix-alignment-05.typ"
-        ( line 3 , column 3 )
-        (FuncCall
-           (Ident (Identifier "mat"))
-           [ ArrayArg
-               [ [ MGroup
-                     Nothing Nothing [ MAlignPoint , Text "a" , Text "+" , Text "b" ]
-                 , Text "c"
-                 ]
-               , [ MGroup Nothing Nothing [ MAlignPoint , Text "d" ] , Text "e" ]
-               ]
-           ])
-    ]
-, SoftBreak
-, Equation
-    True
-    [ Code
-        "test/typ/math/matrix-alignment-05.typ"
-        ( line 4 , column 3 )
-        (FuncCall
-           (Ident (Identifier "mat"))
-           [ ArrayArg
-               [ [ MGroup
-                     Nothing
-                     Nothing
-                     [ MAlignPoint , Text "a" , Text "+" , Text "b" , MAlignPoint ]
-                 , Text "c"
-                 ]
-               , [ MGroup Nothing Nothing [ MAlignPoint , Text "d" , MAlignPoint ]
-                 , Text "e"
-                 ]
-               ]
-           ])
-    ]
-, SoftBreak
-, Equation
-    True
-    [ Code
-        "test/typ/math/matrix-alignment-05.typ"
-        ( line 5 , column 3 )
-        (FuncCall
-           (Ident (Identifier "mat"))
-           [ ArrayArg
-               [ [ MGroup
-                     Nothing
-                     Nothing
-                     [ MAlignPoint
-                     , MAlignPoint
-                     , MAlignPoint
-                     , Text "a"
-                     , Text "+"
-                     , Text "b"
-                     ]
-                 , Text "c"
-                 ]
-               , [ MGroup
-                     Nothing
-                     Nothing
-                     [ MAlignPoint , MAlignPoint , MAlignPoint , Text "d" ]
-                 , Text "e"
-                 ]
-               ]
-           ])
-    ]
-, SoftBreak
-, Equation
-    True
-    [ Code
-        "test/typ/math/matrix-alignment-05.typ"
-        ( line 6 , column 3 )
-        (FuncCall
-           (Ident (Identifier "mat"))
-           [ ArrayArg
-               [ [ MGroup
-                     Nothing
-                     Nothing
-                     [ Text "."
-                     , MAlignPoint
-                     , Text "a"
-                     , Text "+"
-                     , Text "b"
-                     , MAlignPoint
-                     , Text "."
-                     ]
-                 , Text "c"
-                 ]
-               , [ MGroup
-                     Nothing
-                     Nothing
-                     [ Code
-                         "test/typ/math/matrix-alignment-05.typ"
-                         ( line 6 , column 17 )
-                         (FieldAccess (Ident (Identifier "h")) (Ident (Identifier "dots")))
-                     , Text "."
-                     , Text "."
-                     , MAlignPoint
-                     , Text "d"
-                     , MAlignPoint
-                     , Code
-                         "test/typ/math/matrix-alignment-05.typ"
-                         ( line 6 , column 25 )
-                         (FieldAccess (Ident (Identifier "h")) (Ident (Identifier "dots")))
-                     , Text "."
-                     , Text "."
-                     ]
-                 , Text "e"
-                 ]
-               ]
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: math.mat(rows: (({ math.alignpoint(), 
-                                                        text(body: [a]), 
-                                                        text(body: [+]), 
-                                                        text(body: [b]) }, 
-                                                      text(body: [c])), 
-                                                     ({ math.alignpoint(), 
-                                                        text(body: [d]) }, 
-                                                      text(body: [e])))), 
-                               numbering: none), 
-                 text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: math.mat(rows: (({ math.alignpoint(), 
-                                                        text(body: [a]), 
-                                                        text(body: [+]), 
-                                                        text(body: [b]), 
-                                                        math.alignpoint() }, 
-                                                      text(body: [c])), 
-                                                     ({ math.alignpoint(), 
-                                                        text(body: [d]), 
-                                                        math.alignpoint() }, 
-                                                      text(body: [e])))), 
-                               numbering: none), 
-                 text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: math.mat(rows: (({ math.alignpoint(), 
-                                                        math.alignpoint(), 
-                                                        math.alignpoint(), 
-                                                        text(body: [a]), 
-                                                        text(body: [+]), 
-                                                        text(body: [b]) }, 
-                                                      text(body: [c])), 
-                                                     ({ math.alignpoint(), 
-                                                        math.alignpoint(), 
-                                                        math.alignpoint(), 
-                                                        text(body: [d]) }, 
-                                                      text(body: [e])))), 
-                               numbering: none), 
-                 text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: math.mat(rows: (({ text(body: [.]), 
-                                                        math.alignpoint(), 
-                                                        text(body: [a]), 
-                                                        text(body: [+]), 
-                                                        text(body: [b]), 
-                                                        math.alignpoint(), 
-                                                        text(body: [.]) }, 
-                                                      text(body: [c])), 
-                                                     ({ text(body: […]), 
-                                                        text(body: [.]), 
-                                                        text(body: [.]), 
-                                                        math.alignpoint(), 
-                                                        text(body: [d]), 
-                                                        math.alignpoint(), 
-                                                        text(body: […]), 
-                                                        text(body: [.]), 
-                                                        text(body: [.]) }, 
-                                                      text(body: [e])))), 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/matrix-alignment-06.out b/test/out/math/matrix-alignment-06.out
deleted file mode 100644
--- a/test/out/math/matrix-alignment-06.out
+++ /dev/null
@@ -1,321 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/matrix-alignment-06.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/matrix-alignment-06.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/matrix-alignment-06.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Code
-        "test/typ/math/matrix-alignment-06.typ"
-        ( line 3 , column 3 )
-        (FuncCall
-           (Ident (Identifier "mat"))
-           [ ArrayArg
-               [ [ MGroup
-                     Nothing
-                     Nothing
-                     [ Code
-                         "test/typ/math/matrix-alignment-06.typ"
-                         ( line 3 , column 7 )
-                         (Ident (Identifier "minus"))
-                     , Text "1"
-                     ]
-                 , Text "1"
-                 , Text "1"
-                 ]
-               , [ Text "1"
-                 , MGroup
-                     Nothing
-                     Nothing
-                     [ Code
-                         "test/typ/math/matrix-alignment-06.typ"
-                         ( line 3 , column 20 )
-                         (Ident (Identifier "minus"))
-                     , Text "1"
-                     ]
-                 , Text "1"
-                 ]
-               , [ Text "1"
-                 , Text "1"
-                 , MGroup
-                     Nothing
-                     Nothing
-                     [ Code
-                         "test/typ/math/matrix-alignment-06.typ"
-                         ( line 3 , column 33 )
-                         (Ident (Identifier "minus"))
-                     , Text "1"
-                     ]
-                 ]
-               ]
-           ])
-    ]
-, SoftBreak
-, Equation
-    True
-    [ Code
-        "test/typ/math/matrix-alignment-06.typ"
-        ( line 4 , column 3 )
-        (FuncCall
-           (Ident (Identifier "mat"))
-           [ ArrayArg
-               [ [ MGroup
-                     Nothing
-                     Nothing
-                     [ Code
-                         "test/typ/math/matrix-alignment-06.typ"
-                         ( line 4 , column 7 )
-                         (Ident (Identifier "minus"))
-                     , Text "1"
-                     , MAlignPoint
-                     ]
-                 , MGroup Nothing Nothing [ Text "1" , MAlignPoint ]
-                 , MGroup Nothing Nothing [ Text "1" , MAlignPoint ]
-                 ]
-               , [ MGroup Nothing Nothing [ Text "1" , MAlignPoint ]
-                 , MGroup
-                     Nothing
-                     Nothing
-                     [ Code
-                         "test/typ/math/matrix-alignment-06.typ"
-                         ( line 4 , column 24 )
-                         (Ident (Identifier "minus"))
-                     , Text "1"
-                     , MAlignPoint
-                     ]
-                 , MGroup Nothing Nothing [ Text "1" , MAlignPoint ]
-                 ]
-               , [ MGroup Nothing Nothing [ Text "1" , MAlignPoint ]
-                 , MGroup Nothing Nothing [ Text "1" , MAlignPoint ]
-                 , MGroup
-                     Nothing
-                     Nothing
-                     [ Code
-                         "test/typ/math/matrix-alignment-06.typ"
-                         ( line 4 , column 41 )
-                         (Ident (Identifier "minus"))
-                     , Text "1"
-                     , MAlignPoint
-                     ]
-                 ]
-               ]
-           ])
-    ]
-, SoftBreak
-, Equation
-    True
-    [ Code
-        "test/typ/math/matrix-alignment-06.typ"
-        ( line 5 , column 3 )
-        (FuncCall
-           (Ident (Identifier "mat"))
-           [ ArrayArg
-               [ [ MGroup
-                     Nothing
-                     Nothing
-                     [ Code
-                         "test/typ/math/matrix-alignment-06.typ"
-                         ( line 5 , column 7 )
-                         (Ident (Identifier "minus"))
-                     , Text "1"
-                     , MAlignPoint
-                     ]
-                 , MGroup Nothing Nothing [ Text "1" , MAlignPoint ]
-                 , MGroup Nothing Nothing [ Text "1" , MAlignPoint ]
-                 ]
-               , [ Text "1"
-                 , MGroup
-                     Nothing
-                     Nothing
-                     [ Code
-                         "test/typ/math/matrix-alignment-06.typ"
-                         ( line 5 , column 23 )
-                         (Ident (Identifier "minus"))
-                     , Text "1"
-                     ]
-                 , Text "1"
-                 ]
-               , [ Text "1"
-                 , Text "1"
-                 , MGroup
-                     Nothing
-                     Nothing
-                     [ Code
-                         "test/typ/math/matrix-alignment-06.typ"
-                         ( line 5 , column 36 )
-                         (Ident (Identifier "minus"))
-                     , Text "1"
-                     ]
-                 ]
-               ]
-           ])
-    ]
-, SoftBreak
-, Equation
-    True
-    [ Code
-        "test/typ/math/matrix-alignment-06.typ"
-        ( line 6 , column 3 )
-        (FuncCall
-           (Ident (Identifier "mat"))
-           [ ArrayArg
-               [ [ MGroup
-                     Nothing
-                     Nothing
-                     [ MAlignPoint
-                     , Code
-                         "test/typ/math/matrix-alignment-06.typ"
-                         ( line 6 , column 8 )
-                         (Ident (Identifier "minus"))
-                     , Text "1"
-                     ]
-                 , MGroup Nothing Nothing [ MAlignPoint , Text "1" ]
-                 , MGroup Nothing Nothing [ MAlignPoint , Text "1" ]
-                 ]
-               , [ Text "1"
-                 , MGroup
-                     Nothing
-                     Nothing
-                     [ Code
-                         "test/typ/math/matrix-alignment-06.typ"
-                         ( line 6 , column 23 )
-                         (Ident (Identifier "minus"))
-                     , Text "1"
-                     ]
-                 , Text "1"
-                 ]
-               , [ Text "1"
-                 , Text "1"
-                 , MGroup
-                     Nothing
-                     Nothing
-                     [ Code
-                         "test/typ/math/matrix-alignment-06.typ"
-                         ( line 6 , column 36 )
-                         (Ident (Identifier "minus"))
-                     , Text "1"
-                     ]
-                 ]
-               ]
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: math.mat(rows: (({ text(body: [−]), 
-                                                        text(body: [1]) }, 
-                                                      text(body: [1]), 
-                                                      text(body: [1])), 
-                                                     (text(body: [1]), 
-                                                      { text(body: [−]), 
-                                                        text(body: [1]) }, 
-                                                      text(body: [1])), 
-                                                     (text(body: [1]), 
-                                                      text(body: [1]), 
-                                                      { text(body: [−]), 
-                                                        text(body: [1]) }))), 
-                               numbering: none), 
-                 text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: math.mat(rows: (({ text(body: [−]), 
-                                                        text(body: [1]), 
-                                                        math.alignpoint() }, 
-                                                      { text(body: [1]), 
-                                                        math.alignpoint() }, 
-                                                      { text(body: [1]), 
-                                                        math.alignpoint() }), 
-                                                     ({ text(body: [1]), 
-                                                        math.alignpoint() }, 
-                                                      { text(body: [−]), 
-                                                        text(body: [1]), 
-                                                        math.alignpoint() }, 
-                                                      { text(body: [1]), 
-                                                        math.alignpoint() }), 
-                                                     ({ text(body: [1]), 
-                                                        math.alignpoint() }, 
-                                                      { text(body: [1]), 
-                                                        math.alignpoint() }, 
-                                                      { text(body: [−]), 
-                                                        text(body: [1]), 
-                                                        math.alignpoint() }))), 
-                               numbering: none), 
-                 text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: math.mat(rows: (({ text(body: [−]), 
-                                                        text(body: [1]), 
-                                                        math.alignpoint() }, 
-                                                      { text(body: [1]), 
-                                                        math.alignpoint() }, 
-                                                      { text(body: [1]), 
-                                                        math.alignpoint() }), 
-                                                     (text(body: [1]), 
-                                                      { text(body: [−]), 
-                                                        text(body: [1]) }, 
-                                                      text(body: [1])), 
-                                                     (text(body: [1]), 
-                                                      text(body: [1]), 
-                                                      { text(body: [−]), 
-                                                        text(body: [1]) }))), 
-                               numbering: none), 
-                 text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: math.mat(rows: (({ math.alignpoint(), 
-                                                        text(body: [−]), 
-                                                        text(body: [1]) }, 
-                                                      { math.alignpoint(), 
-                                                        text(body: [1]) }, 
-                                                      { math.alignpoint(), 
-                                                        text(body: [1]) }), 
-                                                     (text(body: [1]), 
-                                                      { text(body: [−]), 
-                                                        text(body: [1]) }, 
-                                                      text(body: [1])), 
-                                                     (text(body: [1]), 
-                                                      text(body: [1]), 
-                                                      { text(body: [−]), 
-                                                        text(body: [1]) }))), 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/multiline-00.out b/test/out/math/multiline-00.out
deleted file mode 100644
--- a/test/out/math/multiline-00.out
+++ /dev/null
@@ -1,101 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/multiline-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/multiline-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/multiline-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Text "x"
-    , MAlignPoint
-    , Text "="
-    , Text "x"
-    , Text "+"
-    , Text "y"
-    , HardBreak
-    , MAlignPoint
-    , Text "="
-    , Text "x"
-    , Text "+"
-    , Text "2"
-    , Text "z"
-    , HardBreak
-    , MAlignPoint
-    , Text "="
-    , Code
-        "test/typ/math/multiline-00.typ"
-        ( line 5 , column 8 )
-        (Ident (Identifier "sum"))
-    , Text "x"
-    , Code
-        "test/typ/math/multiline-00.typ"
-        ( line 5 , column 14 )
-        (Ident (Identifier "dot"))
-    , Text "2"
-    , Text "z"
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [x]), 
-                                       math.alignpoint(), 
-                                       text(body: [=]), 
-                                       text(body: [x]), 
-                                       text(body: [+]), 
-                                       text(body: [y]), 
-                                       linebreak(), 
-                                       math.alignpoint(), 
-                                       text(body: [=]), 
-                                       text(body: [x]), 
-                                       text(body: [+]), 
-                                       text(body: [2]), 
-                                       text(body: [z]), 
-                                       linebreak(), 
-                                       math.alignpoint(), 
-                                       text(body: [=]), 
-                                       text(body: [∑]), 
-                                       text(body: [x]), 
-                                       text(body: [⋅]), 
-                                       text(body: [2]), 
-                                       text(body: [z]) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/multiline-01.out b/test/out/math/multiline-01.out
deleted file mode 100644
--- a/test/out/math/multiline-01.out
+++ /dev/null
@@ -1,112 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/multiline-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/multiline-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/multiline-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Text "x"
-    , Text "+"
-    , Text "1"
-    , MAlignPoint
-    , Text "="
-    , MAttach Nothing (Just (Text "2")) (Text "a")
-    , Text "+"
-    , MAttach Nothing (Just (Text "2")) (Text "b")
-    , HardBreak
-    , Text "y"
-    , MAlignPoint
-    , Text "="
-    , Text "a"
-    , Text "+"
-    , MAttach Nothing (Just (Text "2")) (Text "b")
-    , HardBreak
-    , Text "z"
-    , MAlignPoint
-    , Text "="
-    , Code
-        "test/typ/math/multiline-01.typ"
-        ( line 5 , column 12 )
-        (Ident (Identifier "alpha"))
-    , Code
-        "test/typ/math/multiline-01.typ"
-        ( line 5 , column 18 )
-        (Ident (Identifier "dot"))
-    , Code
-        "test/typ/math/multiline-01.typ"
-        ( line 5 , column 22 )
-        (Ident (Identifier "beta"))
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [x]), 
-                                       text(body: [+]), 
-                                       text(body: [1]), 
-                                       math.alignpoint(), 
-                                       text(body: [=]), 
-                                       math.attach(b: none, 
-                                                   base: text(body: [a]), 
-                                                   t: text(body: [2])), 
-                                       text(body: [+]), 
-                                       math.attach(b: none, 
-                                                   base: text(body: [b]), 
-                                                   t: text(body: [2])), 
-                                       linebreak(), 
-                                       text(body: [y]), 
-                                       math.alignpoint(), 
-                                       text(body: [=]), 
-                                       text(body: [a]), 
-                                       text(body: [+]), 
-                                       math.attach(b: none, 
-                                                   base: text(body: [b]), 
-                                                   t: text(body: [2])), 
-                                       linebreak(), 
-                                       text(body: [z]), 
-                                       math.alignpoint(), 
-                                       text(body: [=]), 
-                                       text(body: [α]), 
-                                       text(body: [⋅]), 
-                                       text(body: [β]) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/multiline-02.out b/test/out/math/multiline-02.out
deleted file mode 100644
--- a/test/out/math/multiline-02.out
+++ /dev/null
@@ -1,91 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/multiline-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/multiline-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/multiline-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Text "a"
-    , Text "+"
-    , Text "b"
-    , MAlignPoint
-    , Text "="
-    , Text "2"
-    , Text "+"
-    , Text "3"
-    , MAlignPoint
-    , Text "="
-    , Text "5"
-    , HardBreak
-    , Text "b"
-    , MAlignPoint
-    , Text "="
-    , Text "c"
-    , MAlignPoint
-    , Text "="
-    , Text "3"
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [a]), 
-                                       text(body: [+]), 
-                                       text(body: [b]), 
-                                       math.alignpoint(), 
-                                       text(body: [=]), 
-                                       text(body: [2]), 
-                                       text(body: [+]), 
-                                       text(body: [3]), 
-                                       math.alignpoint(), 
-                                       text(body: [=]), 
-                                       text(body: [5]), 
-                                       linebreak(), 
-                                       text(body: [b]), 
-                                       math.alignpoint(), 
-                                       text(body: [=]), 
-                                       text(body: [c]), 
-                                       math.alignpoint(), 
-                                       text(body: [=]), 
-                                       text(body: [3]) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/multiline-03.out b/test/out/math/multiline-03.out
deleted file mode 100644
--- a/test/out/math/multiline-03.out
+++ /dev/null
@@ -1,90 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/multiline-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/multiline-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/multiline-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Text "f"
-    , Code
-        "test/typ/math/multiline-03.typ"
-        ( line 3 , column 5 )
-        (FieldAccess
-           (Ident (Identifier "eq")) (Ident (Identifier "colon")))
-    , Code
-        "test/typ/math/multiline-03.typ"
-        ( line 3 , column 8 )
-        (FuncCall
-           (Ident (Identifier "cases"))
-           [ BlockArg
-               [ Text "1"
-               , Text "+"
-               , Text "2"
-               , MAlignPoint
-               , Text "iff "
-               , MAlignPoint
-               , Text "x"
-               ]
-           , BlockArg
-               [ Text "3" , MAlignPoint , Text "if " , MAlignPoint , Text "y" ]
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [f]), 
-                                       text(body: [≔]), 
-                                       math.cases(children: ({ text(body: [1]), 
-                                                               text(body: [+]), 
-                                                               text(body: [2]), 
-                                                               math.alignpoint(), 
-                                                               text(body: [iff ]), 
-                                                               math.alignpoint(), 
-                                                               text(body: [x]) }, 
-                                                             { text(body: [3]), 
-                                                               math.alignpoint(), 
-                                                               text(body: [if ]), 
-                                                               math.alignpoint(), 
-                                                               text(body: [y]) })) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/multiline-04.out b/test/out/math/multiline-04.out
deleted file mode 100644
--- a/test/out/math/multiline-04.out
+++ /dev/null
@@ -1,79 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/multiline-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/multiline-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/multiline-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Text " abc "
-    , MAlignPoint
-    , Text "="
-    , Text "c"
-    , HardBreak
-    , MAlignPoint
-    , Text "="
-    , Text "d"
-    , Text "+"
-    , Text "1"
-    , HardBreak
-    , Text "="
-    , Text "x"
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [ abc ]), 
-                                       math.alignpoint(), 
-                                       text(body: [=]), 
-                                       text(body: [c]), 
-                                       linebreak(), 
-                                       math.alignpoint(), 
-                                       text(body: [=]), 
-                                       text(body: [d]), 
-                                       text(body: [+]), 
-                                       text(body: [1]), 
-                                       linebreak(), 
-                                       text(body: [=]), 
-                                       text(body: [x]) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/multiline-05.out b/test/out/math/multiline-05.out
deleted file mode 100644
--- a/test/out/math/multiline-05.out
+++ /dev/null
@@ -1,112 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/multiline-05.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/multiline-05.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/multiline-05.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ MAttach
-        (Just
-           (MGroup
-              Nothing
-              Nothing
-              [ Text "n"
-              , Code
-                  "test/typ/math/multiline-05.typ"
-                  ( line 3 , column 10 )
-                  (Ident (Identifier "in"))
-              , Code
-                  "test/typ/math/multiline-05.typ"
-                  ( line 3 , column 13 )
-                  (Ident (Identifier "NN"))
-              , HardBreak
-              , Text "n"
-              , Code
-                  "test/typ/math/multiline-05.typ"
-                  ( line 3 , column 20 )
-                  (FieldAccess (Ident (Identifier "eq")) (Ident (Identifier "lt")))
-              , Text "5"
-              ]))
-        Nothing
-        (Code
-           "test/typ/math/multiline-05.typ"
-           ( line 3 , column 3 )
-           (Ident (Identifier "sum")))
-    , Text "n"
-    , Text "="
-    , MFrac
-        (MGroup
-           (Just "(")
-           (Just ")")
-           [ Text "5"
-           , MGroup (Just "(") (Just ")") [ Text "5" , Text "+" , Text "1" ]
-           ])
-        (Text "2")
-    , Text "="
-    , Text "15"
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { math.attach(b: { text(body: [n]), 
-                                                        text(body: [∈]), 
-                                                        text(body: [ℕ]), 
-                                                        linebreak(), 
-                                                        text(body: [n]), 
-                                                        text(body: [≤]), 
-                                                        text(body: [5]) }, 
-                                                   base: text(body: [∑]), 
-                                                   t: none), 
-                                       text(body: [n]), 
-                                       text(body: [=]), 
-                                       math.frac(denom: text(body: [2]), 
-                                                 num: { text(body: [5]), 
-                                                        math.lr(body: ({ [(], 
-                                                                         text(body: [5]), 
-                                                                         text(body: [+]), 
-                                                                         text(body: [1]), 
-                                                                         [)] })) }), 
-                                       text(body: [=]), 
-                                       text(body: [15]) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/multiline-06.out b/test/out/math/multiline-06.out
deleted file mode 100644
--- a/test/out/math/multiline-06.out
+++ /dev/null
@@ -1,67 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/multiline-06.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/multiline-06.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/multiline-06.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True [ Text " abc " , MAlignPoint , Text "=" , Text "c" ]
-, SoftBreak
-, Text "No"
-, Space
-, Text "trailing"
-, Space
-, Text "line"
-, Space
-, Text "break"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [ abc ]), 
-                                       math.alignpoint(), 
-                                       text(body: [=]), 
-                                       text(body: [c]) }, 
-                               numbering: none), 
-                 text(body: [
-No trailing line break.]), 
-                 parbreak() })
diff --git a/test/out/math/multiline-07.out b/test/out/math/multiline-07.out
deleted file mode 100644
--- a/test/out/math/multiline-07.out
+++ /dev/null
@@ -1,69 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/multiline-07.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/multiline-07.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/multiline-07.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Text " abc " , MAlignPoint , Text "=" , Text "c" , HardBreak ]
-, SoftBreak
-, Text "One"
-, Space
-, Text "trailing"
-, Space
-, Text "line"
-, Space
-, Text "break"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [ abc ]), 
-                                       math.alignpoint(), 
-                                       text(body: [=]), 
-                                       text(body: [c]), 
-                                       linebreak() }, 
-                               numbering: none), 
-                 text(body: [
-One trailing line break.]), 
-                 parbreak() })
diff --git a/test/out/math/multiline-08.out b/test/out/math/multiline-08.out
deleted file mode 100644
--- a/test/out/math/multiline-08.out
+++ /dev/null
@@ -1,78 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/multiline-08.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/multiline-08.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/multiline-08.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Text " abc "
-    , MAlignPoint
-    , Text "="
-    , Text "c"
-    , HardBreak
-    , HardBreak
-    , HardBreak
-    ]
-, SoftBreak
-, Text "Multiple"
-, Space
-, Text "trailing"
-, Space
-, Text "line"
-, Space
-, Text "breaks"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [ abc ]), 
-                                       math.alignpoint(), 
-                                       text(body: [=]), 
-                                       text(body: [c]), 
-                                       linebreak(), 
-                                       linebreak(), 
-                                       linebreak() }, 
-                               numbering: none), 
-                 text(body: [
-Multiple trailing line breaks.]), 
-                 parbreak() })
diff --git a/test/out/math/numbering-00.out b/test/out/math/numbering-00.out
deleted file mode 100644
--- a/test/out/math/numbering-00.out
+++ /dev/null
@@ -1,189 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/numbering-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/numbering-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/numbering-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/math/numbering-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 150.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/math/numbering-00.typ"
-    ( line 3 , column 2 )
-    (Set
-       (FieldAccess
-          (Ident (Identifier "equation")) (Ident (Identifier "math")))
-       [ KeyValArg (Identifier "numbering") (Literal (String "(I)")) ])
-, ParBreak
-, Text "We"
-, Space
-, Text "define"
-, Space
-, Equation False [ Text "x" ]
-, Space
-, Text "in"
-, Space
-, Text "preparation"
-, Space
-, Text "of"
-, Space
-, Ref "fib" (Literal Auto)
-, Text ":"
-, SoftBreak
-, Equation
-    True
-    [ Code
-        "test/typ/math/numbering-00.typ"
-        ( line 6 , column 3 )
-        (FieldAccess (Ident (Identifier "alt")) (Ident (Identifier "phi")))
-    , Code
-        "test/typ/math/numbering-00.typ"
-        ( line 6 , column 11 )
-        (FieldAccess
-           (Ident (Identifier "eq")) (Ident (Identifier "colon")))
-    , MFrac
-        (MGroup
-           (Just "(")
-           (Just ")")
-           [ Text "1"
-           , Text "+"
-           , Code
-               "test/typ/math/numbering-00.typ"
-               ( line 6 , column 19 )
-               (FuncCall (Ident (Identifier "sqrt")) [ BlockArg [ Text "5" ] ])
-           ])
-        (Text "2")
-    ]
-, Space
-, Code
-    "test/typ/math/numbering-00.typ"
-    ( line 6 , column 34 )
-    (Label "ratio")
-, ParBreak
-, Text "With"
-, Space
-, Ref "ratio" (Literal Auto)
-, Text ","
-, Space
-, Text "we"
-, Space
-, Text "get"
-, SoftBreak
-, Equation
-    True
-    [ MAttach (Just (Text "n")) Nothing (Text "F")
-    , Text "="
-    , Code
-        "test/typ/math/numbering-00.typ"
-        ( line 9 , column 9 )
-        (FuncCall
-           (Ident (Identifier "round"))
-           [ BlockArg
-               [ MFrac
-                   (Text "1")
-                   (Code
-                      "test/typ/math/numbering-00.typ"
-                      ( line 9 , column 19 )
-                      (FuncCall (Ident (Identifier "sqrt")) [ BlockArg [ Text "5" ] ]))
-               , MAttach
-                   Nothing
-                   (Just (Text "n"))
-                   (Code
-                      "test/typ/math/numbering-00.typ"
-                      ( line 9 , column 27 )
-                      (FieldAccess
-                         (Ident (Identifier "alt")) (Ident (Identifier "phi"))))
-               ]
-           ])
-    ]
-, Space
-, Code
-    "test/typ/math/numbering-00.typ"
-    ( line 9 , column 40 )
-    (Label "fib")
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [We define ]), 
-                 math.equation(block: false, 
-                               body: text(body: [x]), 
-                               numbering: none), 
-                 text(body: [ in preparation of ]), 
-                 ref(supplement: auto, 
-                     target: <fib>), 
-                 text(body: [:
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [ϕ]), 
-                                       text(body: [≔]), 
-                                       math.frac(denom: text(body: [2]), 
-                                                 num: { text(body: [1]), 
-                                                        text(body: [+]), 
-                                                        math.sqrt(radicand: text(body: [5])) }) }, 
-                               numbering: none), 
-                 text(body: [ ]), 
-                 <ratio>, 
-                 parbreak(), 
-                 text(body: [With ]), 
-                 ref(supplement: auto, 
-                     target: <ratio>), 
-                 text(body: [, we get
-]), 
-                 math.equation(block: true, 
-                               body: { math.attach(b: text(body: [n]), 
-                                                   base: text(body: [F]), 
-                                                   t: none), 
-                                       text(body: [=]), 
-                                       math.round(body: { math.frac(denom: math.sqrt(radicand: text(body: [5])), 
-                                                                    num: text(body: [1])), 
-                                                          math.attach(b: none, 
-                                                                      base: text(body: [ϕ]), 
-                                                                      t: text(body: [n])) }) }, 
-                               numbering: none), 
-                 text(body: [ ]), 
-                 <fib>, 
-                 parbreak() })
diff --git a/test/out/math/op-00.out b/test/out/math/op-00.out
deleted file mode 100644
--- a/test/out/math/op-00.out
+++ /dev/null
@@ -1,85 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/op-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/op-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/op-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ MAttach
-        (Just
-           (MGroup
-              Nothing
-              Nothing
-              [ Text "1"
-              , Code
-                  "test/typ/math/op-00.typ"
-                  ( line 3 , column 9 )
-                  (FieldAccess (Ident (Identifier "eq")) (Ident (Identifier "lt")))
-              , Text "n"
-              , Code
-                  "test/typ/math/op-00.typ"
-                  ( line 3 , column 12 )
-                  (FieldAccess (Ident (Identifier "eq")) (Ident (Identifier "lt")))
-              , Text "m"
-              ]))
-        Nothing
-        (Code
-           "test/typ/math/op-00.typ"
-           ( line 3 , column 3 )
-           (Ident (Identifier "max")))
-    , Text "n"
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { math.attach(b: { text(body: [1]), 
-                                                        text(body: [≤]), 
-                                                        text(body: [n]), 
-                                                        text(body: [≤]), 
-                                                        text(body: [m]) }, 
-                                                   base: math.op(limits: true, 
-                                                                 text: "max"), 
-                                                   t: none), 
-                                       text(body: [n]) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/op-01.out b/test/out/math/op-01.out
deleted file mode 100644
--- a/test/out/math/op-01.out
+++ /dev/null
@@ -1,110 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/op-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/op-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/op-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ MAlignPoint
-    , Code
-        "test/typ/math/op-01.typ"
-        ( line 3 , column 5 )
-        (Ident (Identifier "sin"))
-    , Text "x"
-    , Text "+"
-    , MAttach
-        (Just (Text "2"))
-        Nothing
-        (Code
-           "test/typ/math/op-01.typ"
-           ( line 3 , column 13 )
-           (Ident (Identifier "log")))
-    , Text "x"
-    , HardBreak
-    , Text "="
-    , MAlignPoint
-    , Code
-        "test/typ/math/op-01.typ"
-        ( line 4 , column 5 )
-        (FuncCall (Ident (Identifier "sin")) [ BlockArg [ Text "x" ] ])
-    , Text "+"
-    , MAttach
-        (Just (Text "2"))
-        Nothing
-        (Code
-           "test/typ/math/op-01.typ"
-           ( line 4 , column 14 )
-           (Ident (Identifier "log")))
-    , MGroup (Just "(") (Just ")") [ Text "x" ]
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { math.alignpoint(), 
-                                       math.op(limits: false, 
-                                               text: "sin"), 
-                                       text(body: [x]), 
-                                       text(body: [+]), 
-                                       math.attach(b: text(body: [2]), 
-                                                   base: math.op(limits: false, 
-                                                                 text: "log"), 
-                                                   t: none), 
-                                       text(body: [x]), 
-                                       linebreak(), 
-                                       text(body: [=]), 
-                                       math.alignpoint(), 
-                                       math.op(limits: false, 
-                                               text: "sin"), 
-                                       text(body: [(]), 
-                                       text(body: [x]), 
-                                       text(body: [)]), 
-                                       text(body: [+]), 
-                                       math.attach(b: text(body: [2]), 
-                                                   base: math.op(limits: false, 
-                                                                 text: "log"), 
-                                                   t: none), 
-                                       math.lr(body: ({ [(], 
-                                                        text(body: [x]), 
-                                                        [)] })) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/op-02.out b/test/out/math/op-02.out
deleted file mode 100644
--- a/test/out/math/op-02.out
+++ /dev/null
@@ -1,153 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/op-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/op-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/op-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/math/op-02.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg
-           (Identifier "font") (Literal (String "New Computer Modern"))
-       ])
-, SoftBreak
-, Text "Discuss"
-, Space
-, Equation
-    False
-    [ MAttach
-        (Just
-           (MGroup
-              Nothing
-              Nothing
-              [ Text "n"
-              , Code
-                  "test/typ/math/op-02.typ"
-                  ( line 4 , column 16 )
-                  (FieldAccess (Ident (Identifier "r")) (Ident (Identifier "arrow")))
-              , Code
-                  "test/typ/math/op-02.typ"
-                  ( line 4 , column 18 )
-                  (Ident (Identifier "oo"))
-              ]))
-        Nothing
-        (Code
-           "test/typ/math/op-02.typ"
-           ( line 4 , column 10 )
-           (Ident (Identifier "lim")))
-    , MFrac (Text "1") (Text "n")
-    ]
-, Space
-, Text "now"
-, Text "."
-, SoftBreak
-, Equation
-    True
-    [ MAttach
-        (Just
-           (MGroup
-              Nothing
-              Nothing
-              [ Text "n"
-              , Code
-                  "test/typ/math/op-02.typ"
-                  ( line 5 , column 9 )
-                  (FieldAccess (Ident (Identifier "r")) (Ident (Identifier "arrow")))
-              , Code
-                  "test/typ/math/op-02.typ"
-                  ( line 5 , column 11 )
-                  (Ident (Identifier "infinity"))
-              ]))
-        Nothing
-        (Code
-           "test/typ/math/op-02.typ"
-           ( line 5 , column 3 )
-           (Ident (Identifier "lim")))
-    , MFrac (Text "1") (Text "n")
-    , Text "="
-    , Text "0"
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-Discuss ], 
-                      font: "New Computer Modern"), 
-                 math.equation(block: false, 
-                               body: { math.attach(b: { text(body: [n], 
-                                                             font: "New Computer Modern"), 
-                                                        text(body: [→], 
-                                                             font: "New Computer Modern"), 
-                                                        text(body: [∞], 
-                                                             font: "New Computer Modern") }, 
-                                                   base: math.op(limits: true, 
-                                                                 text: "lim"), 
-                                                   t: none), 
-                                       math.frac(denom: text(body: [n], 
-                                                             font: "New Computer Modern"), 
-                                                 num: text(body: [1], 
-                                                           font: "New Computer Modern")) }, 
-                               numbering: none), 
-                 text(body: [ now.
-], 
-                      font: "New Computer Modern"), 
-                 math.equation(block: true, 
-                               body: { math.attach(b: { text(body: [n], 
-                                                             font: "New Computer Modern"), 
-                                                        text(body: [→], 
-                                                             font: "New Computer Modern"), 
-                                                        text(body: [∞], 
-                                                             font: "New Computer Modern") }, 
-                                                   base: math.op(limits: true, 
-                                                                 text: "lim"), 
-                                                   t: none), 
-                                       math.frac(denom: text(body: [n], 
-                                                             font: "New Computer Modern"), 
-                                                 num: text(body: [1], 
-                                                           font: "New Computer Modern")), 
-                                       text(body: [=], 
-                                            font: "New Computer Modern"), 
-                                       text(body: [0], 
-                                            font: "New Computer Modern") }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/op-03.out b/test/out/math/op-03.out
deleted file mode 100644
--- a/test/out/math/op-03.out
+++ /dev/null
@@ -1,115 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/op-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/op-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/op-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ MAttach
-        (Just
-           (MGroup
-              Nothing
-              Nothing
-              [ Text "x"
-              , Code
-                  "test/typ/math/op-03.typ"
-                  ( line 3 , column 32 )
-                  (FieldAccess
-                     (Ident (Identifier "eq")) (Ident (Identifier "colon")))
-              , Text "1"
-              ]))
-        Nothing
-        (Code
-           "test/typ/math/op-03.typ"
-           ( line 3 , column 3 )
-           (FuncCall
-              (Ident (Identifier "op"))
-              [ BlockArg [ Text "myop" ]
-              , KeyValArg (Identifier "limits") (Literal (Boolean False))
-              ]))
-    , Text "x"
-    , HardBreak
-    , MAttach
-        (Just
-           (MGroup
-              Nothing
-              Nothing
-              [ Text "x"
-              , Code
-                  "test/typ/math/op-03.typ"
-                  ( line 4 , column 31 )
-                  (FieldAccess
-                     (Ident (Identifier "eq")) (Ident (Identifier "colon")))
-              , Text "1"
-              ]))
-        Nothing
-        (Code
-           "test/typ/math/op-03.typ"
-           ( line 4 , column 3 )
-           (FuncCall
-              (Ident (Identifier "op"))
-              [ BlockArg [ Text "myop" ]
-              , KeyValArg (Identifier "limits") (Literal (Boolean True))
-              ]))
-    , Text "x"
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { math.attach(b: { text(body: [x]), 
-                                                        text(body: [≔]), 
-                                                        text(body: [1]) }, 
-                                                   base: math.op(limits: false, 
-                                                                 text: text(body: [myop])), 
-                                                   t: none), 
-                                       text(body: [x]), 
-                                       linebreak(), 
-                                       math.attach(b: { text(body: [x]), 
-                                                        text(body: [≔]), 
-                                                        text(body: [1]) }, 
-                                                   base: math.op(limits: true, 
-                                                                 text: text(body: [myop])), 
-                                                   t: none), 
-                                       text(body: [x]) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/op-04.out b/test/out/math/op-04.out
deleted file mode 100644
--- a/test/out/math/op-04.out
+++ /dev/null
@@ -1,78 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/op-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/op-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/op-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ MAttach
-        (Just (Text "x"))
-        Nothing
-        (Code
-           "test/typ/math/op-04.typ"
-           ( line 3 , column 3 )
-           (FuncCall
-              (Ident (Identifier "bold"))
-              [ BlockArg
-                  [ Code
-                      "test/typ/math/op-04.typ"
-                      ( line 3 , column 8 )
-                      (FuncCall
-                         (Ident (Identifier "op"))
-                         [ BlockArg [ Text "bold" ]
-                         , KeyValArg (Identifier "limits") (Literal (Boolean True))
-                         ])
-                  ]
-              ]))
-    , Text "y"
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { math.attach(b: text(body: [x]), 
-                                                   base: math.bold(body: math.op(limits: true, 
-                                                                                 text: text(body: [bold]))), 
-                                                   t: none), 
-                                       text(body: [y]) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/root-00.out b/test/out/math/root-00.out
deleted file mode 100644
--- a/test/out/math/root-00.out
+++ /dev/null
@@ -1,70 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/root-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/root-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/root-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    False
-    [ Text "A"
-    , Text "="
-    , Code
-        "test/typ/math/root-00.typ"
-        ( line 3 , column 6 )
-        (FuncCall
-           (Ident (Identifier "sqrt"))
-           [ BlockArg [ Text "x" , Text "+" , Text "y" ] ])
-    , Text "="
-    , Text "c"
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: false, 
-                               body: { text(body: [A]), 
-                                       text(body: [=]), 
-                                       math.sqrt(radicand: { text(body: [x]), 
-                                                             text(body: [+]), 
-                                                             text(body: [y]) }), 
-                                       text(body: [=]), 
-                                       text(body: [c]) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/root-01.out b/test/out/math/root-01.out
deleted file mode 100644
--- a/test/out/math/root-01.out
+++ /dev/null
@@ -1,149 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/root-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/root-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/root-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Code
-        "test/typ/math/root-01.typ"
-        ( line 3 , column 3 )
-        (FuncCall (Ident (Identifier "sqrt")) [ BlockArg [ Text "a" ] ])
-    , Code
-        "test/typ/math/root-01.typ"
-        ( line 3 , column 11 )
-        (Ident (Identifier "quad"))
-    , Code
-        "test/typ/math/root-01.typ"
-        ( line 4 , column 3 )
-        (FuncCall (Ident (Identifier "sqrt")) [ BlockArg [ Text "f" ] ])
-    , Code
-        "test/typ/math/root-01.typ"
-        ( line 4 , column 11 )
-        (Ident (Identifier "quad"))
-    , Code
-        "test/typ/math/root-01.typ"
-        ( line 5 , column 3 )
-        (FuncCall (Ident (Identifier "sqrt")) [ BlockArg [ Text "q" ] ])
-    , Code
-        "test/typ/math/root-01.typ"
-        ( line 5 , column 11 )
-        (Ident (Identifier "quad"))
-    , Code
-        "test/typ/math/root-01.typ"
-        ( line 6 , column 3 )
-        (FuncCall
-           (Ident (Identifier "sqrt"))
-           [ BlockArg [ MAttach Nothing (Just (Text "2")) (Text "a") ] ])
-    , HardBreak
-    , Code
-        "test/typ/math/root-01.typ"
-        ( line 7 , column 3 )
-        (FuncCall
-           (Ident (Identifier "sqrt"))
-           [ BlockArg [ MAttach (Just (Text "0")) Nothing (Text "n") ] ])
-    , Code
-        "test/typ/math/root-01.typ"
-        ( line 7 , column 13 )
-        (Ident (Identifier "quad"))
-    , Code
-        "test/typ/math/root-01.typ"
-        ( line 8 , column 3 )
-        (FuncCall
-           (Ident (Identifier "sqrt"))
-           [ BlockArg
-               [ MAttach Nothing (Just (MGroup Nothing Nothing [])) (Text "b") ]
-           ])
-    , Code
-        "test/typ/math/root-01.typ"
-        ( line 8 , column 14 )
-        (Ident (Identifier "quad"))
-    , Code
-        "test/typ/math/root-01.typ"
-        ( line 9 , column 3 )
-        (FuncCall
-           (Ident (Identifier "sqrt"))
-           [ BlockArg [ MAttach Nothing (Just (Text "2")) (Text "b") ] ])
-    , Code
-        "test/typ/math/root-01.typ"
-        ( line 9 , column 13 )
-        (Ident (Identifier "quad"))
-    , Code
-        "test/typ/math/root-01.typ"
-        ( line 10 , column 3 )
-        (FuncCall
-           (Ident (Identifier "sqrt"))
-           [ BlockArg
-               [ MAttach (Just (Text "1")) (Just (Text "2")) (Text "q") ]
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { math.sqrt(radicand: text(body: [a])), 
-                                       text(body: [ ]), 
-                                       math.sqrt(radicand: text(body: [f])), 
-                                       text(body: [ ]), 
-                                       math.sqrt(radicand: text(body: [q])), 
-                                       text(body: [ ]), 
-                                       math.sqrt(radicand: math.attach(b: none, 
-                                                                       base: text(body: [a]), 
-                                                                       t: text(body: [2]))), 
-                                       linebreak(), 
-                                       math.sqrt(radicand: math.attach(b: text(body: [0]), 
-                                                                       base: text(body: [n]), 
-                                                                       t: none)), 
-                                       text(body: [ ]), 
-                                       math.sqrt(radicand: math.attach(b: none, 
-                                                                       base: text(body: [b]), 
-                                                                       t: {  })), 
-                                       text(body: [ ]), 
-                                       math.sqrt(radicand: math.attach(b: none, 
-                                                                       base: text(body: [b]), 
-                                                                       t: text(body: [2]))), 
-                                       text(body: [ ]), 
-                                       math.sqrt(radicand: math.attach(b: text(body: [1]), 
-                                                                       base: text(body: [q]), 
-                                                                       t: text(body: [2]))) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/root-02.out b/test/out/math/root-02.out
deleted file mode 100644
--- a/test/out/math/root-02.out
+++ /dev/null
@@ -1,123 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/root-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/root-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/root-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Equation
-    False
-    [ Code
-        "test/typ/math/root-02.typ"
-        ( line 4 , column 2 )
-        (FuncCall (Ident (Identifier "sqrt")) [ BlockArg [ Text "x" ] ])
-    ]
-, SoftBreak
-, Equation
-    False
-    [ Code
-        "test/typ/math/root-02.typ"
-        ( line 5 , column 2 )
-        (FuncCall
-           (Ident (Identifier "root"))
-           [ BlockArg [ Text "2" ] , BlockArg [ Text "x" ] ])
-    ]
-, SoftBreak
-, Equation
-    False
-    [ Code
-        "test/typ/math/root-02.typ"
-        ( line 6 , column 2 )
-        (FuncCall
-           (Ident (Identifier "root"))
-           [ BlockArg [ Text "3" ] , BlockArg [ Text "x" ] ])
-    ]
-, SoftBreak
-, Equation
-    False
-    [ Code
-        "test/typ/math/root-02.typ"
-        ( line 7 , column 2 )
-        (FuncCall
-           (Ident (Identifier "root"))
-           [ BlockArg [ Text "4" ] , BlockArg [ Text "x" ] ])
-    ]
-, SoftBreak
-, Equation
-    False
-    [ Code
-        "test/typ/math/root-02.typ"
-        ( line 8 , column 2 )
-        (FuncCall
-           (Ident (Identifier "root"))
-           [ BlockArg [ Text "5" ] , BlockArg [ Text "x" ] ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: false, 
-                               body: math.sqrt(radicand: text(body: [x])), 
-                               numbering: none), 
-                 text(body: [
-]), 
-                 math.equation(block: false, 
-                               body: math.root(index: text(body: [2]), 
-                                               radicand: text(body: [x])), 
-                               numbering: none), 
-                 text(body: [
-]), 
-                 math.equation(block: false, 
-                               body: math.root(index: text(body: [3]), 
-                                               radicand: text(body: [x])), 
-                               numbering: none), 
-                 text(body: [
-]), 
-                 math.equation(block: false, 
-                               body: math.root(index: text(body: [4]), 
-                                               radicand: text(body: [x])), 
-                               numbering: none), 
-                 text(body: [
-]), 
-                 math.equation(block: false, 
-                               body: math.root(index: text(body: [5]), 
-                                               radicand: text(body: [x])), 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/root-03.out b/test/out/math/root-03.out
deleted file mode 100644
--- a/test/out/math/root-03.out
+++ /dev/null
@@ -1,216 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/root-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/root-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/root-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Code
-        "test/typ/math/root-03.typ"
-        ( line 3 , column 3 )
-        (FuncCall
-           (Ident (Identifier "sqrt"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/root-03.typ"
-                   ( line 3 , column 8 )
-                   (FieldAccess
-                      (Ident (Identifier "l"))
-                      (FieldAccess
-                         (Ident (Identifier "double")) (Ident (Identifier "bracket"))))
-               , Text "x"
-               , MAttach
-                   Nothing
-                   (Just (Text "2"))
-                   (Code
-                      "test/typ/math/root-03.typ"
-                      ( line 3 , column 11 )
-                      (FieldAccess
-                         (Ident (Identifier "r"))
-                         (FieldAccess
-                            (Ident (Identifier "double")) (Ident (Identifier "bracket")))))
-               , Text "+"
-               , Code
-                   "test/typ/math/root-03.typ"
-                   ( line 3 , column 18 )
-                   (FieldAccess
-                      (Ident (Identifier "l"))
-                      (FieldAccess
-                         (Ident (Identifier "double")) (Ident (Identifier "bracket"))))
-               , Text "y"
-               , MAttach
-                   Nothing
-                   (Just (Text "2"))
-                   (Code
-                      "test/typ/math/root-03.typ"
-                      ( line 3 , column 21 )
-                      (FieldAccess
-                         (Ident (Identifier "r"))
-                         (FieldAccess
-                            (Ident (Identifier "double")) (Ident (Identifier "bracket")))))
-               ]
-           ])
-    , Text "<"
-    , Code
-        "test/typ/math/root-03.typ"
-        ( line 3 , column 29 )
-        (FieldAccess
-           (Ident (Identifier "l"))
-           (FieldAccess
-              (Ident (Identifier "double")) (Ident (Identifier "bracket"))))
-    , Text "z"
-    , Code
-        "test/typ/math/root-03.typ"
-        ( line 3 , column 32 )
-        (FieldAccess
-           (Ident (Identifier "r"))
-           (FieldAccess
-              (Ident (Identifier "double")) (Ident (Identifier "bracket"))))
-    ]
-, SoftBreak
-, Equation
-    True
-    [ Text "v"
-    , Text "="
-    , Code
-        "test/typ/math/root-03.typ"
-        ( line 4 , column 7 )
-        (FuncCall
-           (Ident (Identifier "sqrt"))
-           [ BlockArg
-               [ MFrac
-                   (MGroup (Just "(") (Just ")") [ MFrac (Text "1") (Text "2") ])
-                   (MGroup Nothing Nothing [ MFrac (Text "4") (Text "5") ])
-               ]
-           ])
-    , Text "="
-    , Code
-        "test/typ/math/root-03.typ"
-        ( line 5 , column 6 )
-        (FuncCall
-           (Ident (Identifier "root"))
-           [ BlockArg [ Text "3" ]
-           , BlockArg
-               [ MFrac
-                   (MGroup
-                      (Just "(")
-                      (Just ")")
-                      [ MFrac (MFrac (Text "1") (Text "2")) (Text "3") ])
-                   (MGroup
-                      Nothing Nothing [ MFrac (MFrac (Text "4") (Text "5")) (Text "6") ])
-               ]
-           ])
-    , Text "="
-    , Code
-        "test/typ/math/root-03.typ"
-        ( line 6 , column 6 )
-        (FuncCall
-           (Ident (Identifier "root"))
-           [ BlockArg [ Text "4" ]
-           , BlockArg
-               [ MFrac
-                   (MGroup
-                      (Just "(")
-                      (Just ")")
-                      [ MFrac
-                          (MGroup (Just "(") (Just ")") [ MFrac (Text "1") (Text "2") ])
-                          (MGroup Nothing Nothing [ MFrac (Text "3") (Text "4") ])
-                      ])
-                   (MGroup
-                      Nothing
-                      Nothing
-                      [ MFrac
-                          (MGroup (Just "(") (Just ")") [ MFrac (Text "1") (Text "2") ])
-                          (MGroup Nothing Nothing [ MFrac (Text "3") (Text "4") ])
-                      ])
-               ]
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { math.sqrt(radicand: { text(body: [⟦]), 
-                                                             text(body: [x]), 
-                                                             math.attach(b: none, 
-                                                                         base: text(body: [⟧]), 
-                                                                         t: text(body: [2])), 
-                                                             text(body: [+]), 
-                                                             text(body: [⟦]), 
-                                                             text(body: [y]), 
-                                                             math.attach(b: none, 
-                                                                         base: text(body: [⟧]), 
-                                                                         t: text(body: [2])) }), 
-                                       text(body: [<]), 
-                                       text(body: [⟦]), 
-                                       text(body: [z]), 
-                                       text(body: [⟧]) }, 
-                               numbering: none), 
-                 text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [v]), 
-                                       text(body: [=]), 
-                                       math.sqrt(radicand: math.frac(denom: math.frac(denom: text(body: [5]), 
-                                                                                      num: text(body: [4])), 
-                                                                     num: math.frac(denom: text(body: [2]), 
-                                                                                    num: text(body: [1])))), 
-                                       text(body: [=]), 
-                                       math.root(index: text(body: [3]), 
-                                                 radicand: math.frac(denom: math.frac(denom: text(body: [6]), 
-                                                                                      num: math.frac(denom: text(body: [5]), 
-                                                                                                     num: text(body: [4]))), 
-                                                                     num: math.frac(denom: text(body: [3]), 
-                                                                                    num: math.frac(denom: text(body: [2]), 
-                                                                                                   num: text(body: [1]))))), 
-                                       text(body: [=]), 
-                                       math.root(index: text(body: [4]), 
-                                                 radicand: math.frac(denom: math.frac(denom: math.frac(denom: text(body: [4]), 
-                                                                                                       num: text(body: [3])), 
-                                                                                      num: math.frac(denom: text(body: [2]), 
-                                                                                                     num: text(body: [1]))), 
-                                                                     num: math.frac(denom: math.frac(denom: text(body: [4]), 
-                                                                                                     num: text(body: [3])), 
-                                                                                    num: math.frac(denom: text(body: [2]), 
-                                                                                                   num: text(body: [1]))))) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/root-04.out b/test/out/math/root-04.out
deleted file mode 100644
--- a/test/out/math/root-04.out
+++ /dev/null
@@ -1,114 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/root-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/root-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/root-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Code
-        "test/typ/math/root-04.typ"
-        ( line 3 , column 3 )
-        (FuncCall
-           (Ident (Identifier "root"))
-           [ BlockArg [ Text "2" ] , BlockArg [ Text "x" ] ])
-    , Code
-        "test/typ/math/root-04.typ"
-        ( line 3 , column 14 )
-        (Ident (Identifier "quad"))
-    , Code
-        "test/typ/math/root-04.typ"
-        ( line 4 , column 3 )
-        (FuncCall
-           (Ident (Identifier "root"))
-           [ BlockArg
-               [ MFrac
-                   (Text "3") (MGroup Nothing Nothing [ MFrac (Text "2") (Text "1") ])
-               ]
-           , BlockArg [ Text "x" ]
-           ])
-    , Code
-        "test/typ/math/root-04.typ"
-        ( line 4 , column 20 )
-        (Ident (Identifier "quad"))
-    , Code
-        "test/typ/math/root-04.typ"
-        ( line 5 , column 3 )
-        (FuncCall
-           (Ident (Identifier "root"))
-           [ BlockArg [ MFrac (Text "1") (Text "11") ]
-           , BlockArg [ Text "x" ]
-           ])
-    , Code
-        "test/typ/math/root-04.typ"
-        ( line 5 , column 17 )
-        (Ident (Identifier "quad"))
-    , Code
-        "test/typ/math/root-04.typ"
-        ( line 6 , column 3 )
-        (FuncCall
-           (Ident (Identifier "root"))
-           [ BlockArg [ MFrac (MFrac (Text "1") (Text "2")) (Text "3") ]
-           , BlockArg [ Text "1" ]
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { math.root(index: text(body: [2]), 
-                                                 radicand: text(body: [x])), 
-                                       text(body: [ ]), 
-                                       math.root(index: math.frac(denom: math.frac(denom: text(body: [1]), 
-                                                                                   num: text(body: [2])), 
-                                                                  num: text(body: [3])), 
-                                                 radicand: text(body: [x])), 
-                                       text(body: [ ]), 
-                                       math.root(index: math.frac(denom: text(body: [11]), 
-                                                                  num: text(body: [1])), 
-                                                 radicand: text(body: [x])), 
-                                       text(body: [ ]), 
-                                       math.root(index: math.frac(denom: text(body: [3]), 
-                                                                  num: math.frac(denom: text(body: [2]), 
-                                                                                 num: text(body: [1]))), 
-                                                 radicand: text(body: [1])) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/root-05.out b/test/out/math/root-05.out
deleted file mode 100644
--- a/test/out/math/root-05.out
+++ /dev/null
@@ -1,153 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/root-05.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/root-05.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/root-05.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Code
-        "test/typ/math/root-05.typ"
-        ( line 3 , column 3 )
-        (FuncCall
-           (Ident (Identifier "root"))
-           [ NormalArg
-               (Block (Content [ MAttach Nothing (Just (Text "3")) (Text "2") ]))
-           ])
-    , Text "="
-    , Code
-        "test/typ/math/root-05.typ"
-        ( line 3 , column 10 )
-        (FuncCall
-           (Ident (Identifier "sqrt"))
-           [ BlockArg [ MAttach Nothing (Just (Text "3")) (Text "2") ] ])
-    ]
-, SoftBreak
-, Equation
-    True
-    [ Code
-        "test/typ/math/root-05.typ"
-        ( line 4 , column 3 )
-        (Ident (Identifier "root"))
-    , MGroup (Just "(") (Just ")") [ Text "x" , Text "+" , Text "y" ]
-    , Code
-        "test/typ/math/root-05.typ"
-        ( line 4 , column 10 )
-        (Ident (Identifier "quad"))
-    , Text "\8731"
-    , Text "x"
-    , Code
-        "test/typ/math/root-05.typ"
-        ( line 4 , column 18 )
-        (Ident (Identifier "quad"))
-    , Text "\8732"
-    , Text "x"
-    ]
-, SoftBreak
-, Equation
-    True
-    [ MGroup
-        (Just "(")
-        (Just ")")
-        [ Code
-            "test/typ/math/root-05.typ"
-            ( line 5 , column 4 )
-            (FuncCall
-               (Ident (Identifier "root"))
-               [ NormalArg (Block (Content [ Text "2" ])) ])
-        , Text "+"
-        , Text "3"
-        ]
-    , Text "="
-    , MGroup
-        (Just "(")
-        (Just ")")
-        [ Code
-            "test/typ/math/root-05.typ"
-            ( line 5 , column 13 )
-            (FuncCall (Ident (Identifier "sqrt")) [ BlockArg [ Text "2" ] ])
-        , Text "+"
-        , Text "3"
-        ]
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { math.root(index: math.attach(b: none, 
-                                                                    base: text(body: [2]), 
-                                                                    t: text(body: [3]))), 
-                                       text(body: [=]), 
-                                       math.sqrt(radicand: math.attach(b: none, 
-                                                                       base: text(body: [2]), 
-                                                                       t: text(body: [3]))) }, 
-                               numbering: none), 
-                 text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { math.lr(body: ({ [(], 
-                                                        text(body: [x]), 
-                                                        text(body: [+]), 
-                                                        text(body: [y]), 
-                                                        [)] })), 
-                                       text(body: [ ]), 
-                                       text(body: [∛]), 
-                                       text(body: [x]), 
-                                       text(body: [ ]), 
-                                       text(body: [∜]), 
-                                       text(body: [x]) }, 
-                               numbering: none), 
-                 text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { math.lr(body: ({ [(], 
-                                                        math.root(index: text(body: [2])), 
-                                                        text(body: [+]), 
-                                                        text(body: [3]), 
-                                                        [)] })), 
-                                       text(body: [=]), 
-                                       math.lr(body: ({ [(], 
-                                                        math.sqrt(radicand: text(body: [2])), 
-                                                        text(body: [+]), 
-                                                        text(body: [3]), 
-                                                        [)] })) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/spacing-00.out b/test/out/math/spacing-00.out
deleted file mode 100644
--- a/test/out/math/spacing-00.out
+++ /dev/null
@@ -1,306 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/spacing-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/spacing-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/spacing-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    False
-    [ Text "\228"
-    , Text ","
-    , Text "+"
-    , Text ","
-    , Text "c"
-    , Text ","
-    , MGroup (Just "(") (Just ")") [ Text "," ]
-    ]
-, Space
-, HardBreak
-, Equation
-    False
-    [ Text "="
-    , Text ")"
-    , Text ","
-    , MGroup (Just "(") (Just ")") [ Text "+" ]
-    , Text ","
-    , MGroup
-        (Just "{")
-        (Just "}")
-        [ Code
-            "test/typ/math/spacing-00.typ"
-            ( line 4 , column 12 )
-            (Ident (Identifier "times"))
-        ]
-    ]
-, SoftBreak
-, Equation
-    False
-    [ Text "\10215"
-    , Text "<"
-    , Text "\10214"
-    , Text ","
-    , Text "|"
-    , Code
-        "test/typ/math/spacing-00.typ"
-        ( line 5 , column 8 )
-        (Ident (Identifier "minus"))
-    , Text "|"
-    , Text ","
-    , MGroup (Just "[") Nothing [ Text "=" ]
-    ]
-, Space
-, HardBreak
-, Equation
-    False
-    [ Text "a"
-    , Text "="
-    , Text "b"
-    , Text ","
-    , Text "a"
-    , Text "="
-    , Text "="
-    , Text "b"
-    ]
-, Space
-, HardBreak
-, Equation
-    False
-    [ Code
-        "test/typ/math/spacing-00.typ"
-        ( line 7 , column 2 )
-        (Ident (Identifier "minus"))
-    , Text "a"
-    , Text ","
-    , Text "+"
-    , Text "a"
-    ]
-, Space
-, HardBreak
-, Equation
-    False
-    [ Text "a"
-    , Code
-        "test/typ/math/spacing-00.typ"
-        ( line 8 , column 4 )
-        (Ident (Identifier "not"))
-    , Text "b"
-    ]
-, Space
-, HardBreak
-, Equation
-    False
-    [ Text "a"
-    , Text "+"
-    , Text "b"
-    , Text ","
-    , Text "a"
-    , Code
-        "test/typ/math/spacing-00.typ"
-        ( line 9 , column 8 )
-        (Ident (Identifier "convolve"))
-    , Text "b"
-    ]
-, Space
-, HardBreak
-, Equation
-    False
-    [ Code
-        "test/typ/math/spacing-00.typ"
-        ( line 10 , column 2 )
-        (Ident (Identifier "sum"))
-    , Text "x"
-    , Text ","
-    , Code
-        "test/typ/math/spacing-00.typ"
-        ( line 10 , column 9 )
-        (FuncCall (Ident (Identifier "sum")) [ BlockArg [ Text "x" ] ])
-    ]
-, Space
-, HardBreak
-, Equation
-    False
-    [ Code
-        "test/typ/math/spacing-00.typ"
-        ( line 11 , column 2 )
-        (Ident (Identifier "sum"))
-    , Code
-        "test/typ/math/spacing-00.typ"
-        ( line 11 , column 6 )
-        (Ident (Identifier "product"))
-    , Text "x"
-    ]
-, Space
-, HardBreak
-, Equation
-    False
-    [ MGroup
-        Nothing
-        Nothing
-        [ Text "f" , MGroup (Just "(") (Just ")") [ Text "x" ] ]
-    , Text ","
-    , Code
-        "test/typ/math/spacing-00.typ"
-        ( line 12 , column 8 )
-        (FuncCall (Ident (Identifier "zeta")) [ BlockArg [ Text "x" ] ])
-    , Text ","
-    , MGroup
-        Nothing
-        Nothing
-        [ Text " frac" , MGroup (Just "(") (Just ")") [ Text "x" ] ]
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: false, 
-                               body: { text(body: [ä]), 
-                                       text(body: [,]), 
-                                       text(body: [+]), 
-                                       text(body: [,]), 
-                                       text(body: [c]), 
-                                       text(body: [,]), 
-                                       math.lr(body: ({ [(], 
-                                                        text(body: [,]), 
-                                                        [)] })) }, 
-                               numbering: none), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 math.equation(block: false, 
-                               body: { text(body: [=]), 
-                                       text(body: [)]), 
-                                       text(body: [,]), 
-                                       math.lr(body: ({ [(], 
-                                                        text(body: [+]), 
-                                                        [)] })), 
-                                       text(body: [,]), 
-                                       math.lr(body: ({ [{], 
-                                                        text(body: [×]), 
-                                                        [}] })) }, 
-                               numbering: none), 
-                 text(body: [
-]), 
-                 math.equation(block: false, 
-                               body: { text(body: [⟧]), 
-                                       text(body: [<]), 
-                                       text(body: [⟦]), 
-                                       text(body: [,]), 
-                                       text(body: [|]), 
-                                       text(body: [−]), 
-                                       text(body: [|]), 
-                                       text(body: [,]), 
-                                       text(body: [[]), 
-                                       text(body: [=]) }, 
-                               numbering: none), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 math.equation(block: false, 
-                               body: { text(body: [a]), 
-                                       text(body: [=]), 
-                                       text(body: [b]), 
-                                       text(body: [,]), 
-                                       text(body: [a]), 
-                                       text(body: [=]), 
-                                       text(body: [=]), 
-                                       text(body: [b]) }, 
-                               numbering: none), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 math.equation(block: false, 
-                               body: { text(body: [−]), 
-                                       text(body: [a]), 
-                                       text(body: [,]), 
-                                       text(body: [+]), 
-                                       text(body: [a]) }, 
-                               numbering: none), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 math.equation(block: false, 
-                               body: { text(body: [a]), 
-                                       text(body: [¬]), 
-                                       text(body: [b]) }, 
-                               numbering: none), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 math.equation(block: false, 
-                               body: { text(body: [a]), 
-                                       text(body: [+]), 
-                                       text(body: [b]), 
-                                       text(body: [,]), 
-                                       text(body: [a]), 
-                                       text(body: [∗]), 
-                                       text(body: [b]) }, 
-                               numbering: none), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 math.equation(block: false, 
-                               body: { text(body: [∑]), 
-                                       text(body: [x]), 
-                                       text(body: [,]), 
-                                       text(body: [∑]), 
-                                       text(body: [(]), 
-                                       text(body: [x]), 
-                                       text(body: [)]) }, 
-                               numbering: none), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 math.equation(block: false, 
-                               body: { text(body: [∑]), 
-                                       text(body: [∏]), 
-                                       text(body: [x]) }, 
-                               numbering: none), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 math.equation(block: false, 
-                               body: { text(body: [f]), 
-                                       math.lr(body: ({ [(], 
-                                                        text(body: [x]), 
-                                                        [)] })), 
-                                       text(body: [,]), 
-                                       text(body: [ζ]), 
-                                       text(body: [(]), 
-                                       text(body: [x]), 
-                                       text(body: [)]), 
-                                       text(body: [,]), 
-                                       text(body: [ frac]), 
-                                       math.lr(body: ({ [(], 
-                                                        text(body: [x]), 
-                                                        [)] })) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/spacing-01.out b/test/out/math/spacing-01.out
deleted file mode 100644
--- a/test/out/math/spacing-01.out
+++ /dev/null
@@ -1,123 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/spacing-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/spacing-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/spacing-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    False
-    [ Text "f"
-    , MGroup (Just "(") (Just ")") [ Text "x" ]
-    , Text ","
-    , MGroup
-        Nothing
-        Nothing
-        [ Text "f" , MGroup (Just "(") (Just ")") [ Text "x" ] ]
-    ]
-, Space
-, HardBreak
-, Equation
-    False
-    [ MGroup (Just "[") (Just "]") [ Text "a" , Text "|" , Text "b" ]
-    , Text ","
-    , MGroup
-        (Just "[")
-        (Just "]")
-        [ Text "a"
-        , MGroup Nothing Nothing [ Nbsp , Text "|" , Nbsp ]
-        , Text "b"
-        ]
-    ]
-, Space
-, HardBreak
-, Equation
-    False
-    [ Text "a"
-    , Text "is"
-    , Text "b"
-    , Text ","
-    , Text "a"
-    , Text " is "
-    , Text "b"
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: false, 
-                               body: { text(body: [f]), 
-                                       math.lr(body: ({ [(], 
-                                                        text(body: [x]), 
-                                                        [)] })), 
-                                       text(body: [,]), 
-                                       text(body: [f]), 
-                                       math.lr(body: ({ [(], 
-                                                        text(body: [x]), 
-                                                        [)] })) }, 
-                               numbering: none), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 math.equation(block: false, 
-                               body: { math.lr(body: ({ [[], 
-                                                        text(body: [a]), 
-                                                        text(body: [|]), 
-                                                        text(body: [b]), 
-                                                        []] })), 
-                                       text(body: [,]), 
-                                       math.lr(body: ({ [[], 
-                                                        text(body: [a]), 
-                                                        text(body: [ ]), 
-                                                        text(body: [|]), 
-                                                        text(body: [ ]), 
-                                                        text(body: [b]), 
-                                                        []] })) }, 
-                               numbering: none), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 math.equation(block: false, 
-                               body: { text(body: [a]), 
-                                       text(body: [is]), 
-                                       text(body: [b]), 
-                                       text(body: [,]), 
-                                       text(body: [a]), 
-                                       text(body: [ is ]), 
-                                       text(body: [b]) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/spacing-02.out b/test/out/math/spacing-02.out
deleted file mode 100644
--- a/test/out/math/spacing-02.out
+++ /dev/null
@@ -1,159 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/spacing-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/spacing-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/spacing-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    False
-    [ Text "a"
-    , Code
-        "test/typ/math/spacing-02.typ"
-        ( line 3 , column 4 )
-        (Ident (Identifier "thin"))
-    , Text "b"
-    , Text ","
-    , Text "a"
-    , Code
-        "test/typ/math/spacing-02.typ"
-        ( line 3 , column 14 )
-        (Ident (Identifier "med"))
-    , Text "b"
-    , Text ","
-    , Text "a"
-    , Code
-        "test/typ/math/spacing-02.typ"
-        ( line 3 , column 23 )
-        (Ident (Identifier "thick"))
-    , Text "b"
-    , Text ","
-    , Text "a"
-    , Code
-        "test/typ/math/spacing-02.typ"
-        ( line 3 , column 34 )
-        (Ident (Identifier "quad"))
-    , Text "b"
-    ]
-, Space
-, HardBreak
-, Equation
-    False
-    [ Text "a"
-    , Text "="
-    , Code
-        "test/typ/math/spacing-02.typ"
-        ( line 4 , column 6 )
-        (Ident (Identifier "thin"))
-    , Text "b"
-    ]
-, Space
-, HardBreak
-, Equation
-    False
-    [ Text "a"
-    , Code
-        "test/typ/math/spacing-02.typ"
-        ( line 5 , column 4 )
-        (Ident (Identifier "minus"))
-    , Text "b"
-    , Code
-        "test/typ/math/spacing-02.typ"
-        ( line 5 , column 8 )
-        (Ident (Identifier "equiv"))
-    , Text "c"
-    , Code
-        "test/typ/math/spacing-02.typ"
-        ( line 5 , column 16 )
-        (Ident (Identifier "quad"))
-    , MGroup
-        (Just "(")
-        (Just ")")
-        [ Code
-            "test/typ/math/spacing-02.typ"
-            ( line 5 , column 22 )
-            (Ident (Identifier "mod"))
-        , Text "2"
-        ]
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: false, 
-                               body: { text(body: [a]), 
-                                       text(body: [ ]), 
-                                       text(body: [b]), 
-                                       text(body: [,]), 
-                                       text(body: [a]), 
-                                       text(body: [ ]), 
-                                       text(body: [b]), 
-                                       text(body: [,]), 
-                                       text(body: [a]), 
-                                       text(body: [ ]), 
-                                       text(body: [b]), 
-                                       text(body: [,]), 
-                                       text(body: [a]), 
-                                       text(body: [ ]), 
-                                       text(body: [b]) }, 
-                               numbering: none), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 math.equation(block: false, 
-                               body: { text(body: [a]), 
-                                       text(body: [=]), 
-                                       text(body: [ ]), 
-                                       text(body: [b]) }, 
-                               numbering: none), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 math.equation(block: false, 
-                               body: { text(body: [a]), 
-                                       text(body: [−]), 
-                                       text(body: [b]), 
-                                       text(body: [≡]), 
-                                       text(body: [c]), 
-                                       text(body: [ ]), 
-                                       math.lr(body: ({ [(], 
-                                                        math.op(limits: false, 
-                                                                text: "mod"), 
-                                                        text(body: [2]), 
-                                                        [)] })) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/spacing-03.out b/test/out/math/spacing-03.out
deleted file mode 100644
--- a/test/out/math/spacing-03.out
+++ /dev/null
@@ -1,99 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/spacing-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/spacing-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/spacing-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/math/spacing-03.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal Auto) ])
-, SoftBreak
-, Equation
-    True
-    [ MGroup
-        (Just "{")
-        (Just "}")
-        [ Text "x"
-        , Code
-            "test/typ/math/spacing-03.typ"
-            ( line 4 , column 7 )
-            (Ident (Identifier "in"))
-        , Code
-            "test/typ/math/spacing-03.typ"
-            ( line 4 , column 10 )
-            (Ident (Identifier "RR"))
-        , MGroup Nothing Nothing [ Nbsp , Text "|" , Nbsp ]
-        , Text "x"
-        , Text " is natural "
-        , Code
-            "test/typ/math/spacing-03.typ"
-            ( line 4 , column 30 )
-            (Ident (Identifier "and"))
-        , Text "x"
-        , Text "<"
-        , Text "10"
-        ]
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: math.lr(body: ({ [{], 
-                                                      text(body: [x]), 
-                                                      text(body: [∈]), 
-                                                      text(body: [ℝ]), 
-                                                      text(body: [ ]), 
-                                                      text(body: [|]), 
-                                                      text(body: [ ]), 
-                                                      text(body: [x]), 
-                                                      text(body: [ is natural ]), 
-                                                      text(body: [∧]), 
-                                                      text(body: [x]), 
-                                                      text(body: [<]), 
-                                                      text(body: [10]), 
-                                                      [}] })), 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/spacing-04.out b/test/out/math/spacing-04.out
deleted file mode 100644
--- a/test/out/math/spacing-04.out
+++ /dev/null
@@ -1,442 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/spacing-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/spacing-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/spacing-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/math/spacing-04.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal Auto) ])
-, SoftBreak
-, Equation
-    False
-    [ Text "a"
-    , Code
-        "test/typ/math/spacing-04.typ"
-        ( line 4 , column 4 )
-        (Ident (Identifier "equiv"))
-    , Text "b"
-    , Text "+"
-    , Text "c"
-    , Code
-        "test/typ/math/spacing-04.typ"
-        ( line 4 , column 16 )
-        (Ident (Identifier "minus"))
-    , Text "d"
-    , Code
-        "test/typ/math/spacing-04.typ"
-        ( line 4 , column 20 )
-        (FieldAccess
-           (Ident (Identifier "r"))
-           (FieldAccess
-              (Ident (Identifier "double")) (Ident (Identifier "arrow"))))
-    , Text "e"
-    , Code
-        "test/typ/math/spacing-04.typ"
-        ( line 4 , column 25 )
-        (Ident (Identifier "log"))
-    , Text "5"
-    , Code
-        "test/typ/math/spacing-04.typ"
-        ( line 4 , column 31 )
-        (FuncCall (Ident (Identifier "op")) [ BlockArg [ Text "ln" ] ])
-    , Text "6"
-    ]
-, Space
-, HardBreak
-, Equation
-    False
-    [ Text "a"
-    , Code
-        "test/typ/math/spacing-04.typ"
-        ( line 5 , column 4 )
-        (FuncCall
-           (Ident (Identifier "cancel"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/spacing-04.typ"
-                   ( line 5 , column 11 )
-                   (Ident (Identifier "equiv"))
-               ]
-           ])
-    , Text "b"
-    , Code
-        "test/typ/math/spacing-04.typ"
-        ( line 5 , column 20 )
-        (FuncCall
-           (Ident (Identifier "overline")) [ BlockArg [ Text "+" ] ])
-    , Text "c"
-    , Code
-        "test/typ/math/spacing-04.typ"
-        ( line 5 , column 34 )
-        (FuncCall
-           (Ident (Identifier "arrow"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/spacing-04.typ"
-                   ( line 5 , column 40 )
-                   (Ident (Identifier "minus"))
-               ]
-           ])
-    , Text "d"
-    , Code
-        "test/typ/math/spacing-04.typ"
-        ( line 5 , column 45 )
-        (FuncCall
-           (Ident (Identifier "hat"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/spacing-04.typ"
-                   ( line 5 , column 49 )
-                   (FieldAccess
-                      (Ident (Identifier "r"))
-                      (FieldAccess
-                         (Ident (Identifier "double")) (Ident (Identifier "arrow"))))
-               ]
-           ])
-    , Text "e"
-    , Code
-        "test/typ/math/spacing-04.typ"
-        ( line 5 , column 55 )
-        (FuncCall
-           (Ident (Identifier "cancel"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/spacing-04.typ"
-                   ( line 5 , column 62 )
-                   (Ident (Identifier "log"))
-               ]
-           ])
-    , Text "5"
-    , Code
-        "test/typ/math/spacing-04.typ"
-        ( line 5 , column 69 )
-        (FuncCall
-           (Ident (Identifier "dot"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/spacing-04.typ"
-                   ( line 5 , column 73 )
-                   (FuncCall (Ident (Identifier "op")) [ BlockArg [ Text "ln" ] ])
-               ]
-           ])
-    , Text "6"
-    ]
-, Space
-, HardBreak
-, Equation
-    False
-    [ Text "a"
-    , Code
-        "test/typ/math/spacing-04.typ"
-        ( line 6 , column 4 )
-        (FuncCall
-           (Ident (Identifier "overbrace"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/spacing-04.typ"
-                   ( line 6 , column 14 )
-                   (Ident (Identifier "equiv"))
-               ]
-           ])
-    , Text "b"
-    , Code
-        "test/typ/math/spacing-04.typ"
-        ( line 6 , column 23 )
-        (FuncCall
-           (Ident (Identifier "underline")) [ BlockArg [ Text "+" ] ])
-    , Text "c"
-    , Code
-        "test/typ/math/spacing-04.typ"
-        ( line 6 , column 38 )
-        (FuncCall
-           (Ident (Identifier "grave"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/spacing-04.typ"
-                   ( line 6 , column 44 )
-                   (Ident (Identifier "minus"))
-               ]
-           ])
-    , Text "d"
-    , Code
-        "test/typ/math/spacing-04.typ"
-        ( line 6 , column 49 )
-        (FuncCall
-           (Ident (Identifier "underbracket"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/spacing-04.typ"
-                   ( line 6 , column 62 )
-                   (FieldAccess
-                      (Ident (Identifier "r"))
-                      (FieldAccess
-                         (Ident (Identifier "double")) (Ident (Identifier "arrow"))))
-               ]
-           ])
-    , Text "e"
-    , Code
-        "test/typ/math/spacing-04.typ"
-        ( line 6 , column 68 )
-        (FuncCall
-           (Ident (Identifier "circle"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/spacing-04.typ"
-                   ( line 6 , column 75 )
-                   (Ident (Identifier "log"))
-               ]
-           ])
-    , Text "5"
-    , Code
-        "test/typ/math/spacing-04.typ"
-        ( line 6 , column 82 )
-        (FuncCall
-           (Ident (Identifier "caron"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/spacing-04.typ"
-                   ( line 6 , column 88 )
-                   (FuncCall (Ident (Identifier "op")) [ BlockArg [ Text "ln" ] ])
-               ]
-           ])
-    , Text "6"
-    ]
-, Space
-, HardBreak
-, HardBreak
-, Equation
-    False
-    [ Text "a"
-    , Code
-        "test/typ/math/spacing-04.typ"
-        ( line 8 , column 4 )
-        (FuncCall
-           (Ident (Identifier "attach"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/spacing-04.typ"
-                   ( line 8 , column 11 )
-                   (Ident (Identifier "equiv"))
-               ]
-           , KeyValArg (Identifier "tl") (Block (Content [ Text "a" ]))
-           , KeyValArg (Identifier "tr") (Block (Content [ Text "b" ]))
-           ])
-    , Text "b"
-    , Code
-        "test/typ/math/spacing-04.typ"
-        ( line 8 , column 34 )
-        (FuncCall
-           (Ident (Identifier "attach"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/spacing-04.typ"
-                   ( line 8 , column 41 )
-                   (FuncCall (Ident (Identifier "limits")) [ BlockArg [ Text "+" ] ])
-               ]
-           , KeyValArg (Identifier "t") (Block (Content [ Text "a" ]))
-           , KeyValArg (Identifier "b") (Block (Content [ Text "b" ]))
-           ])
-    , Text "c"
-    , Code
-        "test/typ/math/spacing-04.typ"
-        ( line 8 , column 66 )
-        (FuncCall
-           (Ident (Identifier "tilde"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/spacing-04.typ"
-                   ( line 8 , column 72 )
-                   (Ident (Identifier "minus"))
-               ]
-           ])
-    , Text "d"
-    , Code
-        "test/typ/math/spacing-04.typ"
-        ( line 8 , column 77 )
-        (FuncCall
-           (Ident (Identifier "breve"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/spacing-04.typ"
-                   ( line 8 , column 83 )
-                   (FieldAccess
-                      (Ident (Identifier "r"))
-                      (FieldAccess
-                         (Ident (Identifier "double")) (Ident (Identifier "arrow"))))
-               ]
-           ])
-    , Text "e"
-    , Code
-        "test/typ/math/spacing-04.typ"
-        ( line 8 , column 89 )
-        (FuncCall
-           (Ident (Identifier "attach"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/spacing-04.typ"
-                   ( line 8 , column 96 )
-                   (FuncCall
-                      (Ident (Identifier "limits"))
-                      [ BlockArg
-                          [ Code
-                              "test/typ/math/spacing-04.typ"
-                              ( line 8 , column 103 )
-                              (Ident (Identifier "log"))
-                          ]
-                      ])
-               ]
-           , KeyValArg (Identifier "t") (Block (Content [ Text "a" ]))
-           , KeyValArg (Identifier "b") (Block (Content [ Text "b" ]))
-           ])
-    , Text "5"
-    , Code
-        "test/typ/math/spacing-04.typ"
-        ( line 8 , column 123 )
-        (FuncCall
-           (Ident (Identifier "attach"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/spacing-04.typ"
-                   ( line 8 , column 130 )
-                   (FuncCall (Ident (Identifier "op")) [ BlockArg [ Text "ln" ] ])
-               ]
-           , KeyValArg (Identifier "tr") (Block (Content [ Text "a" ]))
-           , KeyValArg (Identifier "bl") (Block (Content [ Text "b" ]))
-           ])
-    , Text "6"
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 math.equation(block: false, 
-                               body: { text(body: [a]), 
-                                       text(body: [≡]), 
-                                       text(body: [b]), 
-                                       text(body: [+]), 
-                                       text(body: [c]), 
-                                       text(body: [−]), 
-                                       text(body: [d]), 
-                                       text(body: [⇒]), 
-                                       text(body: [e]), 
-                                       math.op(limits: false, 
-                                               text: "log"), 
-                                       text(body: [5]), 
-                                       math.op(text: text(body: [ln])), 
-                                       text(body: [6]) }, 
-                               numbering: none), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 math.equation(block: false, 
-                               body: { text(body: [a]), 
-                                       math.cancel(body: text(body: [≡])), 
-                                       text(body: [b]), 
-                                       math.overline(body: text(body: [+])), 
-                                       text(body: [c]), 
-                                       math.accent(accent: →, 
-                                                   base: text(body: [−])), 
-                                       text(body: [d]), 
-                                       math.accent(accent: ^, 
-                                                   base: text(body: [⇒])), 
-                                       text(body: [e]), 
-                                       math.cancel(body: math.op(limits: false, 
-                                                                 text: "log")), 
-                                       text(body: [5]), 
-                                       math.accent(accent: ⋅, 
-                                                   base: math.op(text: text(body: [ln]))), 
-                                       text(body: [6]) }, 
-                               numbering: none), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 math.equation(block: false, 
-                               body: { text(body: [a]), 
-                                       math.overbrace(body: text(body: [≡])), 
-                                       text(body: [b]), 
-                                       math.underline(body: text(body: [+])), 
-                                       text(body: [c]), 
-                                       math.accent(accent: `, 
-                                                   base: text(body: [−])), 
-                                       text(body: [d]), 
-                                       math.underbracket(body: text(body: [⇒])), 
-                                       text(body: [e]), 
-                                       math.accent(accent: ○, 
-                                                   base: math.op(limits: false, 
-                                                                 text: "log")), 
-                                       text(body: [5]), 
-                                       math.accent(accent: ˇ, 
-                                                   base: math.op(text: text(body: [ln]))), 
-                                       text(body: [6]) }, 
-                               numbering: none), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 linebreak(), 
-                 math.equation(block: false, 
-                               body: { text(body: [a]), 
-                                       math.attach(base: text(body: [≡]), 
-                                                   tl: text(body: [a]), 
-                                                   tr: text(body: [b])), 
-                                       text(body: [b]), 
-                                       math.attach(b: text(body: [b]), 
-                                                   base: math.limits(body: text(body: [+])), 
-                                                   t: text(body: [a])), 
-                                       text(body: [c]), 
-                                       math.accent(accent: ∼, 
-                                                   base: text(body: [−])), 
-                                       text(body: [d]), 
-                                       math.accent(accent: ˘, 
-                                                   base: text(body: [⇒])), 
-                                       text(body: [e]), 
-                                       math.attach(b: text(body: [b]), 
-                                                   base: math.limits(body: math.op(limits: false, 
-                                                                                   text: "log")), 
-                                                   t: text(body: [a])), 
-                                       text(body: [5]), 
-                                       math.attach(base: math.op(text: text(body: [ln])), 
-                                                   bl: text(body: [b]), 
-                                                   tr: text(body: [a])), 
-                                       text(body: [6]) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/style-00.out b/test/out/math/style-00.out
deleted file mode 100644
--- a/test/out/math/style-00.out
+++ /dev/null
@@ -1,88 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/style-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/style-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/style-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    False
-    [ Text "a"
-    , Text ","
-    , Text "A"
-    , Text ","
-    , Code
-        "test/typ/math/style-00.typ"
-        ( line 3 , column 8 )
-        (Ident (Identifier "delta"))
-    , Text ","
-    , Text "\1013"
-    , Text ","
-    , Code
-        "test/typ/math/style-00.typ"
-        ( line 3 , column 18 )
-        (Ident (Identifier "diff"))
-    , Text ","
-    , Code
-        "test/typ/math/style-00.typ"
-        ( line 3 , column 24 )
-        (Ident (Identifier "Delta"))
-    , Text ","
-    , Text "\1012"
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: false, 
-                               body: { text(body: [a]), 
-                                       text(body: [,]), 
-                                       text(body: [A]), 
-                                       text(body: [,]), 
-                                       text(body: [δ]), 
-                                       text(body: [,]), 
-                                       text(body: [ϵ]), 
-                                       text(body: [,]), 
-                                       text(body: [∂]), 
-                                       text(body: [,]), 
-                                       text(body: [Δ]), 
-                                       text(body: [,]), 
-                                       text(body: [ϴ]) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/style-01.out b/test/out/math/style-01.out
deleted file mode 100644
--- a/test/out/math/style-01.out
+++ /dev/null
@@ -1,219 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/style-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/style-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/style-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    False
-    [ Text "A"
-    , Text ","
-    , Code
-        "test/typ/math/style-01.typ"
-        ( line 3 , column 5 )
-        (FuncCall (Ident (Identifier "italic")) [ BlockArg [ Text "A" ] ])
-    , Text ","
-    , Code
-        "test/typ/math/style-01.typ"
-        ( line 3 , column 16 )
-        (FuncCall (Ident (Identifier "upright")) [ BlockArg [ Text "A" ] ])
-    , Text ","
-    , Code
-        "test/typ/math/style-01.typ"
-        ( line 3 , column 28 )
-        (FuncCall (Ident (Identifier "bold")) [ BlockArg [ Text "A" ] ])
-    , Text ","
-    , Code
-        "test/typ/math/style-01.typ"
-        ( line 3 , column 37 )
-        (FuncCall
-           (Ident (Identifier "bold"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/style-01.typ"
-                   ( line 3 , column 42 )
-                   (FuncCall (Ident (Identifier "upright")) [ BlockArg [ Text "A" ] ])
-               ]
-           ])
-    , Text ","
-    , HardBreak
-    , Code
-        "test/typ/math/style-01.typ"
-        ( line 4 , column 2 )
-        (FuncCall (Ident (Identifier "serif")) [ BlockArg [ Text "A" ] ])
-    , Text ","
-    , Code
-        "test/typ/math/style-01.typ"
-        ( line 4 , column 12 )
-        (FuncCall (Ident (Identifier "sans")) [ BlockArg [ Text "A" ] ])
-    , Text ","
-    , Code
-        "test/typ/math/style-01.typ"
-        ( line 4 , column 21 )
-        (FuncCall (Ident (Identifier "cal")) [ BlockArg [ Text "A" ] ])
-    , Text ","
-    , Code
-        "test/typ/math/style-01.typ"
-        ( line 4 , column 29 )
-        (FuncCall (Ident (Identifier "frak")) [ BlockArg [ Text "A" ] ])
-    , Text ","
-    , Code
-        "test/typ/math/style-01.typ"
-        ( line 4 , column 38 )
-        (FuncCall (Ident (Identifier "mono")) [ BlockArg [ Text "A" ] ])
-    , Text ","
-    , Code
-        "test/typ/math/style-01.typ"
-        ( line 4 , column 47 )
-        (FuncCall (Ident (Identifier "bb")) [ BlockArg [ Text "A" ] ])
-    , Text ","
-    , HardBreak
-    , Code
-        "test/typ/math/style-01.typ"
-        ( line 5 , column 2 )
-        (FuncCall
-           (Ident (Identifier "italic"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/style-01.typ"
-                   ( line 5 , column 9 )
-                   (Ident (Identifier "diff"))
-               ]
-           ])
-    , Text ","
-    , Code
-        "test/typ/math/style-01.typ"
-        ( line 5 , column 16 )
-        (FuncCall
-           (Ident (Identifier "upright"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/style-01.typ"
-                   ( line 5 , column 24 )
-                   (Ident (Identifier "diff"))
-               ]
-           ])
-    , Text ","
-    , HardBreak
-    , Code
-        "test/typ/math/style-01.typ"
-        ( line 6 , column 2 )
-        (FuncCall (Ident (Identifier "bb")) [ BlockArg [ Text "hello" ] ])
-    , Text "+"
-    , Code
-        "test/typ/math/style-01.typ"
-        ( line 6 , column 16 )
-        (FuncCall
-           (Ident (Identifier "bold"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/style-01.typ"
-                   ( line 6 , column 21 )
-                   (FuncCall (Ident (Identifier "cal")) [ BlockArg [ Text "world" ] ])
-               ]
-           ])
-    , Text ","
-    , HardBreak
-    , Code
-        "test/typ/math/style-01.typ"
-        ( line 7 , column 2 )
-        (FuncCall
-           (FuncCall (Ident (Identifier "mono")) [ BlockArg [ Text "SQRT" ] ])
-           [ BlockArg [ Text "x" ] ])
-    , Code
-        "test/typ/math/style-01.typ"
-        ( line 7 , column 18 )
-        (Ident (Identifier "wreath"))
-    , Code
-        "test/typ/math/style-01.typ"
-        ( line 7 , column 25 )
-        (FuncCall
-           (Ident (Identifier "mono"))
-           [ BlockArg [ Text "123" , Text "+" , Text "456" ] ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: false, 
-                               body: { text(body: [A]), 
-                                       text(body: [,]), 
-                                       math.italic(body: text(body: [A])), 
-                                       text(body: [,]), 
-                                       math.upright(body: text(body: [A])), 
-                                       text(body: [,]), 
-                                       math.bold(body: text(body: [A])), 
-                                       text(body: [,]), 
-                                       math.bold(body: math.upright(body: text(body: [A]))), 
-                                       text(body: [,]), 
-                                       linebreak(), 
-                                       math.serif(body: text(body: [A])), 
-                                       text(body: [,]), 
-                                       math.sans(body: text(body: [A])), 
-                                       text(body: [,]), 
-                                       math.cal(body: text(body: [A])), 
-                                       text(body: [,]), 
-                                       math.frak(body: text(body: [A])), 
-                                       text(body: [,]), 
-                                       math.mono(body: text(body: [A])), 
-                                       text(body: [,]), 
-                                       math.bb(body: text(body: [A])), 
-                                       text(body: [,]), 
-                                       linebreak(), 
-                                       math.italic(body: text(body: [∂])), 
-                                       text(body: [,]), 
-                                       math.upright(body: text(body: [∂])), 
-                                       text(body: [,]), 
-                                       linebreak(), 
-                                       math.bb(body: text(body: [hello])), 
-                                       text(body: [+]), 
-                                       math.bold(body: math.cal(body: text(body: [world]))), 
-                                       text(body: [,]), 
-                                       linebreak(), 
-                                       math.mono(body: text(body: [SQRT])), 
-                                       text(body: [(]), 
-                                       text(body: [x]), 
-                                       text(body: [)]), 
-                                       text(body: [≀]), 
-                                       math.mono(body: { text(body: [123]), 
-                                                         text(body: [+]), 
-                                                         text(body: [456]) }) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/style-02.out b/test/out/math/style-02.out
deleted file mode 100644
--- a/test/out/math/style-02.out
+++ /dev/null
@@ -1,129 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/style-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/style-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/style-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    False
-    [ Text "h"
-    , Text ","
-    , Code
-        "test/typ/math/style-02.typ"
-        ( line 3 , column 5 )
-        (FuncCall (Ident (Identifier "bb")) [ BlockArg [ Text "N" ] ])
-    , Text ","
-    , Code
-        "test/typ/math/style-02.typ"
-        ( line 3 , column 12 )
-        (FuncCall (Ident (Identifier "cal")) [ BlockArg [ Text "R" ] ])
-    , Text ","
-    , Code
-        "test/typ/math/style-02.typ"
-        ( line 3 , column 20 )
-        (Ident (Identifier "Theta"))
-    , Text ","
-    , Code
-        "test/typ/math/style-02.typ"
-        ( line 3 , column 27 )
-        (FuncCall
-           (Ident (Identifier "italic"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/style-02.typ"
-                   ( line 3 , column 34 )
-                   (Ident (Identifier "Theta"))
-               ]
-           ])
-    , Text ","
-    , Code
-        "test/typ/math/style-02.typ"
-        ( line 3 , column 42 )
-        (FuncCall
-           (Ident (Identifier "sans"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/style-02.typ"
-                   ( line 3 , column 47 )
-                   (Ident (Identifier "Theta"))
-               ]
-           ])
-    , Text ","
-    , Code
-        "test/typ/math/style-02.typ"
-        ( line 3 , column 55 )
-        (FuncCall
-           (Ident (Identifier "sans"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/style-02.typ"
-                   ( line 3 , column 60 )
-                   (FuncCall
-                      (Ident (Identifier "italic"))
-                      [ BlockArg
-                          [ Code
-                              "test/typ/math/style-02.typ"
-                              ( line 3 , column 67 )
-                              (Ident (Identifier "Theta"))
-                          ]
-                      ])
-               ]
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: false, 
-                               body: { text(body: [h]), 
-                                       text(body: [,]), 
-                                       math.bb(body: text(body: [N])), 
-                                       text(body: [,]), 
-                                       math.cal(body: text(body: [R])), 
-                                       text(body: [,]), 
-                                       text(body: [Θ]), 
-                                       text(body: [,]), 
-                                       math.italic(body: text(body: [Θ])), 
-                                       text(body: [,]), 
-                                       math.sans(body: text(body: [Θ])), 
-                                       text(body: [,]), 
-                                       math.sans(body: math.italic(body: text(body: [Θ]))) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/style-03.out b/test/out/math/style-03.out
deleted file mode 100644
--- a/test/out/math/style-03.out
+++ /dev/null
@@ -1,68 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/style-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/style-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/style-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Text "\12424"
-    , Code
-        "test/typ/math/style-03.typ"
-        ( line 3 , column 5 )
-        (Ident (Identifier "and"))
-    , Text "\127987"
-    , Text "\65039"
-    , Text "\8205"
-    , Text "\127752"
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [よ]), 
-                                       text(body: [∧]), 
-                                       text(body: [🏳]), 
-                                       text(body: [️]), 
-                                       text(body: [‍]), 
-                                       text(body: [🌈]) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/style-04.out b/test/out/math/style-04.out
deleted file mode 100644
--- a/test/out/math/style-04.out
+++ /dev/null
@@ -1,73 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/style-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/style-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/style-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    False
-    [ Code
-        "test/typ/math/style-04.typ"
-        ( line 3 , column 2 )
-        (FuncCall
-           (Ident (Identifier "text"))
-           [ NormalArg (Ident (Identifier "red"))
-           , BlockArg [ MAttach Nothing (Just (Text "2")) (Text " time") ]
-           ])
-    , Text "+"
-    , Code
-        "test/typ/math/style-04.typ"
-        ( line 3 , column 25 )
-        (FuncCall
-           (Ident (Identifier "sqrt")) [ BlockArg [ Text "place" ] ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: false, 
-                               body: { text(body: math.attach(b: none, 
-                                                              base: text(body: [ time]), 
-                                                              t: text(body: [2])), 
-                                            color: rgb(100%,25%,21%,100%)), 
-                                       text(body: [+]), 
-                                       math.sqrt(radicand: text(body: [place])) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/style-05.out b/test/out/math/style-05.out
deleted file mode 100644
--- a/test/out/math/style-05.out
+++ /dev/null
@@ -1,114 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/style-05.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/style-05.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/style-05.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/math/style-05.typ"
-    ( line 3 , column 2 )
-    (Show
-       (Just
-          (FieldAccess
-             (Ident (Identifier "equation")) (Ident (Identifier "math"))))
-       (Set
-          (Ident (Identifier "text"))
-          [ KeyValArg (Identifier "font") (Literal (String "Fira Math")) ]))
-, SoftBreak
-, Equation
-    True
-    [ Text "v"
-    , Code
-        "test/typ/math/style-05.typ"
-        ( line 4 , column 5 )
-        (FieldAccess
-           (Ident (Identifier "eq")) (Ident (Identifier "colon")))
-    , Code
-        "test/typ/math/style-05.typ"
-        ( line 4 , column 8 )
-        (FuncCall
-           (Ident (Identifier "vec"))
-           [ BlockArg [ Text "1" , Text "+" , Text "2" ]
-           , BlockArg
-               [ Text "2"
-               , Code
-                   "test/typ/math/style-05.typ"
-                   ( line 4 , column 21 )
-                   (Ident (Identifier "minus"))
-               , Text "4"
-               ]
-           , BlockArg
-               [ Code
-                   "test/typ/math/style-05.typ"
-                   ( line 4 , column 26 )
-                   (FuncCall (Ident (Identifier "sqrt")) [ BlockArg [ Text "3" ] ])
-               ]
-           , BlockArg
-               [ Code
-                   "test/typ/math/style-05.typ"
-                   ( line 4 , column 35 )
-                   (FuncCall (Ident (Identifier "arrow")) [ BlockArg [ Text "x" ] ])
-               ]
-           ])
-    , Text "+"
-    , Text "1"
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [v]), 
-                                       text(body: [≔]), 
-                                       math.vec(children: ({ text(body: [1]), 
-                                                             text(body: [+]), 
-                                                             text(body: [2]) }, 
-                                                           { text(body: [2]), 
-                                                             text(body: [−]), 
-                                                             text(body: [4]) }, 
-                                                           math.sqrt(radicand: text(body: [3])), 
-                                                           math.accent(accent: →, 
-                                                                       base: text(body: [x])))), 
-                                       text(body: [+]), 
-                                       text(body: [1]) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/style-06.out b/test/out/math/style-06.out
deleted file mode 100644
--- a/test/out/math/style-06.out
+++ /dev/null
@@ -1,104 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/style-06.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/style-06.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/style-06.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/math/style-06.typ"
-    ( line 3 , column 2 )
-    (Show
-       (Just
-          (FieldAccess
-             (Ident (Identifier "tack")) (Ident (Identifier "sym"))))
-       (FuncExpr
-          [ NormalParam (Identifier "it") ]
-          (Block
-             (Content
-                [ Equation
-                    False
-                    [ Code
-                        "test/typ/math/style-06.typ"
-                        ( line 3 , column 25 )
-                        (FuncCall
-                           (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 1.0 Em)) ])
-                    , Code
-                        "test/typ/math/style-06.typ"
-                        ( line 3 , column 32 )
-                        (Ident (Identifier "it"))
-                    , Code
-                        "test/typ/math/style-06.typ"
-                        ( line 3 , column 36 )
-                        (FuncCall
-                           (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 1.0 Em)) ])
-                    ]
-                ]))))
-, SoftBreak
-, Equation
-    True
-    [ Text "a"
-    , Code
-        "test/typ/math/style-06.typ"
-        ( line 4 , column 5 )
-        (Ident (Identifier "tack"))
-    , Text "b"
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [a]), 
-                                       math.equation(block: false, 
-                                                     body: { h(amount: 1.0em), 
-                                                             text(body: { [], 
-                                                                          math.equation(block: false, 
-                                                                                        body: { h(amount: 1.0em), 
-                                                                                                text(body: [⊢]), 
-                                                                                                h(amount: 1.0em) }, 
-                                                                                        numbering: none), 
-                                                                          [] }), 
-                                                             h(amount: 1.0em) }, 
-                                                     numbering: none), 
-                                       text(body: [b]) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/syntax-00.out b/test/out/math/syntax-00.out
deleted file mode 100644
--- a/test/out/math/syntax-00.out
+++ /dev/null
@@ -1,92 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/syntax-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/syntax-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/syntax-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ MAttach
-        (Just (MGroup Nothing Nothing [ Text "i" , Text "=" , Text "0" ]))
-        (Just (Text "\8469"))
-        (Text "\8721")
-    , Text "a"
-    , Text "\8728"
-    , Text "b"
-    , Text "="
-    , MAttach
-        (Just (MGroup Nothing Nothing [ Text "i" , Text "=" , Text "0" ]))
-        (Just
-           (Code
-              "test/typ/math/syntax-00.typ"
-              ( line 3 , column 36 )
-              (Ident (Identifier "NN"))))
-        (Text "\8721")
-    , Text "a"
-    , Code
-        "test/typ/math/syntax-00.typ"
-        ( line 3 , column 41 )
-        (Ident (Identifier "compose"))
-    , Text "b"
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { math.attach(b: { text(body: [i]), 
-                                                        text(body: [=]), 
-                                                        text(body: [0]) }, 
-                                                   base: text(body: [∑]), 
-                                                   t: text(body: [ℕ])), 
-                                       text(body: [a]), 
-                                       text(body: [∘]), 
-                                       text(body: [b]), 
-                                       text(body: [=]), 
-                                       math.attach(b: { text(body: [i]), 
-                                                        text(body: [=]), 
-                                                        text(body: [0]) }, 
-                                                   base: text(body: [∑]), 
-                                                   t: text(body: [ℕ])), 
-                                       text(body: [a]), 
-                                       text(body: [∘]), 
-                                       text(body: [b]) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/syntax-01.out b/test/out/math/syntax-01.out
deleted file mode 100644
--- a/test/out/math/syntax-01.out
+++ /dev/null
@@ -1,184 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/syntax-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/syntax-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/syntax-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Code
-        "test/typ/math/syntax-01.typ"
-        ( line 3 , column 3 )
-        (FuncCall
-           (Ident (Identifier "underline"))
-           [ BlockArg
-               [ Text "f"
-               , Code
-                   "test/typ/math/syntax-01.typ"
-                   ( line 3 , column 14 )
-                   (Ident (Identifier "prime"))
-               , Text ":"
-               , Code
-                   "test/typ/math/syntax-01.typ"
-                   ( line 3 , column 18 )
-                   (Ident (Identifier "NN"))
-               , Code
-                   "test/typ/math/syntax-01.typ"
-                   ( line 3 , column 21 )
-                   (FieldAccess (Ident (Identifier "r")) (Ident (Identifier "arrow")))
-               , Code
-                   "test/typ/math/syntax-01.typ"
-                   ( line 3 , column 24 )
-                   (Ident (Identifier "RR"))
-               ]
-           ])
-    , HardBreak
-    , Text "n"
-    , Code
-        "test/typ/math/syntax-01.typ"
-        ( line 4 , column 5 )
-        (FieldAccess
-           (Ident (Identifier "r"))
-           (FieldAccess
-              (Ident (Identifier "bar")) (Ident (Identifier "arrow"))))
-    , Code
-        "test/typ/math/syntax-01.typ"
-        ( line 4 , column 9 )
-        (FuncCall
-           (Ident (Identifier "cases"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/syntax-01.typ"
-                   ( line 5 , column 5 )
-                   (FieldAccess
-                      (Ident (Identifier "l"))
-                      (FieldAccess
-                         (Ident (Identifier "double")) (Ident (Identifier "bracket"))))
-               , Text "1"
-               , Code
-                   "test/typ/math/syntax-01.typ"
-                   ( line 5 , column 8 )
-                   (FieldAccess
-                      (Ident (Identifier "r"))
-                      (FieldAccess
-                         (Ident (Identifier "double")) (Ident (Identifier "bracket"))))
-               , MAlignPoint
-               , Text "if "
-               , Text "n"
-               , Code
-                   "test/typ/math/syntax-01.typ"
-                   ( line 5 , column 19 )
-                   (FieldAccess
-                      (Ident (Identifier "triple")) (Ident (Identifier "gt")))
-               , Text "10"
-               ]
-           , BlockArg
-               [ Text "2"
-               , Code
-                   "test/typ/math/syntax-01.typ"
-                   ( line 6 , column 7 )
-                   (Ident (Identifier "convolve"))
-               , Text "3"
-               , MAlignPoint
-               , Text "if "
-               , Text "n"
-               , Code
-                   "test/typ/math/syntax-01.typ"
-                   ( line 6 , column 19 )
-                   (FieldAccess (Ident (Identifier "not")) (Ident (Identifier "eq")))
-               , Text "5"
-               ]
-           , BlockArg
-               [ Text "1"
-               , Code
-                   "test/typ/math/syntax-01.typ"
-                   ( line 7 , column 7 )
-                   (Ident (Identifier "minus"))
-               , Text "0"
-               , Code
-                   "test/typ/math/syntax-01.typ"
-                   ( line 7 , column 11 )
-                   (Ident (Identifier "thick"))
-               , MAlignPoint
-               , Code
-                   "test/typ/math/syntax-01.typ"
-                   ( line 7 , column 18 )
-                   (FieldAccess (Ident (Identifier "h")) (Ident (Identifier "dots")))
-               ]
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { math.underline(body: { text(body: [f]), 
-                                                              text(body: [′]), 
-                                                              text(body: [:]), 
-                                                              text(body: [ℕ]), 
-                                                              text(body: [→]), 
-                                                              text(body: [ℝ]) }), 
-                                       linebreak(), 
-                                       text(body: [n]), 
-                                       text(body: [↦]), 
-                                       math.cases(children: ({ text(body: [⟦]), 
-                                                               text(body: [1]), 
-                                                               text(body: [⟧]), 
-                                                               math.alignpoint(), 
-                                                               text(body: [if ]), 
-                                                               text(body: [n]), 
-                                                               text(body: [⋙]), 
-                                                               text(body: [10]) }, 
-                                                             { text(body: [2]), 
-                                                               text(body: [∗]), 
-                                                               text(body: [3]), 
-                                                               math.alignpoint(), 
-                                                               text(body: [if ]), 
-                                                               text(body: [n]), 
-                                                               text(body: [≠]), 
-                                                               text(body: [5]) }, 
-                                                             { text(body: [1]), 
-                                                               text(body: [−]), 
-                                                               text(body: [0]), 
-                                                               text(body: [ ]), 
-                                                               math.alignpoint(), 
-                                                               text(body: […]) })) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/syntax-02.out b/test/out/math/syntax-02.out
deleted file mode 100644
--- a/test/out/math/syntax-02.out
+++ /dev/null
@@ -1,86 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/syntax-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/syntax-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/syntax-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Code
-        "test/typ/math/syntax-02.typ"
-        ( line 3 , column 3 )
-        (Ident (Identifier "dot"))
-    , HardBreak
-    , Code
-        "test/typ/math/syntax-02.typ"
-        ( line 3 , column 9 )
-        (Ident (Identifier "dots"))
-    , HardBreak
-    , Code
-        "test/typ/math/syntax-02.typ"
-        ( line 3 , column 16 )
-        (Ident (Identifier "ast"))
-    , HardBreak
-    , Code
-        "test/typ/math/syntax-02.typ"
-        ( line 3 , column 22 )
-        (Ident (Identifier "tilde"))
-    , HardBreak
-    , Code
-        "test/typ/math/syntax-02.typ"
-        ( line 3 , column 30 )
-        (Ident (Identifier "star"))
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [⋅]), 
-                                       linebreak(), 
-                                       text(body: […]), 
-                                       linebreak(), 
-                                       text(body: [∗]), 
-                                       linebreak(), 
-                                       text(body: [∼]), 
-                                       linebreak(), 
-                                       text(body: [⋆]) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/syntax-03.out b/test/out/math/syntax-03.out
deleted file mode 100644
--- a/test/out/math/syntax-03.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/math/unbalanced-00.out b/test/out/math/unbalanced-00.out
deleted file mode 100644
--- a/test/out/math/unbalanced-00.out
+++ /dev/null
@@ -1,128 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/unbalanced-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/unbalanced-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/unbalanced-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Equation
-    True
-    [ MFrac
-        (Text "1")
-        (MGroup
-           (Just "(")
-           Nothing
-           [ Text "2" , MGroup (Just "(") (Just ")") [ Text "x" ] ])
-    ]
-, SoftBreak
-, Equation
-    True
-    [ MAttach
-        (Just
-           (MGroup
-              (Just "(")
-              Nothing
-              [ Text "2"
-              , Text "y"
-              , MGroup (Just "(") (Just ")") [ Text "x" ]
-              , MGroup (Just "(") (Just ")") []
-              ]))
-        Nothing
-        (Text "1")
-    ]
-, SoftBreak
-, Equation
-    True
-    [ MFrac
-        (Text "1")
-        (MGroup
-           (Just "(")
-           Nothing
-           [ Text "2"
-           , Text "y"
-           , MGroup (Just "(") (Just ")") [ Text "x" ]
-           , MGroup
-               (Just "(")
-               (Just ")")
-               [ Text "2" , MGroup (Just "(") (Just ")") [ Text "3" ] ]
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: math.frac(denom: { text(body: [(]), 
-                                                        text(body: [2]), 
-                                                        math.lr(body: ({ [(], 
-                                                                         text(body: [x]), 
-                                                                         [)] })) }, 
-                                               num: text(body: [1])), 
-                               numbering: none), 
-                 text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: math.attach(b: { text(body: [(]), 
-                                                      text(body: [2]), 
-                                                      text(body: [y]), 
-                                                      math.lr(body: ({ [(], 
-                                                                       text(body: [x]), 
-                                                                       [)] })), 
-                                                      math.lr(body: ({ [(], 
-                                                                       [)] })) }, 
-                                                 base: text(body: [1]), 
-                                                 t: none), 
-                               numbering: none), 
-                 text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: math.frac(denom: { text(body: [(]), 
-                                                        text(body: [2]), 
-                                                        text(body: [y]), 
-                                                        math.lr(body: ({ [(], 
-                                                                         text(body: [x]), 
-                                                                         [)] })), 
-                                                        math.lr(body: ({ [(], 
-                                                                         text(body: [2]), 
-                                                                         math.lr(body: ({ [(], 
-                                                                                          text(body: [3]), 
-                                                                                          [)] })), 
-                                                                         [)] })) }, 
-                                               num: text(body: [1])), 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/underover-00.out b/test/out/math/underover-00.out
deleted file mode 100644
--- a/test/out/math/underover-00.out
+++ /dev/null
@@ -1,96 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/underover-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/underover-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/underover-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Text "x"
-    , Text "="
-    , Code
-        "test/typ/math/underover-00.typ"
-        ( line 3 , column 7 )
-        (FuncCall
-           (Ident (Identifier "underbrace"))
-           [ BlockArg
-               [ Text "1"
-               , Text "+"
-               , Text "2"
-               , Text "+"
-               , Code
-                   "test/typ/math/underover-00.typ"
-                   ( line 4 , column 11 )
-                   (FieldAccess (Ident (Identifier "h")) (Ident (Identifier "dots")))
-               , Text "+"
-               , Text "5"
-               ]
-           , BlockArg
-               [ Code
-                   "test/typ/math/underover-00.typ"
-                   ( line 5 , column 3 )
-                   (FuncCall
-                      (Ident (Identifier "underbrace"))
-                      [ BlockArg [ Text "numbers" ]
-                      , BlockArg [ Text "x" , Text "+" , Text "y" ]
-                      ])
-               ]
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [x]), 
-                                       text(body: [=]), 
-                                       math.underbrace(annotation: math.underbrace(annotation: { text(body: [x]), 
-                                                                                                 text(body: [+]), 
-                                                                                                 text(body: [y]) }, 
-                                                                                   body: text(body: [numbers])), 
-                                                       body: { text(body: [1]), 
-                                                               text(body: [+]), 
-                                                               text(body: [2]), 
-                                                               text(body: [+]), 
-                                                               text(body: […]), 
-                                                               text(body: [+]), 
-                                                               text(body: [5]) }) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/underover-01.out b/test/out/math/underover-01.out
deleted file mode 100644
--- a/test/out/math/underover-01.out
+++ /dev/null
@@ -1,101 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/underover-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/underover-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/underover-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Text "x"
-    , Text "="
-    , Code
-        "test/typ/math/underover-01.typ"
-        ( line 3 , column 7 )
-        (FuncCall
-           (Ident (Identifier "overbracket"))
-           [ BlockArg
-               [ Code
-                   "test/typ/math/underover-01.typ"
-                   ( line 4 , column 3 )
-                   (FuncCall
-                      (Ident (Identifier "overline"))
-                      [ BlockArg
-                          [ Code
-                              "test/typ/math/underover-01.typ"
-                              ( line 4 , column 12 )
-                              (FuncCall
-                                 (Ident (Identifier "underline"))
-                                 [ BlockArg [ Text "x" , Text "+" , Text "y" ] ])
-                          ]
-                      ])
-               ]
-           , BlockArg
-               [ Text "1"
-               , Text "+"
-               , Text "2"
-               , Text "+"
-               , Code
-                   "test/typ/math/underover-01.typ"
-                   ( line 5 , column 11 )
-                   (FieldAccess (Ident (Identifier "h")) (Ident (Identifier "dots")))
-               , Text "+"
-               , Text "5"
-               ]
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [x]), 
-                                       text(body: [=]), 
-                                       math.overbracket(annotation: { text(body: [1]), 
-                                                                      text(body: [+]), 
-                                                                      text(body: [2]), 
-                                                                      text(body: [+]), 
-                                                                      text(body: […]), 
-                                                                      text(body: [+]), 
-                                                                      text(body: [5]) }, 
-                                                        body: math.overline(body: math.underline(body: { text(body: [x]), 
-                                                                                                         text(body: [+]), 
-                                                                                                         text(body: [y]) }))) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/underover-02.out b/test/out/math/underover-02.out
deleted file mode 100644
--- a/test/out/math/underover-02.out
+++ /dev/null
@@ -1,105 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/underover-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/underover-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/underover-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Code
-        "test/typ/math/underover-02.typ"
-        ( line 3 , column 3 )
-        (FuncCall
-           (Ident (Identifier "underbracket"))
-           [ BlockArg
-               [ MGroup
-                   (Just "[")
-                   (Just "]")
-                   [ Text "1" , Text "," , MFrac (Text "2") (Text "3") ]
-               ]
-           , BlockArg [ Text " relevant stuff" ]
-           ])
-    , Code
-        "test/typ/math/underover-02.typ"
-        ( line 4 , column 11 )
-        (FieldAccess
-           (Ident (Identifier "long"))
-           (FieldAccess
-              (Ident (Identifier "double"))
-              (FieldAccess
-                 (Ident (Identifier "r"))
-                 (FieldAccess
-                    (Ident (Identifier "l")) (Ident (Identifier "arrow"))))))
-    , Code
-        "test/typ/math/underover-02.typ"
-        ( line 5 , column 3 )
-        (FuncCall
-           (Ident (Identifier "overbracket"))
-           [ BlockArg
-               [ MGroup
-                   (Just "[")
-                   (Just "]")
-                   [ MFrac (Text "4") (Text "5") , Text "," , Text "6" ]
-               ]
-           , BlockArg [ Text " irrelevant stuff" ]
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { math.underbracket(annotation: text(body: [ relevant stuff]), 
-                                                         body: math.lr(body: ({ [[], 
-                                                                                text(body: [1]), 
-                                                                                text(body: [,]), 
-                                                                                math.frac(denom: text(body: [3]), 
-                                                                                          num: text(body: [2])), 
-                                                                                []] }))), 
-                                       text(body: [⟺]), 
-                                       math.overbracket(annotation: text(body: [ irrelevant stuff]), 
-                                                        body: math.lr(body: ({ [[], 
-                                                                               math.frac(denom: text(body: [5]), 
-                                                                                         num: text(body: [4])), 
-                                                                               text(body: [,]), 
-                                                                               text(body: [6]), 
-                                                                               []] }))) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/vec-00.out b/test/out/math/vec-00.out
deleted file mode 100644
--- a/test/out/math/vec-00.out
+++ /dev/null
@@ -1,71 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/vec-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/vec-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/vec-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Equation
-    True
-    [ Text "v"
-    , Text "="
-    , Code
-        "test/typ/math/vec-00.typ"
-        ( line 3 , column 7 )
-        (FuncCall
-           (Ident (Identifier "vec"))
-           [ BlockArg [ Text "1" ]
-           , BlockArg [ Text "2" , Text "+" , Text "3" ]
-           , BlockArg [ Text "4" ]
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [v]), 
-                                       text(body: [=]), 
-                                       math.vec(children: (text(body: [1]), 
-                                                           { text(body: [2]), 
-                                                             text(body: [+]), 
-                                                             text(body: [3]) }, 
-                                                           text(body: [4]))) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/vec-01.out b/test/out/math/vec-01.out
deleted file mode 100644
--- a/test/out/math/vec-01.out
+++ /dev/null
@@ -1,72 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/math/vec-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/math/vec-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/math/vec-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/math/vec-01.typ"
-    ( line 3 , column 2 )
-    (Set
-       (FieldAccess
-          (Ident (Identifier "vec")) (Ident (Identifier "math")))
-       [ KeyValArg (Identifier "delim") (Literal (String "[")) ])
-, SoftBreak
-, Equation
-    True
-    [ Code
-        "test/typ/math/vec-01.typ"
-        ( line 4 , column 3 )
-        (FuncCall
-           (Ident (Identifier "vec"))
-           [ BlockArg [ Text "1" ] , BlockArg [ Text "2" ] ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: math.vec(children: (text(body: [1]), 
-                                                         text(body: [2])), 
-                                              delim: "["), 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/math/vec-02.out b/test/out/math/vec-02.out
deleted file mode 100644
--- a/test/out/math/vec-02.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/meta/bibliography-00.out b/test/out/meta/bibliography-00.out
deleted file mode 100644
--- a/test/out/meta/bibliography-00.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/meta/bibliography-01.out b/test/out/meta/bibliography-01.out
deleted file mode 100644
--- a/test/out/meta/bibliography-01.out
+++ /dev/null
@@ -1,105 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/bibliography-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/bibliography-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/bibliography-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/meta/bibliography-01.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 200.0 Pt)) ])
-, SoftBreak
-, Heading 1 [ Text "Details" ]
-, Text "See"
-, Space
-, Text "also"
-, Space
-, Code
-    "test/typ/meta/bibliography-01.typ"
-    ( line 4 , column 11 )
-    (FuncCall
-       (Ident (Identifier "cite"))
-       [ NormalArg (Label "distress")
-       , KeyValArg
-           (Identifier "supplement")
-           (Block (Content [ Text "p" , Text "." , Space , Text "22" ]))
-       ])
-, Text ","
-, Space
-, Ref
-    "arrgh"
-    (Block (Content [ Text "p" , Text "." , Space , Text "4" ]))
-, Text ","
-, Space
-, Text "and"
-, Space
-, Ref
-    "distress"
-    (Block (Content [ Text "p" , Text "." , Space , Text "5" ]))
-, Text "."
-, SoftBreak
-, Code
-    "test/typ/meta/bibliography-01.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "bibliography"))
-       [ NormalArg (Literal (String "/works.bib")) ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 heading(body: text(body: [Details]), 
-                         level: 1), 
-                 text(body: [See also ]), 
-                 cite(key: <distress>, 
-                      supplement: text(body: [p. 22])), 
-                 text(body: [, ]), 
-                 ref(supplement: text(body: [p. 4]), 
-                     target: <arrgh>), 
-                 text(body: [, and ]), 
-                 ref(supplement: text(body: [p. 5]), 
-                     target: <distress>), 
-                 text(body: [.
-]), 
-                 bibliography(path: "/works.bib"), 
-                 parbreak() })
diff --git a/test/out/meta/bibliography-02.out b/test/out/meta/bibliography-02.out
deleted file mode 100644
--- a/test/out/meta/bibliography-02.out
+++ /dev/null
@@ -1,166 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/bibliography-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/bibliography-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/bibliography-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/meta/bibliography-02.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 200.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/meta/bibliography-02.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "bibliography"))
-       [ NormalArg (Literal (String "/works.bib"))
-       , KeyValArg
-           (Identifier "title")
-           (Block
-              (Content
-                 [ Text "Works"
-                 , Space
-                 , Text "to"
-                 , Space
-                 , Text "be"
-                 , Space
-                 , Text "cited"
-                 ]))
-       , KeyValArg
-           (Identifier "style") (Literal (String "chicago-author-date"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/meta/bibliography-02.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "line"))
-       [ KeyValArg (Identifier "length") (Literal (Numeric 100.0 Percent))
-       ])
-, SoftBreak
-, Code
-    "test/typ/meta/bibliography-02.typ"
-    ( line 6 , column 2 )
-    (Block
-       (Content
-          [ Code
-              "test/typ/meta/bibliography-02.typ"
-              ( line 6 , column 4 )
-              (Set
-                 (Ident (Identifier "cite"))
-                 [ KeyValArg (Identifier "brackets") (Literal (Boolean False)) ])
-          , SoftBreak
-          , Text "As"
-          , Space
-          , Text "described"
-          , Space
-          , Text "by"
-          , Space
-          , Ref "netwok" (Literal Auto)
-          ]))
-, Text ","
-, SoftBreak
-, Text "the"
-, Space
-, Text "net"
-, Text "-"
-, Text "work"
-, Space
-, Text "is"
-, Space
-, Text "a"
-, Space
-, Text "creature"
-, Space
-, Text "of"
-, Space
-, Text "its"
-, Space
-, Text "own"
-, Text "."
-, SoftBreak
-, Text "This"
-, Space
-, Text "is"
-, Space
-, Text "close"
-, Space
-, Text "to"
-, Space
-, Text "piratery!"
-, Space
-, Ref "arrgh" (Literal Auto)
-, SoftBreak
-, Text "And"
-, Space
-, Text "quark!"
-, Space
-, Ref "quark" (Literal Auto)
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 bibliography(path: "/works.bib", 
-                              style: "chicago-author-date", 
-                              title: text(body: [Works to be cited])), 
-                 text(body: [
-]), 
-                 line(length: 100%), 
-                 text(body: [
-]), 
-                 text(body: [
-As described by ]), 
-                 ref(supplement: auto, 
-                     target: <netwok>), 
-                 text(body: [,
-the net-work is a creature of its own.
-This is close to piratery! ]), 
-                 ref(supplement: auto, 
-                     target: <arrgh>), 
-                 text(body: [
-And quark! ]), 
-                 ref(supplement: auto, 
-                     target: <quark>), 
-                 parbreak() })
diff --git a/test/out/meta/bibliography-03.out b/test/out/meta/bibliography-03.out
deleted file mode 100644
--- a/test/out/meta/bibliography-03.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/meta/bibliography-04.out b/test/out/meta/bibliography-04.out
deleted file mode 100644
--- a/test/out/meta/bibliography-04.out
+++ /dev/null
@@ -1,120 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/bibliography-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/bibliography-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/bibliography-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/meta/bibliography-04.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 200.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/meta/bibliography-04.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "heading"))
-       [ KeyValArg (Identifier "numbering") (Literal (String "1.")) ])
-, SoftBreak
-, Code
-    "test/typ/meta/bibliography-04.typ"
-    ( line 4 , column 2 )
-    (Show
-       (Just (Ident (Identifier "bibliography")))
-       (Set
-          (Ident (Identifier "heading"))
-          [ KeyValArg (Identifier "numbering") (Literal (String "1.")) ]))
-, ParBreak
-, Heading 1 [ Text "Multiple" , Space , Text "Bibs" ]
-, Text "Now"
-, Space
-, Text "we"
-, Space
-, Text "have"
-, Space
-, Text "multiple"
-, Space
-, Text "bibliographies"
-, Space
-, Text "containing"
-, Space
-, Code
-    "test/typ/meta/bibliography-04.typ"
-    ( line 7 , column 49 )
-    (FuncCall
-       (Ident (Identifier "cite")) [ NormalArg (Label "glacier-melt") ])
-, Code
-    "test/typ/meta/bibliography-04.typ"
-    ( line 7 , column 70 )
-    (FuncCall
-       (Ident (Identifier "cite")) [ NormalArg (Label "keshav2007read") ])
-, SoftBreak
-, Code
-    "test/typ/meta/bibliography-04.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "bibliography"))
-       [ NormalArg
-           (Array
-              [ Reg (Literal (String "/works.bib"))
-              , Reg (Literal (String "/works_too.bib"))
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 heading(body: text(body: [Multiple Bibs]), 
-                         level: 1, 
-                         numbering: "1."), 
-                 text(body: [Now we have multiple bibliographies containing ]), 
-                 cite(key: <glacier-melt>), 
-                 cite(key: <keshav2007read>), 
-                 text(body: [
-]), 
-                 bibliography(path: ("/works.bib", 
-                                     "/works_too.bib")), 
-                 parbreak() })
diff --git a/test/out/meta/bibliography-ordering-00.out b/test/out/meta/bibliography-ordering-00.out
deleted file mode 100644
--- a/test/out/meta/bibliography-ordering-00.out
+++ /dev/null
@@ -1,134 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/bibliography-ordering-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/bibliography-ordering-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/bibliography-ordering-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/meta/bibliography-ordering-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 300.0 Pt)) ])
-, ParBreak
-, Ref "mcintosh_anxiety" (Literal Auto)
-, Text ","
-, Space
-, Ref "psychology25" (Literal Auto)
-, SoftBreak
-, Ref "netwok" (Literal Auto)
-, Text ","
-, Space
-, Ref "issue201" (Literal Auto)
-, Text ","
-, Space
-, Ref "arrgh" (Literal Auto)
-, Text ","
-, Space
-, Ref "quark" (Literal Auto)
-, Text ","
-, Space
-, Ref "distress" (Literal Auto)
-, Text ","
-, SoftBreak
-, Ref "glacier-melt" (Literal Auto)
-, Text ","
-, Space
-, Ref "issue201" (Literal Auto)
-, Text ","
-, Space
-, Ref "tolkien54" (Literal Auto)
-, Text ","
-, Space
-, Ref "sharing" (Literal Auto)
-, Text ","
-, Space
-, Ref "restful" (Literal Auto)
-, ParBreak
-, Code
-    "test/typ/meta/bibliography-ordering-00.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "bibliography"))
-       [ NormalArg (Literal (String "/works.bib")) ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 ref(supplement: auto, 
-                     target: <mcintosh_anxiety>), 
-                 text(body: [, ]), 
-                 ref(supplement: auto, 
-                     target: <psychology25>), 
-                 text(body: [
-]), 
-                 ref(supplement: auto, 
-                     target: <netwok>), 
-                 text(body: [, ]), 
-                 ref(supplement: auto, 
-                     target: <issue201>), 
-                 text(body: [, ]), 
-                 ref(supplement: auto, 
-                     target: <arrgh>), 
-                 text(body: [, ]), 
-                 ref(supplement: auto, 
-                     target: <quark>), 
-                 text(body: [, ]), 
-                 ref(supplement: auto, 
-                     target: <distress>), 
-                 text(body: [,
-]), 
-                 ref(supplement: auto, 
-                     target: <glacier-melt>), 
-                 text(body: [, ]), 
-                 ref(supplement: auto, 
-                     target: <issue201>), 
-                 text(body: [, ]), 
-                 ref(supplement: auto, 
-                     target: <tolkien54>), 
-                 text(body: [, ]), 
-                 ref(supplement: auto, 
-                     target: <sharing>), 
-                 text(body: [, ]), 
-                 ref(supplement: auto, 
-                     target: <restful>), 
-                 parbreak(), 
-                 bibliography(path: "/works.bib"), 
-                 parbreak() })
diff --git a/test/out/meta/cite-footnote-00.out b/test/out/meta/cite-footnote-00.out
deleted file mode 100644
--- a/test/out/meta/cite-footnote-00.out
+++ /dev/null
@@ -1,83 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/cite-footnote-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/cite-footnote-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/cite-footnote-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Text "Hello"
-, Space
-, Ref "netwok" (Literal Auto)
-, SoftBreak
-, Text "And"
-, Space
-, Text "again"
-, Text ":"
-, Space
-, Ref "netwok" (Literal Auto)
-, ParBreak
-, Code
-    "test/typ/meta/cite-footnote-00.typ"
-    ( line 5 , column 2 )
-    (FuncCall (Ident (Identifier "pagebreak")) [])
-, SoftBreak
-, Code
-    "test/typ/meta/cite-footnote-00.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "bibliography"))
-       [ NormalArg (Literal (String "/works.bib"))
-       , KeyValArg (Identifier "style") (Literal (String "chicago-notes"))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-Hello ]), 
-                 ref(supplement: auto, 
-                     target: <netwok>), 
-                 text(body: [
-And again: ]), 
-                 ref(supplement: auto, 
-                     target: <netwok>), 
-                 parbreak(), 
-                 pagebreak(), 
-                 text(body: [
-]), 
-                 bibliography(path: "/works.bib", 
-                              style: "chicago-notes"), 
-                 parbreak() })
diff --git a/test/out/meta/counter-00.out b/test/out/meta/counter-00.out
deleted file mode 100644
--- a/test/out/meta/counter-00.out
+++ /dev/null
@@ -1,188 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/counter-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/counter-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/counter-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/meta/counter-00.typ"
-    ( line 3 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "mine")))
-       (FuncCall
-          (Ident (Identifier "counter"))
-          [ NormalArg (Literal (String "mine!")) ]))
-, ParBreak
-, Text "Final"
-, Text ":"
-, Space
-, Code
-    "test/typ/meta/counter-00.typ"
-    ( line 5 , column 9 )
-    (FuncCall
-       (Ident (Identifier "locate"))
-       [ NormalArg
-           (FuncExpr
-              [ NormalParam (Identifier "loc") ]
-              (FuncCall
-                 (FieldAccess
-                    (Ident (Identifier "at"))
-                    (FuncCall
-                       (FieldAccess
-                          (Ident (Identifier "final")) (Ident (Identifier "mine")))
-                       [ NormalArg (Ident (Identifier "loc")) ]))
-                 [ NormalArg (Literal (Int 0)) ]))
-       ])
-, Space
-, HardBreak
-, Code
-    "test/typ/meta/counter-00.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (FieldAccess
-          (Ident (Identifier "step")) (Ident (Identifier "mine")))
-       [])
-, SoftBreak
-, Text "First"
-, Text ":"
-, Space
-, Code
-    "test/typ/meta/counter-00.typ"
-    ( line 7 , column 9 )
-    (FuncCall
-       (FieldAccess
-          (Ident (Identifier "display")) (Ident (Identifier "mine")))
-       [])
-, Space
-, HardBreak
-, Code
-    "test/typ/meta/counter-00.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (FieldAccess
-          (Ident (Identifier "update")) (Ident (Identifier "mine")))
-       [ NormalArg (Literal (Int 7)) ])
-, SoftBreak
-, Code
-    "test/typ/meta/counter-00.typ"
-    ( line 9 , column 2 )
-    (FuncCall
-       (FieldAccess
-          (Ident (Identifier "display")) (Ident (Identifier "mine")))
-       [ NormalArg (Literal (String "1 of 1"))
-       , KeyValArg (Identifier "both") (Literal (Boolean True))
-       ])
-, Space
-, HardBreak
-, Code
-    "test/typ/meta/counter-00.typ"
-    ( line 10 , column 2 )
-    (FuncCall
-       (FieldAccess
-          (Ident (Identifier "step")) (Ident (Identifier "mine")))
-       [])
-, SoftBreak
-, Code
-    "test/typ/meta/counter-00.typ"
-    ( line 11 , column 2 )
-    (FuncCall
-       (FieldAccess
-          (Ident (Identifier "step")) (Ident (Identifier "mine")))
-       [])
-, SoftBreak
-, Text "Second"
-, Text ":"
-, Space
-, Code
-    "test/typ/meta/counter-00.typ"
-    ( line 12 , column 10 )
-    (FuncCall
-       (FieldAccess
-          (Ident (Identifier "display")) (Ident (Identifier "mine")))
-       [ NormalArg (Literal (String "I")) ])
-, SoftBreak
-, Code
-    "test/typ/meta/counter-00.typ"
-    ( line 13 , column 2 )
-    (FuncCall
-       (FieldAccess
-          (Ident (Identifier "update")) (Ident (Identifier "mine")))
-       [ NormalArg
-           (FuncExpr
-              [ NormalParam (Identifier "n") ]
-              (Times (Ident (Identifier "n")) (Literal (Int 2))))
-       ])
-, SoftBreak
-, Code
-    "test/typ/meta/counter-00.typ"
-    ( line 14 , column 2 )
-    (FuncCall
-       (FieldAccess
-          (Ident (Identifier "step")) (Ident (Identifier "mine")))
-       [])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [Final: ]), 
-                 locate(func: ), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 text(body: [
-First: ]), 
-                 text(body: [1]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 text(body: [
-]), 
-                 text(body: [7]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 text(body: [
-]), 
-                 text(body: [
-Second: ]), 
-                 text(body: [9]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak() })
diff --git a/test/out/meta/counter-01.out b/test/out/meta/counter-01.out
deleted file mode 100644
--- a/test/out/meta/counter-01.out
+++ /dev/null
@@ -1,127 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/counter-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/counter-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/counter-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/meta/counter-01.typ"
-    ( line 3 , column 2 )
-    (Let (BasicBind (Just (Identifier "label"))) (Label "heya"))
-, SoftBreak
-, Code
-    "test/typ/meta/counter-01.typ"
-    ( line 4 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "count")))
-       (FuncCall
-          (FieldAccess
-             (Ident (Identifier "display"))
-             (FuncCall
-                (Ident (Identifier "counter"))
-                [ NormalArg (Ident (Identifier "label")) ]))
-          []))
-, SoftBreak
-, Code
-    "test/typ/meta/counter-01.typ"
-    ( line 5 , column 2 )
-    (LetFunc
-       (Identifier "elem")
-       [ NormalParam (Identifier "it") ]
-       (Block
-          (Content
-             [ Code
-                 "test/typ/meta/counter-01.typ"
-                 ( line 5 , column 19 )
-                 (FuncCall
-                    (Ident (Identifier "box")) [ NormalArg (Ident (Identifier "it")) ])
-             , Space
-             , Code
-                 "test/typ/meta/counter-01.typ"
-                 ( line 5 , column 28 )
-                 (Ident (Identifier "label"))
-             ])))
-, ParBreak
-, Code
-    "test/typ/meta/counter-01.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "elem"))
-       [ BlockArg [ Text "hey," , Space , Text "there!" ] ])
-, Space
-, Code
-    "test/typ/meta/counter-01.typ"
-    ( line 7 , column 21 )
-    (Ident (Identifier "count"))
-, Space
-, HardBreak
-, Code
-    "test/typ/meta/counter-01.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "elem"))
-       [ BlockArg [ Text "more" , Space , Text "here!" ] ])
-, Space
-, Code
-    "test/typ/meta/counter-01.typ"
-    ( line 8 , column 20 )
-    (Ident (Identifier "count"))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 box(body: text(body: [hey, there!])), 
-                 text(body: [ ]), 
-                 <heya>, 
-                 text(body: [ ]), 
-                 text(body: [0]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 box(body: text(body: [more here!])), 
-                 text(body: [ ]), 
-                 <heya>, 
-                 text(body: [ ]), 
-                 text(body: [0]), 
-                 parbreak() })
diff --git a/test/out/meta/counter-02.out b/test/out/meta/counter-02.out
deleted file mode 100644
--- a/test/out/meta/counter-02.out
+++ /dev/null
@@ -1,189 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/counter-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/counter-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/counter-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/meta/counter-02.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "heading"))
-       [ KeyValArg (Identifier "numbering") (Literal (String "1.a.")) ])
-, SoftBreak
-, Code
-    "test/typ/meta/counter-02.typ"
-    ( line 4 , column 2 )
-    (Show
-       (Just (Ident (Identifier "heading")))
-       (Set
-          (Ident (Identifier "text"))
-          [ NormalArg (Literal (Numeric 10.0 Pt)) ]))
-, SoftBreak
-, Code
-    "test/typ/meta/counter-02.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (FieldAccess
-          (Ident (Identifier "step"))
-          (FuncCall
-             (Ident (Identifier "counter"))
-             [ NormalArg (Ident (Identifier "heading")) ]))
-       [])
-, ParBreak
-, Heading 1 [ Text "Alpha" ]
-, Text "In"
-, Space
-, Code
-    "test/typ/meta/counter-02.typ"
-    ( line 8 , column 5 )
-    (FuncCall
-       (FieldAccess
-          (Ident (Identifier "display"))
-          (FuncCall
-             (Ident (Identifier "counter"))
-             [ NormalArg (Ident (Identifier "heading")) ]))
-       [])
-, SoftBreak
-, Heading 2 [ Text "Beta" ]
-, Code
-    "test/typ/meta/counter-02.typ"
-    ( line 11 , column 2 )
-    (Set
-       (Ident (Identifier "heading"))
-       [ KeyValArg (Identifier "numbering") (Literal None) ])
-, SoftBreak
-, Heading 1 [ Text "Gamma" ]
-, Code
-    "test/typ/meta/counter-02.typ"
-    ( line 13 , column 2 )
-    (FuncCall
-       (Ident (Identifier "heading"))
-       [ KeyValArg (Identifier "numbering") (Literal (String "I."))
-       , BlockArg [ Text "Delta" ]
-       ])
-, ParBreak
-, Text "At"
-, Space
-, Text "Beta,"
-, Space
-, Text "it"
-, Space
-, Text "was"
-, Space
-, Code
-    "test/typ/meta/counter-02.typ"
-    ( line 15 , column 18 )
-    (FuncCall
-       (Ident (Identifier "locate"))
-       [ NormalArg
-           (FuncExpr
-              [ NormalParam (Identifier "loc") ]
-              (Block
-                 (CodeBlock
-                    [ Let
-                        (BasicBind (Just (Identifier "it")))
-                        (FuncCall
-                           (FieldAccess
-                              (Ident (Identifier "find"))
-                              (FuncCall
-                                 (Ident (Identifier "query"))
-                                 [ NormalArg (Ident (Identifier "heading"))
-                                 , NormalArg (Ident (Identifier "loc"))
-                                 ]))
-                           [ NormalArg
-                               (FuncExpr
-                                  [ NormalParam (Identifier "it") ]
-                                  (Equals
-                                     (FieldAccess
-                                        (Ident (Identifier "body")) (Ident (Identifier "it")))
-                                     (Block (Content [ Text "Beta" ]))))
-                           ])
-                    , FuncCall
-                        (Ident (Identifier "numbering"))
-                        [ NormalArg
-                            (FieldAccess
-                               (Ident (Identifier "numbering")) (Ident (Identifier "it")))
-                        , SpreadArg
-                            (FuncCall
-                               (FieldAccess
-                                  (Ident (Identifier "at"))
-                                  (FuncCall
-                                     (Ident (Identifier "counter"))
-                                     [ NormalArg (Ident (Identifier "heading")) ]))
-                               [ NormalArg
-                                   (FuncCall
-                                      (FieldAccess
-                                         (Ident (Identifier "location")) (Ident (Identifier "it")))
-                                      [])
-                               ])
-                        ]
-                    ])))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 heading(body: text(body: [Alpha]), 
-                         level: 1, 
-                         numbering: "1.a."), 
-                 text(body: [In ]), 
-                 text(body: [1]), 
-                 text(body: [
-]), 
-                 heading(body: text(body: [Beta]), 
-                         level: 2, 
-                         numbering: "1.a."), 
-                 text(body: [
-]), 
-                 heading(body: text(body: [Gamma]), 
-                         level: 1, 
-                         numbering: none), 
-                 heading(body: text(body: [Delta]), 
-                         numbering: "I."), 
-                 parbreak(), 
-                 text(body: [At Beta, it was ]), 
-                 locate(func: ), 
-                 parbreak() })
diff --git a/test/out/meta/counter-03.out b/test/out/meta/counter-03.out
deleted file mode 100644
--- a/test/out/meta/counter-03.out
+++ /dev/null
@@ -1,179 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/counter-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/counter-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/counter-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/meta/counter-03.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "figure"))
-       [ KeyValArg (Identifier "numbering") (Literal (String "A"))
-       , KeyValArg
-           (Identifier "caption")
-           (Block
-              (Content
-                 [ Text "Four"
-                 , Space
-                 , Quote '\''
-                 , Text "A"
-                 , Quote '\''
-                 , Text "s"
-                 ]))
-       , KeyValArg (Identifier "kind") (Ident (Identifier "image"))
-       , KeyValArg (Identifier "supplement") (Literal (String "Figure"))
-       , BlockArg [ Emph [ Text "AAAA!" ] ]
-       ])
-, SoftBreak
-, Code
-    "test/typ/meta/counter-03.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "figure"))
-       [ KeyValArg (Identifier "numbering") (Literal None)
-       , KeyValArg
-           (Identifier "caption")
-           (Block
-              (Content
-                 [ Text "Four"
-                 , Space
-                 , Quote '\''
-                 , Text "B"
-                 , Quote '\''
-                 , Text "s"
-                 ]))
-       , KeyValArg (Identifier "kind") (Ident (Identifier "image"))
-       , KeyValArg (Identifier "supplement") (Literal (String "Figure"))
-       , BlockArg [ Emph [ Text "BBBB!" ] ]
-       ])
-, SoftBreak
-, Code
-    "test/typ/meta/counter-03.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "figure"))
-       [ KeyValArg
-           (Identifier "caption")
-           (Block
-              (Content
-                 [ Text "Four"
-                 , Space
-                 , Quote '\''
-                 , Text "C"
-                 , Quote '\''
-                 , Text "s"
-                 ]))
-       , KeyValArg (Identifier "kind") (Ident (Identifier "image"))
-       , KeyValArg (Identifier "supplement") (Literal (String "Figure"))
-       , BlockArg [ Emph [ Text "CCCC!" ] ]
-       ])
-, SoftBreak
-, Code
-    "test/typ/meta/counter-03.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (FieldAccess
-          (Ident (Identifier "update"))
-          (FuncCall
-             (Ident (Identifier "counter"))
-             [ NormalArg
-                 (FuncCall
-                    (FieldAccess
-                       (Ident (Identifier "where")) (Ident (Identifier "figure")))
-                    [ KeyValArg (Identifier "kind") (Ident (Identifier "image")) ])
-             ]))
-       [ NormalArg
-           (FuncExpr
-              [ NormalParam (Identifier "n") ]
-              (Plus (Ident (Identifier "n")) (Literal (Int 3))))
-       ])
-, SoftBreak
-, Code
-    "test/typ/meta/counter-03.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "figure"))
-       [ KeyValArg
-           (Identifier "caption")
-           (Block
-              (Content
-                 [ Text "Four"
-                 , Space
-                 , Quote '\''
-                 , Text "D"
-                 , Quote '\''
-                 , Text "s"
-                 ]))
-       , KeyValArg (Identifier "kind") (Ident (Identifier "image"))
-       , KeyValArg (Identifier "supplement") (Literal (String "Figure"))
-       , BlockArg [ Emph [ Text "DDDD!" ] ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 figure(body: emph(body: text(body: [AAAA!])), 
-                        caption: text(body: [Four ‘A’s]), 
-                        kind: , 
-                        numbering: "A", 
-                        supplement: "Figure"), 
-                 text(body: [
-]), 
-                 figure(body: emph(body: text(body: [BBBB!])), 
-                        caption: text(body: [Four ‘B’s]), 
-                        kind: , 
-                        numbering: none, 
-                        supplement: "Figure"), 
-                 text(body: [
-]), 
-                 figure(body: emph(body: text(body: [CCCC!])), 
-                        caption: text(body: [Four ‘C’s]), 
-                        kind: , 
-                        supplement: "Figure"), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 figure(body: emph(body: text(body: [DDDD!])), 
-                        caption: text(body: [Four ‘D’s]), 
-                        kind: , 
-                        supplement: "Figure"), 
-                 parbreak() })
diff --git a/test/out/meta/counter-page-00.out b/test/out/meta/counter-page-00.out
deleted file mode 100644
--- a/test/out/meta/counter-page-00.out
+++ /dev/null
@@ -1,130 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/counter-page-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/counter-page-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/counter-page-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, SoftBreak
-, Code
-    "test/typ/meta/counter-page-00.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 50.0 Pt))
-       , KeyValArg
-           (Identifier "margin")
-           (Dict
-              [ Reg ( Ident (Identifier "bottom") , Literal (Numeric 20.0 Pt) )
-              , Reg ( Ident (Identifier "rest") , Literal (Numeric 10.0 Pt) )
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/meta/counter-page-00.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 12)) ])
-, SoftBreak
-, Code
-    "test/typ/meta/counter-page-00.typ"
-    ( line 6 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "numbering") (Literal (String "(i)")) ])
-, SoftBreak
-, Code
-    "test/typ/meta/counter-page-00.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 6)) ])
-, SoftBreak
-, Code
-    "test/typ/meta/counter-page-00.typ"
-    ( line 8 , column 2 )
-    (FuncCall (Ident (Identifier "pagebreak")) [])
-, SoftBreak
-, Code
-    "test/typ/meta/counter-page-00.typ"
-    ( line 9 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "numbering") (Literal (String "1 / 1")) ])
-, SoftBreak
-, Code
-    "test/typ/meta/counter-page-00.typ"
-    ( line 10 , column 2 )
-    (FuncCall
-       (FieldAccess
-          (Ident (Identifier "update"))
-          (FuncCall
-             (Ident (Identifier "counter"))
-             [ NormalArg (Ident (Identifier "page")) ]))
-       [ NormalArg (Literal (Int 1)) ])
-, SoftBreak
-, Code
-    "test/typ/meta/counter-page-00.typ"
-    ( line 11 , column 2 )
-    (FuncCall
-       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 20)) ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [Lorem ipsum dolor sit amet, consectetur]), 
-                 text(body: [
-]), 
-                 pagebreak(), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut]), 
-                 parbreak() })
diff --git a/test/out/meta/document-00.out b/test/out/meta/document-00.out
deleted file mode 100644
--- a/test/out/meta/document-00.out
+++ /dev/null
@@ -1,62 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/document-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/document-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/document-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/meta/document-00.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "document"))
-       [ KeyValArg (Identifier "title") (Literal (String "Hello")) ])
-, SoftBreak
-, Text "What"
-, Quote '\''
-, Text "s"
-, Space
-, Text "up?"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-What’s up?]), 
-                 parbreak() })
diff --git a/test/out/meta/document-01.out b/test/out/meta/document-01.out
deleted file mode 100644
--- a/test/out/meta/document-01.out
+++ /dev/null
@@ -1,58 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/document-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/document-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/document-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/meta/document-01.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "document"))
-       [ KeyValArg
-           (Identifier "author")
-           (Array [ Reg (Literal (String "A")) , Reg (Literal (String "B")) ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak() })
diff --git a/test/out/meta/document-02.out b/test/out/meta/document-02.out
deleted file mode 100644
--- a/test/out/meta/document-02.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/meta/document-03.out b/test/out/meta/document-03.out
deleted file mode 100644
--- a/test/out/meta/document-03.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/meta/document-04.out b/test/out/meta/document-04.out
deleted file mode 100644
--- a/test/out/meta/document-04.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/meta/document-05.out b/test/out/meta/document-05.out
deleted file mode 100644
--- a/test/out/meta/document-05.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/meta/document-06.out b/test/out/meta/document-06.out
deleted file mode 100644
--- a/test/out/meta/document-06.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/meta/document-07.out b/test/out/meta/document-07.out
deleted file mode 100644
--- a/test/out/meta/document-07.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/meta/figure-00.out b/test/out/meta/figure-00.out
deleted file mode 100644
--- a/test/out/meta/figure-00.out
+++ /dev/null
@@ -1,225 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/figure-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/figure-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/figure-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/meta/figure-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 150.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/meta/figure-00.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "figure"))
-       [ KeyValArg (Identifier "numbering") (Literal (String "I")) ])
-, ParBreak
-, Text "We"
-, Space
-, Text "can"
-, Space
-, Text "clearly"
-, Space
-, Text "see"
-, Space
-, Text "that"
-, Space
-, Ref "fig-cylinder" (Literal Auto)
-, Space
-, Text "and"
-, SoftBreak
-, Ref "tab-complex" (Literal Auto)
-, Space
-, Text "are"
-, Space
-, Text "relevant"
-, Space
-, Text "in"
-, Space
-, Text "this"
-, Space
-, Text "context"
-, Text "."
-, ParBreak
-, Code
-    "test/typ/meta/figure-00.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "figure"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "table"))
-              [ KeyValArg (Identifier "columns") (Literal (Int 2))
-              , BlockArg [ Text "a" ]
-              , BlockArg [ Text "b" ]
-              ])
-       , KeyValArg
-           (Identifier "caption")
-           (Block
-              (Content
-                 [ Text "The"
-                 , Space
-                 , Text "basic"
-                 , Space
-                 , Text "table"
-                 , Text "."
-                 ]))
-       ])
-, Space
-, Code
-    "test/typ/meta/figure-00.typ"
-    ( line 11 , column 3 )
-    (Label "tab-basic")
-, ParBreak
-, Code
-    "test/typ/meta/figure-00.typ"
-    ( line 13 , column 2 )
-    (FuncCall
-       (Ident (Identifier "figure"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "pad"))
-              [ KeyValArg (Identifier "y") (Negated (Literal (Numeric 6.0 Pt)))
-              , NormalArg
-                  (FuncCall
-                     (Ident (Identifier "image"))
-                     [ NormalArg (Literal (String "/assets/files/cylinder.svg"))
-                     , KeyValArg (Identifier "height") (Literal (Numeric 2.0 Cm))
-                     ])
-              ])
-       , KeyValArg
-           (Identifier "caption")
-           (Block
-              (Content
-                 [ Text "The"
-                 , Space
-                 , Text "basic"
-                 , Space
-                 , Text "shapes"
-                 , Text "."
-                 ]))
-       , KeyValArg (Identifier "numbering") (Literal (String "I"))
-       ])
-, Space
-, Code
-    "test/typ/meta/figure-00.typ"
-    ( line 17 , column 3 )
-    (Label "fig-cylinder")
-, ParBreak
-, Code
-    "test/typ/meta/figure-00.typ"
-    ( line 19 , column 2 )
-    (FuncCall
-       (Ident (Identifier "figure"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "table"))
-              [ KeyValArg (Identifier "columns") (Literal (Int 3))
-              , BlockArg [ Text "a" ]
-              , BlockArg [ Text "b" ]
-              , BlockArg [ Text "c" ]
-              , BlockArg [ Text "d" ]
-              , BlockArg [ Text "e" ]
-              , BlockArg [ Text "f" ]
-              ])
-       , KeyValArg
-           (Identifier "caption")
-           (Block
-              (Content
-                 [ Text "The"
-                 , Space
-                 , Text "complex"
-                 , Space
-                 , Text "table"
-                 , Text "."
-                 ]))
-       ])
-, Space
-, Code
-    "test/typ/meta/figure-00.typ"
-    ( line 22 , column 3 )
-    (Label "tab-complex")
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [We can clearly see that ]), 
-                 ref(supplement: auto, 
-                     target: <fig-cylinder>), 
-                 text(body: [ and
-]), 
-                 ref(supplement: auto, 
-                     target: <tab-complex>), 
-                 text(body: [ are relevant in this context.]), 
-                 parbreak(), 
-                 figure(body: table(children: (text(body: [a]), 
-                                               text(body: [b])), 
-                                    columns: 2), 
-                        caption: text(body: [The basic table.]), 
-                        numbering: "I"), 
-                 text(body: [ ]), 
-                 <tab-basic>, 
-                 parbreak(), 
-                 figure(body: pad(body: image(height: 2.0cm, 
-                                              path: "/assets/files/cylinder.svg"), 
-                                  y: -6.0pt), 
-                        caption: text(body: [The basic shapes.]), 
-                        numbering: "I"), 
-                 text(body: [ ]), 
-                 <fig-cylinder>, 
-                 parbreak(), 
-                 figure(body: table(children: (text(body: [a]), 
-                                               text(body: [b]), 
-                                               text(body: [c]), 
-                                               text(body: [d]), 
-                                               text(body: [e]), 
-                                               text(body: [f])), 
-                                    columns: 3), 
-                        caption: text(body: [The complex table.]), 
-                        numbering: "I"), 
-                 text(body: [ ]), 
-                 <tab-complex>, 
-                 parbreak() })
diff --git a/test/out/meta/figure-01.out b/test/out/meta/figure-01.out
deleted file mode 100644
--- a/test/out/meta/figure-01.out
+++ /dev/null
@@ -1,78 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/figure-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/figure-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/figure-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, ParBreak
-, Comment
-, Code
-    "test/typ/meta/figure-01.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "figure"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "table"))
-              [ KeyValArg (Identifier "columns") (Literal (Int 2))
-              , NormalArg
-                  (Block (Content [ Text "Second" , Space , Text "cylinder" ]))
-              , NormalArg
-                  (FuncCall
-                     (Ident (Identifier "image"))
-                     [ NormalArg (Literal (String "/assets/files/cylinder.svg")) ])
-              ])
-       , KeyValArg
-           (Identifier "caption")
-           (Literal (String "A table containing images."))
-       ])
-, Space
-, Code
-    "test/typ/meta/figure-01.typ"
-    ( line 11 , column 3 )
-    (Label "fig-image-in-table")
-, ParBreak
-]
---- evaluated ---
-document(body: { parbreak(), 
-                 figure(body: table(children: (text(body: [Second cylinder]), 
-                                               image(path: "/assets/files/cylinder.svg")), 
-                                    columns: 2), 
-                        caption: "A table containing images."), 
-                 text(body: [ ]), 
-                 <fig-image-in-table>, 
-                 parbreak() })
diff --git a/test/out/meta/figure-02.out b/test/out/meta/figure-02.out
deleted file mode 100644
--- a/test/out/meta/figure-02.out
+++ /dev/null
@@ -1,291 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/figure-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/figure-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/figure-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, ParBreak
-, Comment
-, Code
-    "test/typ/meta/figure-02.typ"
-    ( line 4 , column 2 )
-    (Show
-       (Just
-          (FuncCall
-             (FieldAccess
-                (Ident (Identifier "where")) (Ident (Identifier "figure")))
-             [ KeyValArg (Identifier "kind") (Literal (String "theorem")) ]))
-       (FuncExpr
-          [ NormalParam (Identifier "it") ]
-          (Block
-             (CodeBlock
-                [ Let (BasicBind (Just (Identifier "name"))) (Literal None)
-                , If
-                    [ ( Not
-                          (Equals
-                             (FieldAccess
-                                (Ident (Identifier "caption")) (Ident (Identifier "it")))
-                             (Literal None))
-                      , Block
-                          (CodeBlock
-                             [ Assign
-                                 (Ident (Identifier "name"))
-                                 (Block
-                                    (Content
-                                       [ Space
-                                       , Code
-                                           "test/typ/meta/figure-02.typ"
-                                           ( line 7 , column 15 )
-                                           (FuncCall
-                                              (Ident (Identifier "emph"))
-                                              [ NormalArg
-                                                  (FieldAccess
-                                                     (Ident (Identifier "caption"))
-                                                     (Ident (Identifier "it")))
-                                              ])
-                                       ]))
-                             ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (CodeBlock
-                             [ Assign (Ident (Identifier "name")) (Block (Content [])) ])
-                      )
-                    ]
-                , Let (BasicBind (Just (Identifier "title"))) (Literal None)
-                , If
-                    [ ( Not
-                          (Equals
-                             (FieldAccess
-                                (Ident (Identifier "numbering")) (Ident (Identifier "it")))
-                             (Literal None))
-                      , Block
-                          (CodeBlock
-                             [ Assign
-                                 (Ident (Identifier "title"))
-                                 (FieldAccess
-                                    (Ident (Identifier "supplement")) (Ident (Identifier "it")))
-                             , If
-                                 [ ( Not
-                                       (Equals
-                                          (FieldAccess
-                                             (Ident (Identifier "numbering"))
-                                             (Ident (Identifier "it")))
-                                          (Literal None))
-                                   , Block
-                                       (CodeBlock
-                                          [ Assign
-                                              (Ident (Identifier "title"))
-                                              (Plus
-                                                 (Ident (Identifier "title"))
-                                                 (Plus
-                                                    (Literal (String " "))
-                                                    (FuncCall
-                                                       (FieldAccess
-                                                          (Ident (Identifier "display"))
-                                                          (FieldAccess
-                                                             (Ident (Identifier "counter"))
-                                                             (Ident (Identifier "it"))))
-                                                       [ NormalArg
-                                                           (FieldAccess
-                                                              (Ident (Identifier "numbering"))
-                                                              (Ident (Identifier "it")))
-                                                       ])))
-                                          ])
-                                   )
-                                 ]
-                             ])
-                      )
-                    ]
-                , Assign
-                    (Ident (Identifier "title"))
-                    (FuncCall
-                       (Ident (Identifier "strong"))
-                       [ NormalArg (Ident (Identifier "title")) ])
-                , FuncCall
-                    (Ident (Identifier "pad"))
-                    [ KeyValArg (Identifier "top") (Literal (Numeric 0.0 Em))
-                    , KeyValArg (Identifier "bottom") (Literal (Numeric 0.0 Em))
-                    , NormalArg
-                        (FuncCall
-                           (Ident (Identifier "block"))
-                           [ KeyValArg
-                               (Identifier "fill")
-                               (FuncCall
-                                  (FieldAccess
-                                     (Ident (Identifier "lighten")) (Ident (Identifier "green")))
-                                  [ NormalArg (Literal (Numeric 90.0 Percent)) ])
-                           , KeyValArg
-                               (Identifier "stroke")
-                               (Plus (Literal (Numeric 1.0 Pt)) (Ident (Identifier "green")))
-                           , KeyValArg (Identifier "inset") (Literal (Numeric 10.0 Pt))
-                           , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
-                           , KeyValArg (Identifier "radius") (Literal (Numeric 5.0 Pt))
-                           , KeyValArg (Identifier "breakable") (Literal (Boolean False))
-                           , NormalArg
-                               (Block
-                                  (Content
-                                     [ Code
-                                         "test/typ/meta/figure-02.typ"
-                                         ( line 29 , column 9 )
-                                         (Ident (Identifier "title"))
-                                     , Code
-                                         "test/typ/meta/figure-02.typ"
-                                         ( line 29 , column 15 )
-                                         (Ident (Identifier "name"))
-                                     , Code
-                                         "test/typ/meta/figure-02.typ"
-                                         ( line 29 , column 20 )
-                                         (FuncCall
-                                            (Ident (Identifier "h"))
-                                            [ NormalArg (Literal (Numeric 0.1 Em)) ])
-                                     , Text ":"
-                                     , Code
-                                         "test/typ/meta/figure-02.typ"
-                                         ( line 29 , column 30 )
-                                         (FuncCall
-                                            (Ident (Identifier "h"))
-                                            [ NormalArg (Literal (Numeric 0.2 Em)) ])
-                                     , Code
-                                         "test/typ/meta/figure-02.typ"
-                                         ( line 29 , column 39 )
-                                         (FieldAccess
-                                            (Ident (Identifier "body")) (Ident (Identifier "it")))
-                                     , Code
-                                         "test/typ/meta/figure-02.typ"
-                                         ( line 29 , column 47 )
-                                         (FuncCall
-                                            (Ident (Identifier "v"))
-                                            [ NormalArg (Literal (Numeric 0.5 Em)) ])
-                                     ]))
-                           ])
-                    ]
-                ]))))
-, ParBreak
-, Code
-    "test/typ/meta/figure-02.typ"
-    ( line 34 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 150.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/meta/figure-02.typ"
-    ( line 35 , column 2 )
-    (FuncCall
-       (Ident (Identifier "figure"))
-       [ NormalArg
-           (Block
-              (Content
-                 [ Equation
-                     False
-                     [ MAttach Nothing (Just (Text "2")) (Text "a")
-                     , Text "+"
-                     , MAttach Nothing (Just (Text "2")) (Text "b")
-                     , Text "="
-                     , MAttach Nothing (Just (Text "2")) (Text "c")
-                     ]
-                 ]))
-       , KeyValArg (Identifier "supplement") (Literal (String "Theorem"))
-       , KeyValArg (Identifier "kind") (Literal (String "theorem"))
-       , KeyValArg
-           (Identifier "caption") (Literal (String "Pythagoras' theorem."))
-       , KeyValArg (Identifier "numbering") (Literal (String "1"))
-       ])
-, Space
-, Code
-    "test/typ/meta/figure-02.typ"
-    ( line 41 , column 3 )
-    (Label "fig-formula")
-, ParBreak
-, Code
-    "test/typ/meta/figure-02.typ"
-    ( line 43 , column 2 )
-    (FuncCall
-       (Ident (Identifier "figure"))
-       [ NormalArg
-           (Block
-              (Content
-                 [ Equation
-                     False
-                     [ MAttach Nothing (Just (Text "2")) (Text "a")
-                     , Text "+"
-                     , MAttach Nothing (Just (Text "2")) (Text "b")
-                     , Text "="
-                     , MAttach Nothing (Just (Text "2")) (Text "c")
-                     ]
-                 ]))
-       , KeyValArg (Identifier "supplement") (Literal (String "Theorem"))
-       , KeyValArg (Identifier "kind") (Literal (String "theorem"))
-       , KeyValArg
-           (Identifier "caption")
-           (Literal (String "Another Pythagoras' theorem."))
-       , KeyValArg (Identifier "numbering") (Literal None)
-       ])
-, Space
-, Code
-    "test/typ/meta/figure-02.typ"
-    ( line 49 , column 3 )
-    (Label "fig-formula")
-, ParBreak
-, Code
-    "test/typ/meta/figure-02.typ"
-    ( line 51 , column 2 )
-    (FuncCall
-       (Ident (Identifier "figure"))
-       [ NormalArg
-           (Block
-              (Content
-                 [ RawBlock "rust" "fn main() {\n    println!(\"Hello!\");\n  }\n  "
-                 ]))
-       , KeyValArg
-           (Identifier "caption")
-           (Block
-              (Content
-                 [ Text "Hello"
-                 , Space
-                 , Text "world"
-                 , Space
-                 , Text "in"
-                 , Space
-                 , Emph [ Text "rust" ]
-                 ]))
-       ])
-, ParBreak
-]
-"test/typ/meta/figure-02.typ" (line 35, column 2):
-Content does not have a method "counter" or FieldAccess requires a dictionary
diff --git a/test/out/meta/figure-03.out b/test/out/meta/figure-03.out
deleted file mode 100644
--- a/test/out/meta/figure-03.out
+++ /dev/null
@@ -1,91 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/figure-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/figure-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/figure-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/meta/figure-03.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 6.0 Em)) ])
-, SoftBreak
-, Code
-    "test/typ/meta/figure-03.typ"
-    ( line 4 , column 2 )
-    (Show
-       (Just (Ident (Identifier "figure")))
-       (Set
-          (Ident (Identifier "block"))
-          [ KeyValArg (Identifier "breakable") (Literal (Boolean True)) ]))
-, ParBreak
-, Code
-    "test/typ/meta/figure-03.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "figure"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "table"))
-              [ BlockArg [ Text "a" ]
-              , BlockArg [ Text "b" ]
-              , BlockArg [ Text "c" ]
-              , BlockArg [ Text "d" ]
-              , BlockArg [ Text "e" ]
-              ])
-       , KeyValArg
-           (Identifier "caption")
-           (Block (Content [ Text "A" , Space , Text "table" ]))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 figure(body: table(children: (text(body: [a]), 
-                                               text(body: [b]), 
-                                               text(body: [c]), 
-                                               text(body: [d]), 
-                                               text(body: [e]))), 
-                        caption: text(body: [A table])), 
-                 parbreak() })
diff --git a/test/out/meta/footnote-00.out b/test/out/meta/footnote-00.out
deleted file mode 100644
--- a/test/out/meta/footnote-00.out
+++ /dev/null
@@ -1,53 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/footnote-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/footnote-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/footnote-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/meta/footnote-00.typ"
-    ( line 2 , column 2 )
-    (FuncCall
-       (Ident (Identifier "footnote")) [ BlockArg [ Text "Hi" ] ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 footnote(body: text(body: [Hi])), 
-                 parbreak() })
diff --git a/test/out/meta/footnote-01.out b/test/out/meta/footnote-01.out
deleted file mode 100644
--- a/test/out/meta/footnote-01.out
+++ /dev/null
@@ -1,69 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/footnote-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/footnote-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/footnote-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "A"
-, Code
-    "test/typ/meta/footnote-01.typ"
-    ( line 3 , column 3 )
-    (FuncCall
-       (Ident (Identifier "footnote")) [ BlockArg [ Text "A" ] ])
-, Space
-, HardBreak
-, Text "A"
-, Space
-, Code
-    "test/typ/meta/footnote-01.typ"
-    ( line 4 , column 4 )
-    (FuncCall
-       (Ident (Identifier "footnote")) [ BlockArg [ Text "A" ] ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [A]), 
-                 footnote(body: text(body: [A])), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 text(body: [A ]), 
-                 footnote(body: text(body: [A])), 
-                 parbreak() })
diff --git a/test/out/meta/footnote-02.out b/test/out/meta/footnote-02.out
deleted file mode 100644
--- a/test/out/meta/footnote-02.out
+++ /dev/null
@@ -1,114 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/footnote-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/footnote-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/footnote-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "First"
-, Space
-, HardBreak
-, Text "Second"
-, Space
-, Code
-    "test/typ/meta/footnote-02.typ"
-    ( line 4 , column 9 )
-    (FuncCall
-       (Ident (Identifier "footnote"))
-       [ BlockArg
-           [ Text "A,"
-           , Space
-           , Code
-               "test/typ/meta/footnote-02.typ"
-               ( line 4 , column 22 )
-               (FuncCall
-                  (Ident (Identifier "footnote"))
-                  [ BlockArg
-                      [ Text "B,"
-                      , Space
-                      , Code
-                          "test/typ/meta/footnote-02.typ"
-                          ( line 4 , column 35 )
-                          (FuncCall
-                             (Ident (Identifier "footnote")) [ BlockArg [ Text "C" ] ])
-                      ]
-                  ])
-           ]
-       ])
-, Space
-, HardBreak
-, Text "Third"
-, Space
-, Code
-    "test/typ/meta/footnote-02.typ"
-    ( line 5 , column 8 )
-    (FuncCall
-       (Ident (Identifier "footnote"))
-       [ BlockArg
-           [ Text "D,"
-           , Space
-           , Code
-               "test/typ/meta/footnote-02.typ"
-               ( line 5 , column 21 )
-               (FuncCall
-                  (Ident (Identifier "footnote")) [ BlockArg [ Text "E" ] ])
-           ]
-       ])
-, Space
-, HardBreak
-, Text "Fourth"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [First ]), 
-                 linebreak(), 
-                 text(body: [Second ]), 
-                 footnote(body: { text(body: [A, ]), 
-                                  footnote(body: { text(body: [B, ]), 
-                                                   footnote(body: text(body: [C])) }) }), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 text(body: [Third ]), 
-                 footnote(body: { text(body: [D, ]), 
-                                  footnote(body: text(body: [E])) }), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 text(body: [Fourth]), 
-                 parbreak() })
diff --git a/test/out/meta/footnote-03.out b/test/out/meta/footnote-03.out
deleted file mode 100644
--- a/test/out/meta/footnote-03.out
+++ /dev/null
@@ -1,75 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/footnote-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/footnote-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/footnote-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/meta/footnote-03.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "footnote"))
-       [ BlockArg
-           [ Text "A,"
-           , Space
-           , Code
-               "test/typ/meta/footnote-03.typ"
-               ( line 4 , column 15 )
-               (FuncCall
-                  (Ident (Identifier "footnote")) [ BlockArg [ Text "B" ] ])
-           ]
-       ])
-, Text ","
-, Space
-, Code
-    "test/typ/meta/footnote-03.typ"
-    ( line 4 , column 30 )
-    (FuncCall
-       (Ident (Identifier "footnote")) [ BlockArg [ Text "C" ] ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 footnote(body: { text(body: [A, ]), 
-                                  footnote(body: text(body: [B])) }), 
-                 text(body: [, ]), 
-                 footnote(body: text(body: [C])), 
-                 parbreak() })
diff --git a/test/out/meta/footnote-04.out b/test/out/meta/footnote-04.out
deleted file mode 100644
--- a/test/out/meta/footnote-04.out
+++ /dev/null
@@ -1,111 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/footnote-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/footnote-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/footnote-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/meta/footnote-04.typ"
-    ( line 3 , column 2 )
-    (Show
-       (Just (Ident (Identifier "footnote")))
-       (Set
-          (Ident (Identifier "text"))
-          [ NormalArg (Ident (Identifier "red")) ]))
-, SoftBreak
-, Code
-    "test/typ/meta/footnote-04.typ"
-    ( line 4 , column 2 )
-    (Show
-       (Just
-          (FieldAccess
-             (Ident (Identifier "entry")) (Ident (Identifier "footnote"))))
-       (Set
-          (Ident (Identifier "text"))
-          [ NormalArg (Literal (Numeric 8.0 Pt))
-          , KeyValArg (Identifier "style") (Literal (String "italic"))
-          ]))
-, SoftBreak
-, Code
-    "test/typ/meta/footnote-04.typ"
-    ( line 5 , column 2 )
-    (Set
-       (FieldAccess
-          (Ident (Identifier "entry")) (Ident (Identifier "footnote")))
-       [ KeyValArg (Identifier "indent") (Literal (Numeric 0.0 Pt))
-       , KeyValArg (Identifier "gap") (Literal (Numeric 0.6 Em))
-       , KeyValArg (Identifier "clearance") (Literal (Numeric 0.3 Em))
-       , KeyValArg
-           (Identifier "separator")
-           (FuncCall (Ident (Identifier "repeat")) [ BlockArg [ Text "." ] ])
-       ])
-, ParBreak
-, Text "Beautiful"
-, Space
-, Text "footnotes"
-, Text "."
-, Space
-, Code
-    "test/typ/meta/footnote-04.typ"
-    ( line 12 , column 23 )
-    (FuncCall
-       (Ident (Identifier "footnote"))
-       [ BlockArg
-           [ Text "Wonderful,"
-           , Space
-           , Text "aren"
-           , Quote '\''
-           , Text "t"
-           , Space
-           , Text "they?"
-           ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [Beautiful footnotes. ]), 
-                 footnote(body: text(body: [Wonderful, aren’t they?])), 
-                 parbreak() })
diff --git a/test/out/meta/footnote-break-00.out b/test/out/meta/footnote-break-00.out
deleted file mode 100644
--- a/test/out/meta/footnote-break-00.out
+++ /dev/null
@@ -1,202 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/footnote-break-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/footnote-break-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/footnote-break-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/meta/footnote-break-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 200.0 Pt)) ])
-, ParBreak
-, Code
-    "test/typ/meta/footnote-break-00.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 5)) ])
-, SoftBreak
-, Code
-    "test/typ/meta/footnote-break-00.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "footnote"))
-       [ BlockArg
-           [ Space
-           , Comment
-           , Space
-           , Text "A"
-           , Space
-           , Text "simple"
-           , Space
-           , Text "footnote"
-           , Text "."
-           , SoftBreak
-           , Code
-               "test/typ/meta/footnote-break-00.typ"
-               ( line 7 , column 4 )
-               (FuncCall
-                  (Ident (Identifier "footnote"))
-                  [ BlockArg
-                      [ Text "Well,"
-                      , Space
-                      , Text "not"
-                      , Space
-                      , Text "that"
-                      , Space
-                      , Text "simple"
-                      , Space
-                      , Ellipsis
-                      ]
-                  ])
-           , Space
-           , Comment
-           ]
-       ])
-, SoftBreak
-, Code
-    "test/typ/meta/footnote-break-00.typ"
-    ( line 9 , column 2 )
-    (FuncCall
-       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 15)) ])
-, SoftBreak
-, Code
-    "test/typ/meta/footnote-break-00.typ"
-    ( line 10 , column 2 )
-    (FuncCall
-       (Ident (Identifier "footnote"))
-       [ BlockArg
-           [ Text "Another"
-           , Space
-           , Text "footnote"
-           , Text ":"
-           , Space
-           , Code
-               "test/typ/meta/footnote-break-00.typ"
-               ( line 10 , column 30 )
-               (FuncCall
-                  (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 30)) ])
-           ]
-       ])
-, Space
-, Comment
-, Code
-    "test/typ/meta/footnote-break-00.typ"
-    ( line 11 , column 2 )
-    (FuncCall
-       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 15)) ])
-, SoftBreak
-, Code
-    "test/typ/meta/footnote-break-00.typ"
-    ( line 12 , column 2 )
-    (FuncCall
-       (Ident (Identifier "footnote"))
-       [ BlockArg
-           [ Text "My"
-           , Space
-           , Text "fourth"
-           , Space
-           , Text "footnote"
-           , Text ":"
-           , Space
-           , Code
-               "test/typ/meta/footnote-break-00.typ"
-               ( line 12 , column 32 )
-               (FuncCall
-                  (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 50)) ])
-           ]
-       ])
-, Space
-, Comment
-, Code
-    "test/typ/meta/footnote-break-00.typ"
-    ( line 13 , column 2 )
-    (FuncCall
-       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 15)) ])
-, SoftBreak
-, Code
-    "test/typ/meta/footnote-break-00.typ"
-    ( line 14 , column 2 )
-    (FuncCall
-       (Ident (Identifier "footnote"))
-       [ BlockArg
-           [ Text "And"
-           , Space
-           , Text "a"
-           , Space
-           , Text "final"
-           , Space
-           , Text "footnote"
-           , Text "."
-           ]
-       ])
-, Space
-, Comment
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [Lorem ipsum dolor sit amet,]), 
-                 text(body: [
-]), 
-                 footnote(body: { text(body: [ ]), 
-                                  text(body: [ A simple footnote.
-]), 
-                                  footnote(body: text(body: [Well, not that simple …])), 
-                                  text(body: [ ]) }), 
-                 text(body: [
-]), 
-                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore]), 
-                 text(body: [
-]), 
-                 footnote(body: { text(body: [Another footnote: ]), 
-                                  text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi]) }), 
-                 text(body: [ ]), 
-                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore]), 
-                 text(body: [
-]), 
-                 footnote(body: { text(body: [My fourth footnote: ]), 
-                                  text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat]) }), 
-                 text(body: [ ]), 
-                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore]), 
-                 text(body: [
-]), 
-                 footnote(body: text(body: [And a final footnote.])), 
-                 text(body: [ ]) })
diff --git a/test/out/meta/footnote-container-00.out b/test/out/meta/footnote-container-00.out
deleted file mode 100644
--- a/test/out/meta/footnote-container-00.out
+++ /dev/null
@@ -1,157 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/footnote-container-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/footnote-container-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/footnote-container-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "Read"
-, Space
-, Text "the"
-, Space
-, Text "docs"
-, Space
-, Code
-    "test/typ/meta/footnote-container-00.typ"
-    ( line 3 , column 16 )
-    (FuncCall
-       (Ident (Identifier "footnote"))
-       [ BlockArg [ Url "https://typst.app/docs" ] ])
-, Text "!"
-, SoftBreak
-, Code
-    "test/typ/meta/footnote-container-00.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "figure"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "image"))
-              [ NormalArg (Literal (String "/assets/files/graph.png"))
-              , KeyValArg (Identifier "width") (Literal (Numeric 70.0 Percent))
-              ])
-       , KeyValArg
-           (Identifier "caption")
-           (Block
-              (Content
-                 [ SoftBreak
-                 , Text "A"
-                 , Space
-                 , Text "graph"
-                 , Space
-                 , Code
-                     "test/typ/meta/footnote-container-00.typ"
-                     ( line 7 , column 14 )
-                     (FuncCall
-                        (Ident (Identifier "footnote"))
-                        [ BlockArg
-                            [ Text "A"
-                            , Space
-                            , Emph [ Text "graph" ]
-                            , Space
-                            , Text "is"
-                            , Space
-                            , Text "a"
-                            , Space
-                            , Text "structure"
-                            , Space
-                            , Text "with"
-                            , Space
-                            , Text "nodes"
-                            , Space
-                            , Text "and"
-                            , Space
-                            , Text "edges"
-                            , Text "."
-                            ]
-                        ])
-                 , ParBreak
-                 ]))
-       ])
-, SoftBreak
-, Text "More"
-, Space
-, Code
-    "test/typ/meta/footnote-container-00.typ"
-    ( line 10 , column 7 )
-    (FuncCall
-       (Ident (Identifier "footnote"))
-       [ BlockArg [ Text "just" , Space , Text "for" , Space , Ellipsis ]
-       ])
-, Space
-, Text "footnotes"
-, Space
-, Code
-    "test/typ/meta/footnote-container-00.typ"
-    ( line 10 , column 41 )
-    (FuncCall
-       (Ident (Identifier "footnote"))
-       [ BlockArg
-           [ Ellipsis
-           , Space
-           , Text "testing"
-           , Text "."
-           , Space
-           , Text ":"
-           , Text ")"
-           ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [Read the docs ]), 
-                 footnote(body: link(body: [https://typst.app/docs], 
-                                     dest: "https://typst.app/docs")), 
-                 text(body: [!
-]), 
-                 figure(body: image(path: "/assets/files/graph.png", 
-                                    width: 70%), 
-                        caption: { text(body: [
-A graph ]), 
-                                   footnote(body: { text(body: [A ]), 
-                                                    emph(body: text(body: [graph])), 
-                                                    text(body: [ is a structure with nodes and edges.]) }), 
-                                   parbreak() }), 
-                 text(body: [
-More ]), 
-                 footnote(body: text(body: [just for …])), 
-                 text(body: [ footnotes ]), 
-                 footnote(body: text(body: [… testing. :)])), 
-                 parbreak() })
diff --git a/test/out/meta/footnote-container-01.out b/test/out/meta/footnote-container-01.out
deleted file mode 100644
--- a/test/out/meta/footnote-container-01.out
+++ /dev/null
@@ -1,202 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/footnote-container-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/footnote-container-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/footnote-container-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/meta/footnote-container-01.typ"
-    ( line 3 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "lang")))
-       (FuncCall
-          (Ident (Identifier "footnote"))
-          [ BlockArg [ Text "Languages" , Text "." ] ]))
-, SoftBreak
-, Code
-    "test/typ/meta/footnote-container-01.typ"
-    ( line 4 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "nums")))
-       (FuncCall
-          (Ident (Identifier "footnote"))
-          [ BlockArg [ Text "Numbers" , Text "." ] ]))
-, ParBreak
-, DescListItem
-    [ Quote '"' , Text "Hello" , Quote '"' ]
-    [ Text "A"
-    , Space
-    , Text "word"
-    , Space
-    , Code
-        "test/typ/meta/footnote-container-01.typ"
-        ( line 6 , column 20 )
-        (Ident (Identifier "lang"))
-    ]
-, SoftBreak
-, DescListItem
-    [ Quote '"' , Text "123" , Quote '"' ]
-    [ Text "A"
-    , Space
-    , Text "number"
-    , Space
-    , Code
-        "test/typ/meta/footnote-container-01.typ"
-        ( line 7 , column 20 )
-        (Ident (Identifier "nums"))
-    , SoftBreak
-    ]
-, SoftBreak
-, BulletListItem
-    [ Quote '"'
-    , Text "Hello"
-    , Quote '"'
-    , Space
-    , Code
-        "test/typ/meta/footnote-container-01.typ"
-        ( line 9 , column 12 )
-        (Ident (Identifier "lang"))
-    ]
-, SoftBreak
-, BulletListItem
-    [ Quote '"'
-    , Text "123"
-    , Quote '"'
-    , Space
-    , Code
-        "test/typ/meta/footnote-container-01.typ"
-        ( line 10 , column 10 )
-        (Ident (Identifier "nums"))
-    , SoftBreak
-    ]
-, SoftBreak
-, EnumListItem
-    Nothing
-    [ Quote '"'
-    , Text "Hello"
-    , Quote '"'
-    , Space
-    , Code
-        "test/typ/meta/footnote-container-01.typ"
-        ( line 12 , column 12 )
-        (Ident (Identifier "lang"))
-    ]
-, SoftBreak
-, EnumListItem
-    Nothing
-    [ Quote '"'
-    , Text "123"
-    , Quote '"'
-    , Space
-    , Code
-        "test/typ/meta/footnote-container-01.typ"
-        ( line 13 , column 10 )
-        (Ident (Identifier "nums"))
-    , SoftBreak
-    ]
-, SoftBreak
-, Code
-    "test/typ/meta/footnote-container-01.typ"
-    ( line 15 , column 2 )
-    (FuncCall
-       (Ident (Identifier "table"))
-       [ KeyValArg (Identifier "columns") (Literal (Int 2))
-       , NormalArg (Block (Content [ Text "Hello" ]))
-       , NormalArg
-           (Block
-              (Content
-                 [ Text "A"
-                 , Space
-                 , Text "word"
-                 , Space
-                 , Code
-                     "test/typ/meta/footnote-container-01.typ"
-                     ( line 17 , column 21 )
-                     (Ident (Identifier "lang"))
-                 ]))
-       , NormalArg (Block (Content [ Text "123" ]))
-       , NormalArg
-           (Block
-              (Content
-                 [ Text "A"
-                 , Space
-                 , Text "number"
-                 , Space
-                 , Code
-                     "test/typ/meta/footnote-container-01.typ"
-                     ( line 18 , column 21 )
-                     (Ident (Identifier "nums"))
-                 ]))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 terms(children: ((text(body: [“Hello”]), 
-                                   { text(body: [A word ]), 
-                                     footnote(body: text(body: [Languages.])) }), 
-                                  (text(body: [“123”]), 
-                                   { text(body: [A number ]), 
-                                     footnote(body: text(body: [Numbers.])), 
-                                     text(body: [
-]) }))), 
-                 list(children: ({ text(body: [“Hello” ]), 
-                                   footnote(body: text(body: [Languages.])) }, 
-                                 { text(body: [“123” ]), 
-                                   footnote(body: text(body: [Numbers.])), 
-                                   text(body: [
-]) })), 
-                 enum(children: ({ text(body: [“Hello” ]), 
-                                   footnote(body: text(body: [Languages.])) }, 
-                                 { text(body: [“123” ]), 
-                                   footnote(body: text(body: [Numbers.])), 
-                                   text(body: [
-]) })), 
-                 table(children: (text(body: [Hello]), 
-                                  { text(body: [A word ]), 
-                                    footnote(body: text(body: [Languages.])) }, 
-                                  text(body: [123]), 
-                                  { text(body: [A number ]), 
-                                    footnote(body: text(body: [Numbers.])) }), 
-                       columns: 2), 
-                 parbreak() })
diff --git a/test/out/meta/footnote-invariant-00.out b/test/out/meta/footnote-invariant-00.out
deleted file mode 100644
--- a/test/out/meta/footnote-invariant-00.out
+++ /dev/null
@@ -1,76 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/footnote-invariant-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/footnote-invariant-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/footnote-invariant-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/meta/footnote-invariant-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 120.0 Pt)) ])
-, ParBreak
-, Code
-    "test/typ/meta/footnote-invariant-00.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 13)) ])
-, ParBreak
-, Text "There"
-, Space
-, Code
-    "test/typ/meta/footnote-invariant-00.typ"
-    ( line 6 , column 8 )
-    (FuncCall
-       (Ident (Identifier "footnote"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 20)) ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt]), 
-                 parbreak(), 
-                 text(body: [There ]), 
-                 footnote(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut]), 
-                 parbreak() })
diff --git a/test/out/meta/heading-00.out b/test/out/meta/heading-00.out
deleted file mode 100644
--- a/test/out/meta/heading-00.out
+++ /dev/null
@@ -1,62 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/heading-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/heading-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/heading-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, SoftBreak
-, Heading 1 [ Text "Level" , Space , Text "1" ]
-, Heading 2 [ Text "Level" , Space , Text "2" ]
-, Heading 3 [ Text "Level" , Space , Text "3" ]
-, Comment
-, Heading 11 [ Text "Level" , Space , Text "11" ]
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 heading(body: text(body: [Level 1]), 
-                         level: 1), 
-                 heading(body: text(body: [Level 2]), 
-                         level: 2), 
-                 heading(body: text(body: [Level 3]), 
-                         level: 3), 
-                 heading(body: text(body: [Level 11]), 
-                         level: 11) })
diff --git a/test/out/meta/heading-01.out b/test/out/meta/heading-01.out
deleted file mode 100644
--- a/test/out/meta/heading-01.out
+++ /dev/null
@@ -1,97 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/heading-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/heading-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/heading-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, SoftBreak
-, Comment
-, Comment
-, Space
-, Text "="
-, Space
-, Text "Level"
-, Space
-, Text "1"
-, SoftBreak
-, Code
-    "test/typ/meta/heading-01.typ"
-    ( line 6 , column 2 )
-    (Block (Content [ Heading 2 [ Text "Level" , Space , Text "2" ] ]))
-, SoftBreak
-, Code
-    "test/typ/meta/heading-01.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ BlockArg [ Heading 3 [ Text "Level" , Space , Text "3" ] ] ])
-, ParBreak
-, Comment
-, Text "No"
-, Space
-, Text "="
-, Space
-, Text "heading"
-, ParBreak
-, Comment
-, Text "="
-, Space
-, Text "No"
-, Space
-, Text "heading"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [ = Level 1
-]), 
-                 heading(body: text(body: [Level 2]), 
-                         level: 2), 
-                 text(body: [
-]), 
-                 box(body: heading(body: text(body: [Level 3]), 
-                                   level: 3)), 
-                 parbreak(), 
-                 text(body: [No = heading]), 
-                 parbreak(), 
-                 text(body: [= No heading]), 
-                 parbreak() })
diff --git a/test/out/meta/heading-02.out b/test/out/meta/heading-02.out
deleted file mode 100644
--- a/test/out/meta/heading-02.out
+++ /dev/null
@@ -1,80 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/heading-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/heading-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/heading-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, SoftBreak
-, Heading
-    1
-    [ Code
-        "test/typ/meta/heading-02.typ"
-        ( line 4 , column 4 )
-        (Block
-           (Content
-              [ Text "This"
-              , SoftBreak
-              , Text "is"
-              , SoftBreak
-              , Text "multiline"
-              , Text "."
-              , ParBreak
-              ]))
-    ]
-, Heading 1 [ Text "This" ]
-, Text "is"
-, Space
-, Text "not"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 heading(body: { text(body: [This
-is
-multiline.]), 
-                                 parbreak() }, 
-                         level: 1), 
-                 heading(body: text(body: [This]), 
-                         level: 1), 
-                 text(body: [is not.]), 
-                 parbreak() })
diff --git a/test/out/meta/heading-03.out b/test/out/meta/heading-03.out
deleted file mode 100644
--- a/test/out/meta/heading-03.out
+++ /dev/null
@@ -1,94 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/heading-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/heading-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/heading-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/meta/heading-03.typ"
-    ( line 3 , column 2 )
-    (Show
-       (Just
-          (FuncCall
-             (FieldAccess
-                (Ident (Identifier "where")) (Ident (Identifier "heading")))
-             [ KeyValArg (Identifier "level") (Literal (Int 5)) ]))
-       (FuncExpr
-          [ NormalParam (Identifier "it") ]
-          (FuncCall
-             (Ident (Identifier "block"))
-             [ NormalArg
-                 (FuncCall
-                    (Ident (Identifier "text"))
-                    [ KeyValArg (Identifier "font") (Literal (String "Roboto"))
-                    , KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
-                    , NormalArg
-                        (Plus
-                           (FieldAccess (Ident (Identifier "body")) (Ident (Identifier "it")))
-                           (Block (Content [ Text "!" ])))
-                    ])
-             ])))
-, ParBreak
-, Heading 1 [ Text "Heading" ]
-, Heading 5 [ Text "Heading" , Space , Text "\127757" ]
-, Code
-    "test/typ/meta/heading-03.typ"
-    ( line 9 , column 2 )
-    (FuncCall
-       (Ident (Identifier "heading"))
-       [ KeyValArg (Identifier "level") (Literal (Int 5))
-       , BlockArg [ Text "Heading" ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 heading(body: text(body: [Heading]), 
-                         level: 1), 
-                 block(body: text(body: { text(body: [Heading 🌍]), 
-                                          text(body: [!]) }, 
-                                  fill: rgb(13%,61%,67%,100%), 
-                                  font: "Roboto")), 
-                 block(body: text(body: { text(body: [Heading]), 
-                                          text(body: [!]) }, 
-                                  fill: rgb(13%,61%,67%,100%), 
-                                  font: "Roboto")), 
-                 parbreak() })
diff --git a/test/out/meta/heading-04.out b/test/out/meta/heading-04.out
deleted file mode 100644
--- a/test/out/meta/heading-04.out
+++ /dev/null
@@ -1,71 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/heading-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/heading-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/heading-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/meta/heading-04.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "heading"))
-       [ KeyValArg (Identifier "numbering") (Literal (String "1.")) ])
-, SoftBreak
-, Heading 1 []
-, Text "Not"
-, Space
-, Text "in"
-, Space
-, Text "heading"
-, SoftBreak
-, Text "="
-, Text "Nope"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 heading(body: {  }, 
-                         level: 1, 
-                         numbering: "1."), 
-                 text(body: [Not in heading
-=Nope]), 
-                 parbreak() })
diff --git a/test/out/meta/link-00.out b/test/out/meta/link-00.out
deleted file mode 100644
--- a/test/out/meta/link-00.out
+++ /dev/null
@@ -1,141 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/link-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/link-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/link-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Url "https://example.com/"
-, ParBreak
-, Comment
-, Code
-    "test/typ/meta/link-00.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "link"))
-       [ NormalArg (Literal (String "https://typst.org/"))
-       , BlockArg
-           [ Text "Some"
-           , Space
-           , Text "text"
-           , Space
-           , Text "text"
-           , Space
-           , Text "text"
-           ]
-       ])
-, ParBreak
-, Comment
-, Text "This"
-, Space
-, Text "link"
-, Space
-, Text "appears"
-, Space
-, Code
-    "test/typ/meta/link-00.typ"
-    ( line 9 , column 20 )
-    (FuncCall
-       (Ident (Identifier "link"))
-       [ NormalArg (Literal (String "https://google.com/"))
-       , BlockArg
-           [ Text "in"
-           , Space
-           , Text "the"
-           , Space
-           , Text "middle"
-           , Space
-           , Text "of"
-           ]
-       ])
-, Space
-, Text "a"
-, Space
-, Text "paragraph"
-, Text "."
-, ParBreak
-, Comment
-, Text "Contact"
-, Space
-, Code
-    "test/typ/meta/link-00.typ"
-    ( line 12 , column 10 )
-    (FuncCall
-       (Ident (Identifier "link"))
-       [ NormalArg (Literal (String "mailto:hi@typst.app")) ])
-, Space
-, Text "or"
-, SoftBreak
-, Text "call"
-, Space
-, Code
-    "test/typ/meta/link-00.typ"
-    ( line 13 , column 7 )
-    (FuncCall
-       (Ident (Identifier "link"))
-       [ NormalArg (Literal (String "tel:123")) ])
-, Space
-, Text "for"
-, Space
-, Text "more"
-, Space
-, Text "information"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 link(body: [https://example.com/], 
-                      dest: "https://example.com/"), 
-                 parbreak(), 
-                 link(body: text(body: [Some text text text]), 
-                      dest: "https://typst.org/"), 
-                 parbreak(), 
-                 text(body: [This link appears ]), 
-                 link(body: text(body: [in the middle of]), 
-                      dest: "https://google.com/"), 
-                 text(body: [ a paragraph.]), 
-                 parbreak(), 
-                 text(body: [Contact ]), 
-                 link(dest: "mailto:hi@typst.app"), 
-                 text(body: [ or
-call ]), 
-                 link(dest: "tel:123"), 
-                 text(body: [ for more information.]), 
-                 parbreak() })
diff --git a/test/out/meta/link-01.out b/test/out/meta/link-01.out
deleted file mode 100644
--- a/test/out/meta/link-01.out
+++ /dev/null
@@ -1,81 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/link-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/link-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/link-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/meta/link-01.typ"
-    ( line 3 , column 2 )
-    (Show
-       (Just (Ident (Identifier "link")))
-       (Ident (Identifier "underline")))
-, SoftBreak
-, Url "https://a.b.?q=%10#."
-, Space
-, HardBreak
-, Text "Wahttp"
-, Text ":"
-, Comment
-, Text "Nohttps"
-, Text ":"
-, Text "/"
-, Text "/"
-, Text "link"
-, Space
-, HardBreak
-, Text "Nohttp"
-, Text ":"
-, Comment
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 underline(body: link(body: [https://a.b.?q=%10#.], 
-                                      dest: "https://a.b.?q=%10#.")), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 text(body: [Wahttp:]), 
-                 text(body: [Nohttps://link ]), 
-                 linebreak(), 
-                 text(body: [Nohttp:]), 
-                 parbreak() })
diff --git a/test/out/meta/link-02.out b/test/out/meta/link-02.out
deleted file mode 100644
--- a/test/out/meta/link-02.out
+++ /dev/null
@@ -1,69 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/link-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/link-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/link-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Url "https://[::1]:8080/"
-, Space
-, HardBreak
-, Url "https://example.com/(paren)"
-, Space
-, HardBreak
-, Url "https://example.com/#(((nested)))"
-, Space
-, HardBreak
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 link(body: [https://[::1]:8080/], 
-                      dest: "https://[::1]:8080/"), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 link(body: [https://example.com/(paren)], 
-                      dest: "https://example.com/(paren)"), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 link(body: [https://example.com/#(((nested)))], 
-                      dest: "https://example.com/#(((nested)))"), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 parbreak() })
diff --git a/test/out/meta/link-03.out b/test/out/meta/link-03.out
deleted file mode 100644
--- a/test/out/meta/link-03.out
+++ /dev/null
@@ -1,63 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/link-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/link-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/link-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/meta/link-03.typ"
-    ( line 3 , column 2 )
-    (Block (Content [ Url "https://example.com/" ]))
-, Space
-, HardBreak
-, Url "https://example.com/"
-, Text ")"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 link(body: [https://example.com/], 
-                      dest: "https://example.com/"), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 link(body: [https://example.com/], 
-                      dest: "https://example.com/"), 
-                 text(body: [)]), 
-                 parbreak() })
diff --git a/test/out/meta/link-04.out b/test/out/meta/link-04.out
deleted file mode 100644
--- a/test/out/meta/link-04.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/meta/link-05.out b/test/out/meta/link-05.out
deleted file mode 100644
--- a/test/out/meta/link-05.out
+++ /dev/null
@@ -1,104 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/link-05.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/link-05.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/link-05.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/meta/link-05.typ"
-    ( line 3 , column 2 )
-    (Show
-       (Just (Ident (Identifier "link")))
-       (FuncExpr
-          [ NormalParam (Identifier "it") ]
-          (FuncCall
-             (Ident (Identifier "underline"))
-             [ NormalArg
-                 (FuncCall
-                    (Ident (Identifier "text"))
-                    [ KeyValArg
-                        (Identifier "fill")
-                        (FuncCall
-                           (Ident (Identifier "rgb"))
-                           [ NormalArg (Literal (String "283663")) ])
-                    , NormalArg (Ident (Identifier "it"))
-                    ])
-             ])))
-, SoftBreak
-, Text "You"
-, Space
-, Text "could"
-, Space
-, Text "also"
-, Space
-, Text "make"
-, Space
-, Text "the"
-, SoftBreak
-, Code
-    "test/typ/meta/link-05.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "link"))
-       [ NormalArg (Literal (String "https://html5zombo.com/"))
-       , BlockArg
-           [ Text "link"
-           , Space
-           , Text "look"
-           , Space
-           , Text "way"
-           , Space
-           , Text "more"
-           , Space
-           , Text "typical"
-           , Text "."
-           ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-You could also make the
-]), 
-                 underline(body: text(body: link(body: text(body: [link look way more typical.]), 
-                                                 dest: "https://html5zombo.com/"), 
-                                      fill: rgb(15%,21%,38%,100%))), 
-                 parbreak() })
diff --git a/test/out/meta/link-06.out b/test/out/meta/link-06.out
deleted file mode 100644
--- a/test/out/meta/link-06.out
+++ /dev/null
@@ -1,103 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/link-06.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/link-06.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/link-06.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/meta/link-06.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 60.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/meta/link-06.typ"
-    ( line 4 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "mylink")))
-       (FuncCall
-          (Ident (Identifier "link"))
-          [ NormalArg (Literal (String "https://typst.org/"))
-          , BlockArg [ Text "LINK" ]
-          ]))
-, SoftBreak
-, Text "My"
-, Space
-, Text "cool"
-, Space
-, Code
-    "test/typ/meta/link-06.typ"
-    ( line 5 , column 10 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "move"))
-              [ KeyValArg (Identifier "dx") (Literal (Numeric 0.7 Cm))
-              , KeyValArg (Identifier "dy") (Literal (Numeric 0.7 Cm))
-              , NormalArg
-                  (FuncCall
-                     (Ident (Identifier "rotate"))
-                     [ NormalArg (Literal (Numeric 10.0 Deg))
-                     , NormalArg
-                         (FuncCall
-                            (Ident (Identifier "scale"))
-                            [ NormalArg (Literal (Numeric 200.0 Percent))
-                            , NormalArg (Ident (Identifier "mylink"))
-                            ])
-                     ])
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-My cool ]), 
-                 box(body: move(body: rotate(angle: 10.0deg, 
-                                             body: scale(body: link(body: text(body: [LINK]), 
-                                                                    dest: "https://typst.org/"), 
-                                                         factor: 200%)), 
-                                dx: 0.7cm, 
-                                dy: 0.7cm)), 
-                 parbreak() })
diff --git a/test/out/meta/link-07.out b/test/out/meta/link-07.out
deleted file mode 100644
--- a/test/out/meta/link-07.out
+++ /dev/null
@@ -1,94 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/link-07.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/link-07.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/link-07.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/meta/link-07.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "link"))
-       [ NormalArg (Literal (String "https://example.com/"))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "block"))
-              [ BlockArg
-                  [ SoftBreak
-                  , Text "My"
-                  , Space
-                  , Text "cool"
-                  , Space
-                  , Text "rhino"
-                  , SoftBreak
-                  , Code
-                      "test/typ/meta/link-07.typ"
-                      ( line 5 , column 4 )
-                      (FuncCall
-                         (Ident (Identifier "box"))
-                         [ NormalArg
-                             (FuncCall
-                                (Ident (Identifier "move"))
-                                [ KeyValArg (Identifier "dx") (Literal (Numeric 10.0 Pt))
-                                , NormalArg
-                                    (FuncCall
-                                       (Ident (Identifier "image"))
-                                       [ NormalArg (Literal (String "/assets/files/rhino.png"))
-                                       , KeyValArg (Identifier "width") (Literal (Numeric 1.0 Cm))
-                                       ])
-                                ])
-                         ])
-                  , ParBreak
-                  ]
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 link(body: block(body: { text(body: [
-My cool rhino
-]), 
-                                          box(body: move(body: image(path: "/assets/files/rhino.png", 
-                                                                     width: 1.0cm), 
-                                                         dx: 10.0pt)), 
-                                          parbreak() }), 
-                      dest: "https://example.com/"), 
-                 parbreak() })
diff --git a/test/out/meta/link-08.out b/test/out/meta/link-08.out
deleted file mode 100644
--- a/test/out/meta/link-08.out
+++ /dev/null
@@ -1,73 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/link-08.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/link-08.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/link-08.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/meta/link-08.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "link"))
-       [ NormalArg
-           (Dict
-              [ Reg ( Ident (Identifier "page") , Literal (Int 1) )
-              , Reg ( Ident (Identifier "x") , Literal (Numeric 10.0 Pt) )
-              , Reg ( Ident (Identifier "y") , Literal (Numeric 20.0 Pt) )
-              ])
-       , BlockArg
-           [ Text "Back"
-           , Space
-           , Text "to"
-           , Space
-           , Text "the"
-           , Space
-           , Text "start"
-           ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 link(body: text(body: [Back to the start]), 
-                      dest: (page: 1,
-                             x: 10.0pt,
-                             y: 20.0pt)), 
-                 parbreak() })
diff --git a/test/out/meta/link-09.out b/test/out/meta/link-09.out
deleted file mode 100644
--- a/test/out/meta/link-09.out
+++ /dev/null
@@ -1,68 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/link-09.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/link-09.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/link-09.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "Text"
-, Space
-, Code
-    "test/typ/meta/link-09.typ" ( line 3 , column 6 ) (Label "hey")
-, SoftBreak
-, Code
-    "test/typ/meta/link-09.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "link"))
-       [ NormalArg (Label "hey")
-       , BlockArg
-           [ Text "Go" , Space , Text "to" , Space , Text "text" , Text "." ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [Text ]), 
-                 <hey>, 
-                 text(body: [
-]), 
-                 link(body: text(body: [Go to text.]), 
-                      dest: <hey>), 
-                 parbreak() })
diff --git a/test/out/meta/link-10.out b/test/out/meta/link-10.out
deleted file mode 100644
--- a/test/out/meta/link-10.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/meta/link-11.out b/test/out/meta/link-11.out
deleted file mode 100644
--- a/test/out/meta/link-11.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/meta/numbering-00.out b/test/out/meta/numbering-00.out
deleted file mode 100644
--- a/test/out/meta/numbering-00.out
+++ /dev/null
@@ -1,163 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/numbering-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/numbering-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/numbering-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/meta/numbering-00.typ"
-    ( line 2 , column 2 )
-    (For
-       (BasicBind (Just (Identifier "i")))
-       (FuncCall
-          (Ident (Identifier "range"))
-          [ NormalArg (Literal (Int 0)) , NormalArg (Literal (Int 9)) ])
-       (Block
-          (CodeBlock
-             [ FuncCall
-                 (Ident (Identifier "numbering"))
-                 [ NormalArg (Literal (String "*"))
-                 , NormalArg (Ident (Identifier "i"))
-                 ]
-             , Block (Content [ Space , Text "and" , Space ])
-             , FuncCall
-                 (Ident (Identifier "numbering"))
-                 [ NormalArg (Literal (String "I.a"))
-                 , NormalArg (Ident (Identifier "i"))
-                 , NormalArg (Ident (Identifier "i"))
-                 ]
-             , Block
-                 (Content
-                    [ Space
-                    , Text "for"
-                    , Space
-                    , Code
-                        "test/typ/meta/numbering-00.typ"
-                        ( line 6 , column 10 )
-                        (Ident (Identifier "i"))
-                    , Space
-                    , HardBreak
-                    ])
-             ])))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 numbering(numbering: "*", 
-                           numbers: (0)), 
-                 text(body: [ and ]), 
-                 numbering(numbering: "I.a", 
-                           numbers: (0, 0)), 
-                 text(body: [ for ]), 
-                 text(body: [0]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 numbering(numbering: "*", 
-                           numbers: (1)), 
-                 text(body: [ and ]), 
-                 numbering(numbering: "I.a", 
-                           numbers: (1, 1)), 
-                 text(body: [ for ]), 
-                 text(body: [1]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 numbering(numbering: "*", 
-                           numbers: (2)), 
-                 text(body: [ and ]), 
-                 numbering(numbering: "I.a", 
-                           numbers: (2, 2)), 
-                 text(body: [ for ]), 
-                 text(body: [2]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 numbering(numbering: "*", 
-                           numbers: (3)), 
-                 text(body: [ and ]), 
-                 numbering(numbering: "I.a", 
-                           numbers: (3, 3)), 
-                 text(body: [ for ]), 
-                 text(body: [3]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 numbering(numbering: "*", 
-                           numbers: (4)), 
-                 text(body: [ and ]), 
-                 numbering(numbering: "I.a", 
-                           numbers: (4, 4)), 
-                 text(body: [ for ]), 
-                 text(body: [4]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 numbering(numbering: "*", 
-                           numbers: (5)), 
-                 text(body: [ and ]), 
-                 numbering(numbering: "I.a", 
-                           numbers: (5, 5)), 
-                 text(body: [ for ]), 
-                 text(body: [5]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 numbering(numbering: "*", 
-                           numbers: (6)), 
-                 text(body: [ and ]), 
-                 numbering(numbering: "I.a", 
-                           numbers: (6, 6)), 
-                 text(body: [ for ]), 
-                 text(body: [6]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 numbering(numbering: "*", 
-                           numbers: (7)), 
-                 text(body: [ and ]), 
-                 numbering(numbering: "I.a", 
-                           numbers: (7, 7)), 
-                 text(body: [ for ]), 
-                 text(body: [7]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 numbering(numbering: "*", 
-                           numbers: (8)), 
-                 text(body: [ and ]), 
-                 numbering(numbering: "I.a", 
-                           numbers: (8, 8)), 
-                 text(body: [ for ]), 
-                 text(body: [8]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 parbreak() })
diff --git a/test/out/meta/numbering-01.out b/test/out/meta/numbering-01.out
deleted file mode 100644
--- a/test/out/meta/numbering-01.out
+++ /dev/null
@@ -1,217 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/numbering-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/numbering-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/numbering-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/meta/numbering-01.typ"
-    ( line 2 , column 2 )
-    (For
-       (BasicBind (Just (Identifier "i")))
-       (FuncCall
-          (Ident (Identifier "range"))
-          [ NormalArg (Literal (Int 0)) , NormalArg (Literal (Int 4)) ])
-       (Block
-          (CodeBlock
-             [ FuncCall
-                 (Ident (Identifier "numbering"))
-                 [ NormalArg (Literal (String "A"))
-                 , NormalArg (Ident (Identifier "i"))
-                 ]
-             , Block
-                 (Content
-                    [ Space
-                    , Text "for"
-                    , Space
-                    , Code
-                        "test/typ/meta/numbering-01.typ"
-                        ( line 4 , column 10 )
-                        (Ident (Identifier "i"))
-                    , Space
-                    , HardBreak
-                    ])
-             ])))
-, SoftBreak
-, Ellipsis
-, Space
-, HardBreak
-, Code
-    "test/typ/meta/numbering-01.typ"
-    ( line 7 , column 2 )
-    (For
-       (BasicBind (Just (Identifier "i")))
-       (FuncCall
-          (Ident (Identifier "range"))
-          [ NormalArg (Literal (Int 26)) , NormalArg (Literal (Int 30)) ])
-       (Block
-          (CodeBlock
-             [ FuncCall
-                 (Ident (Identifier "numbering"))
-                 [ NormalArg (Literal (String "A"))
-                 , NormalArg (Ident (Identifier "i"))
-                 ]
-             , Block
-                 (Content
-                    [ Space
-                    , Text "for"
-                    , Space
-                    , Code
-                        "test/typ/meta/numbering-01.typ"
-                        ( line 9 , column 10 )
-                        (Ident (Identifier "i"))
-                    , Space
-                    , HardBreak
-                    ])
-             ])))
-, SoftBreak
-, Ellipsis
-, Space
-, HardBreak
-, Code
-    "test/typ/meta/numbering-01.typ"
-    ( line 12 , column 2 )
-    (For
-       (BasicBind (Just (Identifier "i")))
-       (FuncCall
-          (Ident (Identifier "range"))
-          [ NormalArg (Literal (Int 702)) , NormalArg (Literal (Int 706)) ])
-       (Block
-          (CodeBlock
-             [ FuncCall
-                 (Ident (Identifier "numbering"))
-                 [ NormalArg (Literal (String "A"))
-                 , NormalArg (Ident (Identifier "i"))
-                 ]
-             , Block
-                 (Content
-                    [ Space
-                    , Text "for"
-                    , Space
-                    , Code
-                        "test/typ/meta/numbering-01.typ"
-                        ( line 14 , column 10 )
-                        (Ident (Identifier "i"))
-                    , Space
-                    , HardBreak
-                    ])
-             ])))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 numbering(numbering: "A", 
-                           numbers: (0)), 
-                 text(body: [ for ]), 
-                 text(body: [0]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 numbering(numbering: "A", 
-                           numbers: (1)), 
-                 text(body: [ for ]), 
-                 text(body: [1]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 numbering(numbering: "A", 
-                           numbers: (2)), 
-                 text(body: [ for ]), 
-                 text(body: [2]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 numbering(numbering: "A", 
-                           numbers: (3)), 
-                 text(body: [ for ]), 
-                 text(body: [3]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 text(body: [
-… ]), 
-                 linebreak(), 
-                 numbering(numbering: "A", 
-                           numbers: (26)), 
-                 text(body: [ for ]), 
-                 text(body: [26]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 numbering(numbering: "A", 
-                           numbers: (27)), 
-                 text(body: [ for ]), 
-                 text(body: [27]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 numbering(numbering: "A", 
-                           numbers: (28)), 
-                 text(body: [ for ]), 
-                 text(body: [28]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 numbering(numbering: "A", 
-                           numbers: (29)), 
-                 text(body: [ for ]), 
-                 text(body: [29]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 text(body: [
-… ]), 
-                 linebreak(), 
-                 numbering(numbering: "A", 
-                           numbers: (702)), 
-                 text(body: [ for ]), 
-                 text(body: [702]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 numbering(numbering: "A", 
-                           numbers: (703)), 
-                 text(body: [ for ]), 
-                 text(body: [703]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 numbering(numbering: "A", 
-                           numbers: (704)), 
-                 text(body: [ for ]), 
-                 text(body: [704]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 numbering(numbering: "A", 
-                           numbers: (705)), 
-                 text(body: [ for ]), 
-                 text(body: [705]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 parbreak() })
diff --git a/test/out/meta/numbering-02.out b/test/out/meta/numbering-02.out
deleted file mode 100644
--- a/test/out/meta/numbering-02.out
+++ /dev/null
@@ -1,129 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/numbering-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/numbering-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/numbering-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/meta/numbering-02.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "lang") (Literal (String "he")) ])
-, SoftBreak
-, Code
-    "test/typ/meta/numbering-02.typ"
-    ( line 3 , column 2 )
-    (For
-       (BasicBind (Just (Identifier "i")))
-       (FuncCall
-          (Ident (Identifier "range"))
-          [ NormalArg (Literal (Int 9))
-          , NormalArg (Literal (Int 21))
-          , KeyValArg (Identifier "step") (Literal (Int 2))
-          ])
-       (Block
-          (CodeBlock
-             [ FuncCall
-                 (Ident (Identifier "numbering"))
-                 [ NormalArg (Literal (String "\1488."))
-                 , NormalArg (Ident (Identifier "i"))
-                 ]
-             , Block
-                 (Content
-                    [ Space
-                    , Text "\1506\1489\1493\1512"
-                    , Space
-                    , Code
-                        "test/typ/meta/numbering-02.typ"
-                        ( line 5 , column 11 )
-                        (Ident (Identifier "i"))
-                    , Space
-                    , HardBreak
-                    ])
-             ])))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-], lang: "he"), 
-                 numbering(numbering: "א.", 
-                           numbers: (9)), 
-                 text(body: [ עבור ], 
-                      lang: "he"), 
-                 text(body: [9], lang: "he"), 
-                 text(body: [ ], lang: "he"), 
-                 linebreak(), 
-                 numbering(numbering: "א.", 
-                           numbers: (11)), 
-                 text(body: [ עבור ], 
-                      lang: "he"), 
-                 text(body: [11], lang: "he"), 
-                 text(body: [ ], lang: "he"), 
-                 linebreak(), 
-                 numbering(numbering: "א.", 
-                           numbers: (13)), 
-                 text(body: [ עבור ], 
-                      lang: "he"), 
-                 text(body: [13], lang: "he"), 
-                 text(body: [ ], lang: "he"), 
-                 linebreak(), 
-                 numbering(numbering: "א.", 
-                           numbers: (15)), 
-                 text(body: [ עבור ], 
-                      lang: "he"), 
-                 text(body: [15], lang: "he"), 
-                 text(body: [ ], lang: "he"), 
-                 linebreak(), 
-                 numbering(numbering: "א.", 
-                           numbers: (17)), 
-                 text(body: [ עבור ], 
-                      lang: "he"), 
-                 text(body: [17], lang: "he"), 
-                 text(body: [ ], lang: "he"), 
-                 linebreak(), 
-                 numbering(numbering: "א.", 
-                           numbers: (19)), 
-                 text(body: [ עבור ], 
-                      lang: "he"), 
-                 text(body: [19], lang: "he"), 
-                 text(body: [ ], lang: "he"), 
-                 linebreak(), 
-                 parbreak() })
diff --git a/test/out/meta/numbering-03.out b/test/out/meta/numbering-03.out
deleted file mode 100644
--- a/test/out/meta/numbering-03.out
+++ /dev/null
@@ -1,159 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/numbering-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/numbering-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/numbering-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/meta/numbering-03.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "lang") (Literal (String "zh")) ])
-, SoftBreak
-, Code
-    "test/typ/meta/numbering-03.typ"
-    ( line 3 , column 2 )
-    (For
-       (BasicBind (Just (Identifier "i")))
-       (FuncCall
-          (Ident (Identifier "range"))
-          [ NormalArg (Literal (Int 9))
-          , NormalArg (Literal (Int 21))
-          , KeyValArg (Identifier "step") (Literal (Int 2))
-          ])
-       (Block
-          (CodeBlock
-             [ FuncCall
-                 (Ident (Identifier "numbering"))
-                 [ NormalArg (Literal (String "\19968"))
-                 , NormalArg (Ident (Identifier "i"))
-                 ]
-             , Block (Content [ Space , Text "and" , Space ])
-             , FuncCall
-                 (Ident (Identifier "numbering"))
-                 [ NormalArg (Literal (String "\22777"))
-                 , NormalArg (Ident (Identifier "i"))
-                 ]
-             , Block
-                 (Content
-                    [ Space
-                    , Text "for"
-                    , Space
-                    , Code
-                        "test/typ/meta/numbering-03.typ"
-                        ( line 7 , column 10 )
-                        (Ident (Identifier "i"))
-                    , Space
-                    , HardBreak
-                    ])
-             ])))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-], lang: "zh"), 
-                 numbering(numbering: "一", 
-                           numbers: (9)), 
-                 text(body: [ and ], 
-                      lang: "zh"), 
-                 numbering(numbering: "壹", 
-                           numbers: (9)), 
-                 text(body: [ for ], 
-                      lang: "zh"), 
-                 text(body: [9], lang: "zh"), 
-                 text(body: [ ], lang: "zh"), 
-                 linebreak(), 
-                 numbering(numbering: "一", 
-                           numbers: (11)), 
-                 text(body: [ and ], 
-                      lang: "zh"), 
-                 numbering(numbering: "壹", 
-                           numbers: (11)), 
-                 text(body: [ for ], 
-                      lang: "zh"), 
-                 text(body: [11], lang: "zh"), 
-                 text(body: [ ], lang: "zh"), 
-                 linebreak(), 
-                 numbering(numbering: "一", 
-                           numbers: (13)), 
-                 text(body: [ and ], 
-                      lang: "zh"), 
-                 numbering(numbering: "壹", 
-                           numbers: (13)), 
-                 text(body: [ for ], 
-                      lang: "zh"), 
-                 text(body: [13], lang: "zh"), 
-                 text(body: [ ], lang: "zh"), 
-                 linebreak(), 
-                 numbering(numbering: "一", 
-                           numbers: (15)), 
-                 text(body: [ and ], 
-                      lang: "zh"), 
-                 numbering(numbering: "壹", 
-                           numbers: (15)), 
-                 text(body: [ for ], 
-                      lang: "zh"), 
-                 text(body: [15], lang: "zh"), 
-                 text(body: [ ], lang: "zh"), 
-                 linebreak(), 
-                 numbering(numbering: "一", 
-                           numbers: (17)), 
-                 text(body: [ and ], 
-                      lang: "zh"), 
-                 numbering(numbering: "壹", 
-                           numbers: (17)), 
-                 text(body: [ for ], 
-                      lang: "zh"), 
-                 text(body: [17], lang: "zh"), 
-                 text(body: [ ], lang: "zh"), 
-                 linebreak(), 
-                 numbering(numbering: "一", 
-                           numbers: (19)), 
-                 text(body: [ and ], 
-                      lang: "zh"), 
-                 numbering(numbering: "壹", 
-                           numbers: (19)), 
-                 text(body: [ for ], 
-                      lang: "zh"), 
-                 text(body: [19], lang: "zh"), 
-                 text(body: [ ], lang: "zh"), 
-                 linebreak(), 
-                 parbreak() })
diff --git a/test/out/meta/numbering-04.out b/test/out/meta/numbering-04.out
deleted file mode 100644
--- a/test/out/meta/numbering-04.out
+++ /dev/null
@@ -1,257 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/numbering-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/numbering-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/numbering-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/meta/numbering-04.typ"
-    ( line 2 , column 2 )
-    (For
-       (BasicBind (Just (Identifier "i")))
-       (FuncCall
-          (Ident (Identifier "range"))
-          [ NormalArg (Literal (Int 0)) , NormalArg (Literal (Int 4)) ])
-       (Block
-          (CodeBlock
-             [ FuncCall
-                 (Ident (Identifier "numbering"))
-                 [ NormalArg (Literal (String "\12452"))
-                 , NormalArg (Ident (Identifier "i"))
-                 ]
-             , Block (Content [ Space , Text "(" , Text "or" , Space ])
-             , FuncCall
-                 (Ident (Identifier "numbering"))
-                 [ NormalArg (Literal (String "\12356"))
-                 , NormalArg (Ident (Identifier "i"))
-                 ]
-             , Block
-                 (Content
-                    [ Text ")"
-                    , Space
-                    , Text "for"
-                    , Space
-                    , Code
-                        "test/typ/meta/numbering-04.typ"
-                        ( line 6 , column 11 )
-                        (Ident (Identifier "i"))
-                    , Space
-                    , HardBreak
-                    ])
-             ])))
-, SoftBreak
-, Ellipsis
-, Space
-, HardBreak
-, Code
-    "test/typ/meta/numbering-04.typ"
-    ( line 9 , column 2 )
-    (For
-       (BasicBind (Just (Identifier "i")))
-       (FuncCall
-          (Ident (Identifier "range"))
-          [ NormalArg (Literal (Int 47)) , NormalArg (Literal (Int 51)) ])
-       (Block
-          (CodeBlock
-             [ FuncCall
-                 (Ident (Identifier "numbering"))
-                 [ NormalArg (Literal (String "\12452"))
-                 , NormalArg (Ident (Identifier "i"))
-                 ]
-             , Block (Content [ Space , Text "(" , Text "or" , Space ])
-             , FuncCall
-                 (Ident (Identifier "numbering"))
-                 [ NormalArg (Literal (String "\12356"))
-                 , NormalArg (Ident (Identifier "i"))
-                 ]
-             , Block
-                 (Content
-                    [ Text ")"
-                    , Space
-                    , Text "for"
-                    , Space
-                    , Code
-                        "test/typ/meta/numbering-04.typ"
-                        ( line 13 , column 11 )
-                        (Ident (Identifier "i"))
-                    , Space
-                    , HardBreak
-                    ])
-             ])))
-, SoftBreak
-, Ellipsis
-, Space
-, HardBreak
-, Code
-    "test/typ/meta/numbering-04.typ"
-    ( line 16 , column 2 )
-    (For
-       (BasicBind (Just (Identifier "i")))
-       (FuncCall
-          (Ident (Identifier "range"))
-          [ NormalArg (Literal (Int 2256))
-          , NormalArg (Literal (Int 2260))
-          ])
-       (Block
-          (CodeBlock
-             [ FuncCall
-                 (Ident (Identifier "numbering"))
-                 [ NormalArg (Literal (String "\12452"))
-                 , NormalArg (Ident (Identifier "i"))
-                 ]
-             , Block
-                 (Content
-                    [ Space
-                    , Text "for"
-                    , Space
-                    , Code
-                        "test/typ/meta/numbering-04.typ"
-                        ( line 18 , column 10 )
-                        (Ident (Identifier "i"))
-                    , Space
-                    , HardBreak
-                    ])
-             ])))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 numbering(numbering: "イ", 
-                           numbers: (0)), 
-                 text(body: [ (or ]), 
-                 numbering(numbering: "い", 
-                           numbers: (0)), 
-                 text(body: [) for ]), 
-                 text(body: [0]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 numbering(numbering: "イ", 
-                           numbers: (1)), 
-                 text(body: [ (or ]), 
-                 numbering(numbering: "い", 
-                           numbers: (1)), 
-                 text(body: [) for ]), 
-                 text(body: [1]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 numbering(numbering: "イ", 
-                           numbers: (2)), 
-                 text(body: [ (or ]), 
-                 numbering(numbering: "い", 
-                           numbers: (2)), 
-                 text(body: [) for ]), 
-                 text(body: [2]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 numbering(numbering: "イ", 
-                           numbers: (3)), 
-                 text(body: [ (or ]), 
-                 numbering(numbering: "い", 
-                           numbers: (3)), 
-                 text(body: [) for ]), 
-                 text(body: [3]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 text(body: [
-… ]), 
-                 linebreak(), 
-                 numbering(numbering: "イ", 
-                           numbers: (47)), 
-                 text(body: [ (or ]), 
-                 numbering(numbering: "い", 
-                           numbers: (47)), 
-                 text(body: [) for ]), 
-                 text(body: [47]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 numbering(numbering: "イ", 
-                           numbers: (48)), 
-                 text(body: [ (or ]), 
-                 numbering(numbering: "い", 
-                           numbers: (48)), 
-                 text(body: [) for ]), 
-                 text(body: [48]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 numbering(numbering: "イ", 
-                           numbers: (49)), 
-                 text(body: [ (or ]), 
-                 numbering(numbering: "い", 
-                           numbers: (49)), 
-                 text(body: [) for ]), 
-                 text(body: [49]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 numbering(numbering: "イ", 
-                           numbers: (50)), 
-                 text(body: [ (or ]), 
-                 numbering(numbering: "い", 
-                           numbers: (50)), 
-                 text(body: [) for ]), 
-                 text(body: [50]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 text(body: [
-… ]), 
-                 linebreak(), 
-                 numbering(numbering: "イ", 
-                           numbers: (2256)), 
-                 text(body: [ for ]), 
-                 text(body: [2256]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 numbering(numbering: "イ", 
-                           numbers: (2257)), 
-                 text(body: [ for ]), 
-                 text(body: [2257]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 numbering(numbering: "イ", 
-                           numbers: (2258)), 
-                 text(body: [ for ]), 
-                 text(body: [2258]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 numbering(numbering: "イ", 
-                           numbers: (2259)), 
-                 text(body: [ for ]), 
-                 text(body: [2259]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 parbreak() })
diff --git a/test/out/meta/numbering-05.out b/test/out/meta/numbering-05.out
deleted file mode 100644
--- a/test/out/meta/numbering-05.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/meta/outline-00.out b/test/out/meta/outline-00.out
deleted file mode 100644
--- a/test/out/meta/outline-00.out
+++ /dev/null
@@ -1,228 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/outline-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/outline-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/outline-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/meta/outline-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ NormalArg (Literal (String "a7"))
-       , KeyValArg (Identifier "margin") (Literal (Numeric 20.0 Pt))
-       , KeyValArg (Identifier "numbering") (Literal (String "1"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/meta/outline-00.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "heading"))
-       [ KeyValArg (Identifier "numbering") (Literal (String "(1/a)")) ])
-, SoftBreak
-, Code
-    "test/typ/meta/outline-00.typ"
-    ( line 4 , column 2 )
-    (Show
-       (Just
-          (FuncCall
-             (FieldAccess
-                (Ident (Identifier "where")) (Ident (Identifier "heading")))
-             [ KeyValArg (Identifier "level") (Literal (Int 1)) ]))
-       (Set
-          (Ident (Identifier "text"))
-          [ NormalArg (Literal (Numeric 12.0 Pt)) ]))
-, SoftBreak
-, Code
-    "test/typ/meta/outline-00.typ"
-    ( line 5 , column 2 )
-    (Show
-       (Just
-          (FuncCall
-             (FieldAccess
-                (Ident (Identifier "where")) (Ident (Identifier "heading")))
-             [ KeyValArg (Identifier "level") (Literal (Int 2)) ]))
-       (Set
-          (Ident (Identifier "text"))
-          [ NormalArg (Literal (Numeric 10.0 Pt)) ]))
-, ParBreak
-, Code
-    "test/typ/meta/outline-00.typ"
-    ( line 7 , column 2 )
-    (FuncCall (Ident (Identifier "outline")) [])
-, ParBreak
-, Heading 1 [ Text "Einleitung" ]
-, Code
-    "test/typ/meta/outline-00.typ"
-    ( line 10 , column 2 )
-    (FuncCall
-       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 12)) ])
-, ParBreak
-, Heading 1 [ Text "Analyse" ]
-, Code
-    "test/typ/meta/outline-00.typ"
-    ( line 13 , column 2 )
-    (FuncCall
-       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 10)) ])
-, ParBreak
-, Code
-    "test/typ/meta/outline-00.typ"
-    ( line 15 , column 2 )
-    (Block
-       (Content
-          [ SoftBreak
-          , Code
-              "test/typ/meta/outline-00.typ"
-              ( line 16 , column 4 )
-              (Set
-                 (Ident (Identifier "heading"))
-                 [ KeyValArg (Identifier "outlined") (Literal (Boolean False)) ])
-          , SoftBreak
-          , Heading 2 [ Text "Methodik" ]
-          , Code
-              "test/typ/meta/outline-00.typ"
-              ( line 18 , column 4 )
-              (FuncCall
-                 (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 6)) ])
-          , ParBreak
-          ]))
-, ParBreak
-, Heading 2 [ Text "Verarbeitung" ]
-, Code
-    "test/typ/meta/outline-00.typ"
-    ( line 22 , column 2 )
-    (FuncCall
-       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 4)) ])
-, ParBreak
-, Heading 2 [ Text "Programmierung" ]
-, RawBlock "rust" "fn main() {\n  panic!(\"in the disco\");\n}\n"
-, ParBreak
-, Heading 4 [ Text "Deep" , Space , Text "Stuff" ]
-, Text "Ok"
-, Space
-, Ellipsis
-, ParBreak
-, Code
-    "test/typ/meta/outline-00.typ"
-    ( line 34 , column 2 )
-    (Set
-       (Ident (Identifier "heading"))
-       [ KeyValArg (Identifier "numbering") (Literal (String "(I)")) ])
-, ParBreak
-, Heading
-    1
-    [ Code
-        "test/typ/meta/outline-00.typ"
-        ( line 36 , column 4 )
-        (FuncCall
-           (Ident (Identifier "text"))
-           [ NormalArg (Ident (Identifier "blue"))
-           , BlockArg [ Text "Zusammen" ]
-           ])
-    , Text "fassung"
-    ]
-, Code
-    "test/typ/meta/outline-00.typ"
-    ( line 37 , column 2 )
-    (FuncCall
-       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 10)) ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 outline(), 
-                 parbreak(), 
-                 heading(body: text(body: [Einleitung]), 
-                         level: 1, 
-                         numbering: "(1/a)"), 
-                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor]), 
-                 parbreak(), 
-                 heading(body: text(body: [Analyse]), 
-                         level: 1, 
-                         numbering: "(1/a)"), 
-                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do]), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 heading(body: text(body: [Methodik]), 
-                         level: 2, 
-                         numbering: "(1/a)", 
-                         outlined: false), 
-                 text(body: [Lorem ipsum dolor sit amet, consectetur]), 
-                 parbreak(), 
-                 parbreak(), 
-                 heading(body: text(body: [Verarbeitung]), 
-                         level: 2, 
-                         numbering: "(1/a)", 
-                         outlined: false), 
-                 text(body: [Lorem ipsum dolor sit]), 
-                 parbreak(), 
-                 heading(body: text(body: [Programmierung]), 
-                         level: 2, 
-                         numbering: "(1/a)", 
-                         outlined: false), 
-                 raw(block: true, 
-                     lang: "rust", 
-                     text: "fn main() {\n  panic!(\"in the disco\");\n}\n"), 
-                 parbreak(), 
-                 heading(body: text(body: [Deep Stuff]), 
-                         level: 4, 
-                         numbering: "(1/a)", 
-                         outlined: false), 
-                 text(body: [Ok …]), 
-                 parbreak(), 
-                 parbreak(), 
-                 heading(body: { text(body: text(body: [Zusammen]), 
-                                      color: rgb(0%,45%,85%,100%)), 
-                                 text(body: [fassung]) }, 
-                         level: 1, 
-                         numbering: "(I)", 
-                         outlined: false), 
-                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do]), 
-                 parbreak() })
diff --git a/test/out/meta/query-before-after-00.out b/test/out/meta/query-before-after-00.out
deleted file mode 100644
--- a/test/out/meta/query-before-after-00.out
+++ /dev/null
@@ -1,181 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/query-before-after-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/query-before-after-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/query-before-after-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/meta/query-before-after-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "paper") (Literal (String "a7"))
-       , KeyValArg (Identifier "numbering") (Literal (String "1 / 1"))
-       , KeyValArg
-           (Identifier "margin")
-           (Dict
-              [ Reg ( Ident (Identifier "bottom") , Literal (Numeric 1.0 Cm) )
-              , Reg ( Ident (Identifier "rest") , Literal (Numeric 0.5 Cm) )
-              ])
-       ])
-, ParBreak
-, Code
-    "test/typ/meta/query-before-after-00.typ"
-    ( line 8 , column 2 )
-    (Show
-       (Just
-          (FuncCall
-             (FieldAccess
-                (Ident (Identifier "where")) (Ident (Identifier "heading")))
-             [ KeyValArg (Identifier "level") (Literal (Int 1))
-             , KeyValArg (Identifier "outlined") (Literal (Boolean True))
-             ]))
-       (FuncExpr
-          [ NormalParam (Identifier "it") ]
-          (Block
-             (Content
-                [ SoftBreak
-                , Code
-                    "test/typ/meta/query-before-after-00.typ"
-                    ( line 9 , column 4 )
-                    (Ident (Identifier "it"))
-                , ParBreak
-                , Code
-                    "test/typ/meta/query-before-after-00.typ"
-                    ( line 11 , column 4 )
-                    (Set
-                       (Ident (Identifier "text"))
-                       [ KeyValArg (Identifier "size") (Literal (Numeric 12.0 Pt))
-                       , KeyValArg (Identifier "weight") (Literal (String "regular"))
-                       ])
-                , SoftBreak
-                , Code
-                    "test/typ/meta/query-before-after-00.typ"
-                    ( line 12 , column 4 )
-                    (FuncCall
-                       (Ident (Identifier "outline"))
-                       [ KeyValArg
-                           (Identifier "title") (Literal (String "Chapter outline"))
-                       , KeyValArg (Identifier "indent") (Literal (Boolean True))
-                       , KeyValArg
-                           (Identifier "target")
-                           (FuncCall
-                              (FieldAccess
-                                 (Ident (Identifier "before"))
-                                 (FuncCall
-                                    (FieldAccess
-                                       (Ident (Identifier "after"))
-                                       (FuncCall
-                                          (FieldAccess
-                                             (Ident (Identifier "or"))
-                                             (FuncCall
-                                                (FieldAccess
-                                                   (Ident (Identifier "where"))
-                                                   (Ident (Identifier "heading")))
-                                                [ KeyValArg (Identifier "level") (Literal (Int 1))
-                                                ]))
-                                          [ NormalArg
-                                              (FuncCall
-                                                 (FieldAccess
-                                                    (Ident (Identifier "where"))
-                                                    (Ident (Identifier "heading")))
-                                                 [ KeyValArg (Identifier "level") (Literal (Int 2))
-                                                 ])
-                                          ]))
-                                    [ NormalArg
-                                        (FuncCall
-                                           (FieldAccess
-                                              (Ident (Identifier "location"))
-                                              (Ident (Identifier "it")))
-                                           [])
-                                    , KeyValArg (Identifier "inclusive") (Literal (Boolean True))
-                                    ]))
-                              [ NormalArg
-                                  (FuncCall
-                                     (FieldAccess
-                                        (Ident (Identifier "after"))
-                                        (FuncCall
-                                           (FieldAccess
-                                              (Ident (Identifier "where"))
-                                              (Ident (Identifier "heading")))
-                                           [ KeyValArg (Identifier "level") (Literal (Int 1))
-                                           , KeyValArg
-                                               (Identifier "outlined") (Literal (Boolean True))
-                                           ]))
-                                     [ NormalArg
-                                         (FuncCall
-                                            (FieldAccess
-                                               (Ident (Identifier "location"))
-                                               (Ident (Identifier "it")))
-                                            [])
-                                     , KeyValArg (Identifier "inclusive") (Literal (Boolean False))
-                                     ])
-                              , KeyValArg (Identifier "inclusive") (Literal (Boolean False))
-                              ])
-                       ])
-                , ParBreak
-                ]))))
-, ParBreak
-, Code
-    "test/typ/meta/query-before-after-00.typ"
-    ( line 28 , column 2 )
-    (Set
-       (Ident (Identifier "heading"))
-       [ KeyValArg (Identifier "outlined") (Literal (Boolean True))
-       , KeyValArg (Identifier "numbering") (Literal (String "1."))
-       ])
-, ParBreak
-, Heading 1 [ Text "Section" , Space , Text "1" ]
-, Heading 2 [ Text "Subsection" , Space , Text "1" ]
-, Heading 2 [ Text "Subsection" , Space , Text "2" ]
-, Heading 3 [ Text "Subsubsection" , Space , Text "1" ]
-, Heading 3 [ Text "Subsubsection" , Space , Text "2" ]
-, Heading 2 [ Text "Subsection" , Space , Text "3" ]
-, Heading 1 [ Text "Section" , Space , Text "2" ]
-, Heading 2 [ Text "Subsection" , Space , Text "1" ]
-, Heading 2 [ Text "Subsection" , Space , Text "2" ]
-, Heading 1 [ Text "Section" , Space , Text "3" ]
-, Heading 2 [ Text "Subsection" , Space , Text "1" ]
-, Heading 2 [ Text "Subsection" , Space , Text "2" ]
-, Heading 3 [ Text "Subsubsection" , Space , Text "1" ]
-, Heading 3 [ Text "Subsubsection" , Space , Text "2" ]
-, Heading 3 [ Text "Subsubsection" , Space , Text "3" ]
-, Heading 2 [ Text "Subsection" , Space , Text "3" ]
-]
-"test/typ/meta/query-before-after-00.typ" (line 12, column 4):
-Method "location" is not yet implemented or FieldAccess requires a dictionary
diff --git a/test/out/meta/query-before-after-01.out b/test/out/meta/query-before-after-01.out
deleted file mode 100644
--- a/test/out/meta/query-before-after-01.out
+++ /dev/null
@@ -1,187 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/query-before-after-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/query-before-after-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/query-before-after-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, ParBreak
-, Code
-    "test/typ/meta/query-before-after-01.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "paper") (Literal (String "a7"))
-       , KeyValArg (Identifier "numbering") (Literal (String "1 / 1"))
-       , KeyValArg
-           (Identifier "margin")
-           (Dict
-              [ Reg ( Ident (Identifier "bottom") , Literal (Numeric 1.0 Cm) )
-              , Reg ( Ident (Identifier "rest") , Literal (Numeric 0.5 Cm) )
-              ])
-       ])
-, ParBreak
-, Code
-    "test/typ/meta/query-before-after-01.typ"
-    ( line 9 , column 2 )
-    (Set
-       (Ident (Identifier "heading"))
-       [ KeyValArg (Identifier "outlined") (Literal (Boolean True))
-       , KeyValArg (Identifier "numbering") (Literal (String "1."))
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/meta/query-before-after-01.typ"
-    ( line 12 , column 2 )
-    (FuncCall
-       (Ident (Identifier "locate"))
-       [ NormalArg
-           (FuncExpr
-              [ NormalParam (Identifier "loc") ]
-              (Block
-                 (Content
-                    [ SoftBreak
-                    , Text "Non"
-                    , Text "-"
-                    , Text "outlined"
-                    , Space
-                    , Text "elements"
-                    , Text ":"
-                    , SoftBreak
-                    , Code
-                        "test/typ/meta/query-before-after-01.typ"
-                        ( line 14 , column 4 )
-                        (FuncCall
-                           (FieldAccess
-                              (Ident (Identifier "join"))
-                              (FuncCall
-                                 (FieldAccess
-                                    (Ident (Identifier "map"))
-                                    (FuncCall
-                                       (Ident (Identifier "query"))
-                                       [ NormalArg
-                                           (FuncCall
-                                              (FieldAccess
-                                                 (Ident (Identifier "and"))
-                                                 (FuncCall
-                                                    (Ident (Identifier "selector"))
-                                                    [ NormalArg (Ident (Identifier "heading")) ]))
-                                              [ NormalArg
-                                                  (FuncCall
-                                                     (FieldAccess
-                                                        (Ident (Identifier "where"))
-                                                        (Ident (Identifier "heading")))
-                                                     [ KeyValArg
-                                                         (Identifier "outlined")
-                                                         (Literal (Boolean False))
-                                                     ])
-                                              ])
-                                       , NormalArg (Ident (Identifier "loc"))
-                                       ]))
-                                 [ NormalArg
-                                     (FuncExpr
-                                        [ NormalParam (Identifier "it") ]
-                                        (FieldAccess
-                                           (Ident (Identifier "body")) (Ident (Identifier "it"))))
-                                 ]))
-                           [ NormalArg (Literal (String ", ")) ])
-                    , ParBreak
-                    ])))
-       ])
-, ParBreak
-, Code
-    "test/typ/meta/query-before-after-01.typ"
-    ( line 18 , column 2 )
-    (FuncCall
-       (Ident (Identifier "heading"))
-       [ NormalArg (Literal (String "A"))
-       , KeyValArg (Identifier "outlined") (Literal (Boolean False))
-       ])
-, SoftBreak
-, Code
-    "test/typ/meta/query-before-after-01.typ"
-    ( line 19 , column 2 )
-    (FuncCall
-       (Ident (Identifier "heading"))
-       [ NormalArg (Literal (String "B"))
-       , KeyValArg (Identifier "outlined") (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/meta/query-before-after-01.typ"
-    ( line 20 , column 2 )
-    (FuncCall
-       (Ident (Identifier "heading"))
-       [ NormalArg (Literal (String "C"))
-       , KeyValArg (Identifier "outlined") (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/meta/query-before-after-01.typ"
-    ( line 21 , column 2 )
-    (FuncCall
-       (Ident (Identifier "heading"))
-       [ NormalArg (Literal (String "D"))
-       , KeyValArg (Identifier "outlined") (Literal (Boolean False))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { parbreak(), 
-                 parbreak(), 
-                 parbreak(), 
-                 locate(func: ), 
-                 parbreak(), 
-                 heading(body: [A], 
-                         numbering: "1.", 
-                         outlined: false), 
-                 text(body: [
-]), 
-                 heading(body: [B], 
-                         numbering: "1.", 
-                         outlined: true), 
-                 text(body: [
-]), 
-                 heading(body: [C], 
-                         numbering: "1.", 
-                         outlined: true), 
-                 text(body: [
-]), 
-                 heading(body: [D], 
-                         numbering: "1.", 
-                         outlined: false), 
-                 parbreak() })
diff --git a/test/out/meta/query-figure-00.out b/test/out/meta/query-figure-00.out
deleted file mode 100644
--- a/test/out/meta/query-figure-00.out
+++ /dev/null
@@ -1,259 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/query-figure-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/query-figure-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/query-figure-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/meta/query-figure-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "paper") (Literal (String "a7"))
-       , KeyValArg (Identifier "numbering") (Literal (String "1 / 1"))
-       , KeyValArg
-           (Identifier "margin")
-           (Dict
-              [ Reg ( Ident (Identifier "bottom") , Literal (Numeric 1.0 Cm) )
-              , Reg ( Ident (Identifier "rest") , Literal (Numeric 0.5 Cm) )
-              ])
-       ])
-, ParBreak
-, Code
-    "test/typ/meta/query-figure-00.typ"
-    ( line 8 , column 2 )
-    (Set
-       (Ident (Identifier "figure"))
-       [ KeyValArg (Identifier "numbering") (Literal (String "I")) ])
-, SoftBreak
-, Code
-    "test/typ/meta/query-figure-00.typ"
-    ( line 9 , column 2 )
-    (Show
-       (Just (Ident (Identifier "figure")))
-       (Set
-          (Ident (Identifier "image"))
-          [ KeyValArg (Identifier "width") (Literal (Numeric 80.0 Percent))
-          ]))
-, ParBreak
-, Heading
-    1 [ Text "List" , Space , Text "of" , Space , Text "Figures" ]
-, Code
-    "test/typ/meta/query-figure-00.typ"
-    ( line 12 , column 2 )
-    (FuncCall
-       (Ident (Identifier "locate"))
-       [ NormalArg
-           (FuncExpr
-              [ NormalParam (Identifier "it") ]
-              (Block
-                 (CodeBlock
-                    [ Let
-                        (BasicBind (Just (Identifier "elements")))
-                        (FuncCall
-                           (Ident (Identifier "query"))
-                           [ NormalArg
-                               (FuncCall
-                                  (FieldAccess
-                                     (Ident (Identifier "after"))
-                                     (FuncCall
-                                        (Ident (Identifier "selector"))
-                                        [ NormalArg (Ident (Identifier "figure")) ]))
-                                  [ NormalArg (Ident (Identifier "it")) ])
-                           , NormalArg (Ident (Identifier "it"))
-                           ])
-                    , For
-                        (BasicBind (Just (Identifier "it")))
-                        (Ident (Identifier "elements"))
-                        (Block
-                           (Content
-                              [ SoftBreak
-                              , Text "Figure"
-                              , SoftBreak
-                              , Code
-                                  "test/typ/meta/query-figure-00.typ"
-                                  ( line 16 , column 6 )
-                                  (FuncCall
-                                     (Ident (Identifier "numbering"))
-                                     [ NormalArg
-                                         (FieldAccess
-                                            (Ident (Identifier "numbering"))
-                                            (Ident (Identifier "it")))
-                                     , SpreadArg
-                                         (FuncCall
-                                            (FieldAccess
-                                               (Ident (Identifier "at"))
-                                               (FuncCall
-                                                  (Ident (Identifier "counter"))
-                                                  [ NormalArg (Ident (Identifier "figure")) ]))
-                                            [ NormalArg
-                                                (FuncCall
-                                                   (FieldAccess
-                                                      (Ident (Identifier "location"))
-                                                      (Ident (Identifier "it")))
-                                                   [])
-                                            ])
-                                     ])
-                              , Text ":"
-                              , SoftBreak
-                              , Code
-                                  "test/typ/meta/query-figure-00.typ"
-                                  ( line 18 , column 6 )
-                                  (FieldAccess
-                                     (Ident (Identifier "caption")) (Ident (Identifier "it")))
-                              , SoftBreak
-                              , Code
-                                  "test/typ/meta/query-figure-00.typ"
-                                  ( line 19 , column 6 )
-                                  (FuncCall
-                                     (Ident (Identifier "box"))
-                                     [ KeyValArg (Identifier "width") (Literal (Numeric 1.0 Fr))
-                                     , NormalArg
-                                         (FuncCall
-                                            (Ident (Identifier "repeat")) [ BlockArg [ Text "." ] ])
-                                     ])
-                              , SoftBreak
-                              , Code
-                                  "test/typ/meta/query-figure-00.typ"
-                                  ( line 20 , column 6 )
-                                  (FuncCall
-                                     (FieldAccess
-                                        (Ident (Identifier "first"))
-                                        (FuncCall
-                                           (FieldAccess
-                                              (Ident (Identifier "at"))
-                                              (FuncCall
-                                                 (Ident (Identifier "counter"))
-                                                 [ NormalArg (Ident (Identifier "page")) ]))
-                                           [ NormalArg
-                                               (FuncCall
-                                                  (FieldAccess
-                                                     (Ident (Identifier "location"))
-                                                     (Ident (Identifier "it")))
-                                                  [])
-                                           ]))
-                                     [])
-                              , Space
-                              , HardBreak
-                              ]))
-                    ])))
-       ])
-, ParBreak
-, Code
-    "test/typ/meta/query-figure-00.typ"
-    ( line 24 , column 2 )
-    (FuncCall
-       (Ident (Identifier "figure"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "image"))
-              [ NormalArg (Literal (String "/assets/files/glacier.jpg")) ])
-       , KeyValArg
-           (Identifier "caption")
-           (Block (Content [ Text "Glacier" , Space , Text "melting" ]))
-       ])
-, ParBreak
-, Code
-    "test/typ/meta/query-figure-00.typ"
-    ( line 29 , column 2 )
-    (FuncCall
-       (Ident (Identifier "figure"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ BlockArg
-                  [ Text "Just"
-                  , Space
-                  , Text "some"
-                  , Space
-                  , Text "stand"
-                  , Text "-"
-                  , Text "in"
-                  , Space
-                  , Text "text"
-                  ]
-              ])
-       , KeyValArg (Identifier "kind") (Ident (Identifier "image"))
-       , KeyValArg (Identifier "supplement") (Literal (String "Figure"))
-       , KeyValArg
-           (Identifier "caption")
-           (Block
-              (Content
-                 [ Text "Stand" , Text "-" , Text "in" , Space , Text "text" ]))
-       ])
-, ParBreak
-, Code
-    "test/typ/meta/query-figure-00.typ"
-    ( line 36 , column 2 )
-    (FuncCall
-       (Ident (Identifier "figure"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "image"))
-              [ NormalArg (Literal (String "/assets/files/tiger.jpg")) ])
-       , KeyValArg
-           (Identifier "caption")
-           (Block (Content [ Text "Tiger" , Space , Text "world" ]))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 heading(body: text(body: [List of Figures]), 
-                         level: 1), 
-                 locate(func: ), 
-                 parbreak(), 
-                 figure(body: image(path: "/assets/files/glacier.jpg"), 
-                        caption: text(body: [Glacier melting]), 
-                        numbering: "I"), 
-                 parbreak(), 
-                 figure(body: rect(body: text(body: [Just some stand-in text])), 
-                        caption: text(body: [Stand-in text]), 
-                        kind: , 
-                        numbering: "I", 
-                        supplement: "Figure"), 
-                 parbreak(), 
-                 figure(body: image(path: "/assets/files/tiger.jpg"), 
-                        caption: text(body: [Tiger world]), 
-                        numbering: "I"), 
-                 parbreak() })
diff --git a/test/out/meta/query-header-00.out b/test/out/meta/query-header-00.out
deleted file mode 100644
--- a/test/out/meta/query-header-00.out
+++ /dev/null
@@ -1,192 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/query-header-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/query-header-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/query-header-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/meta/query-header-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "paper") (Literal (String "a7"))
-       , KeyValArg
-           (Identifier "margin")
-           (Dict
-              [ Reg ( Ident (Identifier "y") , Literal (Numeric 1.0 Cm) )
-              , Reg ( Ident (Identifier "x") , Literal (Numeric 0.5 Cm) )
-              ])
-       , KeyValArg
-           (Identifier "header")
-           (Block
-              (CodeBlock
-                 [ FuncCall
-                     (Ident (Identifier "smallcaps"))
-                     [ BlockArg [ Text "Typst" , Space , Text "Academy" ] ]
-                 , FuncCall
-                     (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 1.0 Fr)) ]
-                 , FuncCall
-                     (Ident (Identifier "locate"))
-                     [ NormalArg
-                         (FuncExpr
-                            [ NormalParam (Identifier "it") ]
-                            (Block
-                               (CodeBlock
-                                  [ Let
-                                      (BasicBind (Just (Identifier "after")))
-                                      (FuncCall
-                                         (Ident (Identifier "query"))
-                                         [ NormalArg
-                                             (FuncCall
-                                                (FieldAccess
-                                                   (Ident (Identifier "after"))
-                                                   (FuncCall
-                                                      (Ident (Identifier "selector"))
-                                                      [ NormalArg (Ident (Identifier "heading")) ]))
-                                                [ NormalArg (Ident (Identifier "it")) ])
-                                         , NormalArg (Ident (Identifier "it"))
-                                         ])
-                                  , Let
-                                      (BasicBind (Just (Identifier "before")))
-                                      (FuncCall
-                                         (Ident (Identifier "query"))
-                                         [ NormalArg
-                                             (FuncCall
-                                                (FieldAccess
-                                                   (Ident (Identifier "before"))
-                                                   (FuncCall
-                                                      (Ident (Identifier "selector"))
-                                                      [ NormalArg (Ident (Identifier "heading")) ]))
-                                                [ NormalArg (Ident (Identifier "it")) ])
-                                         , NormalArg (Ident (Identifier "it"))
-                                         ])
-                                  , Let
-                                      (BasicBind (Just (Identifier "elem")))
-                                      (If
-                                         [ ( Not
-                                               (Equals
-                                                  (FuncCall
-                                                     (FieldAccess
-                                                        (Ident (Identifier "len"))
-                                                        (Ident (Identifier "before")))
-                                                     [])
-                                                  (Literal (Int 0)))
-                                           , Block
-                                               (CodeBlock
-                                                  [ FuncCall
-                                                      (FieldAccess
-                                                         (Ident (Identifier "last"))
-                                                         (Ident (Identifier "before")))
-                                                      []
-                                                  ])
-                                           )
-                                         , ( Not
-                                               (Equals
-                                                  (FuncCall
-                                                     (FieldAccess
-                                                        (Ident (Identifier "len"))
-                                                        (Ident (Identifier "after")))
-                                                     [])
-                                                  (Literal (Int 0)))
-                                           , Block
-                                               (CodeBlock
-                                                  [ FuncCall
-                                                      (FieldAccess
-                                                         (Ident (Identifier "first"))
-                                                         (Ident (Identifier "after")))
-                                                      []
-                                                  ])
-                                           )
-                                         ])
-                                  , FuncCall
-                                      (Ident (Identifier "emph"))
-                                      [ NormalArg
-                                          (FieldAccess
-                                             (Ident (Identifier "body"))
-                                             (Ident (Identifier "elem")))
-                                      ]
-                                  ])))
-                     ]
-                 ]))
-       ])
-, ParBreak
-, Code
-    "test/typ/meta/query-header-00.typ"
-    ( line 21 , column 2 )
-    (FuncCall (Ident (Identifier "outline")) [])
-, ParBreak
-, Heading 1 [ Text "Introduction" ]
-, Code
-    "test/typ/meta/query-header-00.typ"
-    ( line 24 , column 2 )
-    (FuncCall
-       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 35)) ])
-, ParBreak
-, Heading 1 [ Text "Background" ]
-, Code
-    "test/typ/meta/query-header-00.typ"
-    ( line 27 , column 2 )
-    (FuncCall
-       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 35)) ])
-, ParBreak
-, Heading 1 [ Text "Approach" ]
-, Code
-    "test/typ/meta/query-header-00.typ"
-    ( line 30 , column 2 )
-    (FuncCall
-       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 60)) ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 outline(), 
-                 parbreak(), 
-                 heading(body: text(body: [Introduction]), 
-                         level: 1), 
-                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo]), 
-                 parbreak(), 
-                 heading(body: text(body: [Background]), 
-                         level: 1), 
-                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo]), 
-                 parbreak(), 
-                 heading(body: text(body: [Approach]), 
-                         level: 1), 
-                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in]), 
-                 parbreak() })
diff --git a/test/out/meta/ref-00.out b/test/out/meta/ref-00.out
deleted file mode 100644
--- a/test/out/meta/ref-00.out
+++ /dev/null
@@ -1,100 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/ref-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/ref-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/ref-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/meta/ref-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "heading"))
-       [ KeyValArg (Identifier "numbering") (Literal (String "1.")) ])
-, ParBreak
-, Heading 1 [ Text "Introduction" ]
-, Code
-    "test/typ/meta/ref-00.typ" ( line 4 , column 16 ) (Label "intro")
-, SoftBreak
-, Text "See"
-, Space
-, Ref "setup" (Literal Auto)
-, Text "."
-, ParBreak
-, Heading 2 [ Text "Setup" ]
-, Code
-    "test/typ/meta/ref-00.typ" ( line 7 , column 10 ) (Label "setup")
-, SoftBreak
-, Text "As"
-, Space
-, Text "seen"
-, Space
-, Text "in"
-, Space
-, Ref "intro" (Literal Auto)
-, Text ","
-, Space
-, Text "we"
-, Space
-, Text "proceed"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 heading(body: text(body: [Introduction]), 
-                         level: 1, 
-                         numbering: "1."), 
-                 <intro>, 
-                 text(body: [
-See ]), 
-                 ref(supplement: auto, 
-                     target: <setup>), 
-                 text(body: [.]), 
-                 parbreak(), 
-                 heading(body: text(body: [Setup]), 
-                         level: 2, 
-                         numbering: "1."), 
-                 <setup>, 
-                 text(body: [
-As seen in ]), 
-                 ref(supplement: auto, 
-                     target: <intro>), 
-                 text(body: [, we proceed.]), 
-                 parbreak() })
diff --git a/test/out/meta/ref-01.out b/test/out/meta/ref-01.out
deleted file mode 100644
--- a/test/out/meta/ref-01.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/meta/ref-02.out b/test/out/meta/ref-02.out
deleted file mode 100644
--- a/test/out/meta/ref-02.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/meta/ref-03.out b/test/out/meta/ref-03.out
deleted file mode 100644
--- a/test/out/meta/ref-03.out
+++ /dev/null
@@ -1,169 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/ref-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/ref-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/ref-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, ParBreak
-, Code
-    "test/typ/meta/ref-03.typ"
-    ( line 3 , column 2 )
-    (Show
-       (Just (Ident (Identifier "ref")))
-       (FuncExpr
-          [ NormalParam (Identifier "it") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( And
-                          (Not
-                             (Equals
-                                (FieldAccess
-                                   (Ident (Identifier "element")) (Ident (Identifier "it")))
-                                (Literal None)))
-                          (Equals
-                             (FuncCall
-                                (FieldAccess
-                                   (Ident (Identifier "func"))
-                                   (FieldAccess
-                                      (Ident (Identifier "element")) (Ident (Identifier "it"))))
-                                [])
-                             (Ident (Identifier "figure")))
-                      , Block
-                          (CodeBlock
-                             [ Let
-                                 (BasicBind (Just (Identifier "element")))
-                                 (FieldAccess
-                                    (Ident (Identifier "element")) (Ident (Identifier "it")))
-                             , Literal (String "[")
-                             , FieldAccess
-                                 (Ident (Identifier "supplement")) (Ident (Identifier "element"))
-                             , Literal (String "-")
-                             , FuncCall
-                                 (Ident (Identifier "str"))
-                                 [ NormalArg
-                                     (FuncCall
-                                        (FieldAccess
-                                           (Ident (Identifier "at"))
-                                           (FuncCall
-                                              (FieldAccess
-                                                 (Ident (Identifier "at"))
-                                                 (FieldAccess
-                                                    (Ident (Identifier "counter"))
-                                                    (Ident (Identifier "element"))))
-                                              [ NormalArg
-                                                  (FuncCall
-                                                     (FieldAccess
-                                                        (Ident (Identifier "location"))
-                                                        (Ident (Identifier "element")))
-                                                     [])
-                                              ]))
-                                        [ NormalArg (Literal (Int 0)) ])
-                                 ]
-                             , Literal (String "]")
-                             ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block (CodeBlock [ Ident (Identifier "it") ])
-                      )
-                    ]
-                ]))))
-, ParBreak
-, Code
-    "test/typ/meta/ref-03.typ"
-    ( line 17 , column 2 )
-    (FuncCall
-       (Ident (Identifier "figure"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "image"))
-              [ NormalArg (Literal (String "/assets/files/cylinder.svg"))
-              , KeyValArg (Identifier "height") (Literal (Numeric 3.0 Cm))
-              ])
-       , KeyValArg
-           (Identifier "caption")
-           (Block (Content [ Text "A" , Space , Text "sylinder" , Text "." ]))
-       , KeyValArg (Identifier "supplement") (Literal (String "Fig"))
-       ])
-, Space
-, Code
-    "test/typ/meta/ref-03.typ" ( line 21 , column 3 ) (Label "fig1")
-, ParBreak
-, Code
-    "test/typ/meta/ref-03.typ"
-    ( line 23 , column 2 )
-    (FuncCall
-       (Ident (Identifier "figure"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "image"))
-              [ NormalArg (Literal (String "/assets/files/tiger.jpg"))
-              , KeyValArg (Identifier "height") (Literal (Numeric 3.0 Cm))
-              ])
-       , KeyValArg
-           (Identifier "caption")
-           (Block (Content [ Text "A" , Space , Text "tiger" , Text "." ]))
-       , KeyValArg (Identifier "supplement") (Literal (String "Figg"))
-       ])
-, Space
-, Code
-    "test/typ/meta/ref-03.typ" ( line 27 , column 3 ) (Label "fig2")
-, ParBreak
-, Code
-    "test/typ/meta/ref-03.typ"
-    ( line 29 , column 2 )
-    (FuncCall
-       (Ident (Identifier "figure"))
-       [ NormalArg
-           (Block
-              (Content [ Equation True [ Text "A" , Text "=" , Text "1" ] ]))
-       , KeyValArg (Identifier "kind") (Literal (String "equation"))
-       , KeyValArg (Identifier "supplement") (Literal (String "Equa"))
-       ])
-, Space
-, Code
-    "test/typ/meta/ref-03.typ" ( line 34 , column 3 ) (Label "eq1")
-, SoftBreak
-, Ref "fig1" (Literal Auto)
-, ParBreak
-, Ref "fig2" (Literal Auto)
-, ParBreak
-, Ref "eq1" (Literal Auto)
-, ParBreak
-]
-"test/typ/meta/ref-03.typ" (line 34, column 3):
-Content does not have a method "element" or FieldAccess requires a dictionary
diff --git a/test/out/meta/ref-04.out b/test/out/meta/ref-04.out
deleted file mode 100644
--- a/test/out/meta/ref-04.out
+++ /dev/null
@@ -1,159 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/ref-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/ref-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/ref-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/meta/ref-04.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "heading"))
-       [ KeyValArg
-           (Identifier "numbering")
-           (FuncExpr
-              [ SinkParam (Just (Identifier "nums")) ]
-              (Block
-                 (CodeBlock
-                    [ FuncCall
-                        (FieldAccess
-                           (Ident (Identifier "join"))
-                           (FuncCall
-                              (FieldAccess
-                                 (Ident (Identifier "map"))
-                                 (FuncCall
-                                    (FieldAccess
-                                       (Ident (Identifier "pos")) (Ident (Identifier "nums")))
-                                    []))
-                              [ NormalArg (Ident (Identifier "str")) ]))
-                        [ NormalArg (Literal (String ".")) ]
-                    ])))
-       , KeyValArg
-           (Identifier "supplement") (Block (Content [ Text "Chapt" ]))
-       ])
-, ParBreak
-, Code
-    "test/typ/meta/ref-04.typ"
-    ( line 6 , column 2 )
-    (Show
-       (Just (Ident (Identifier "ref")))
-       (FuncExpr
-          [ NormalParam (Identifier "it") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( And
-                          (Not
-                             (Equals
-                                (FieldAccess
-                                   (Ident (Identifier "element")) (Ident (Identifier "it")))
-                                (Literal None)))
-                          (Equals
-                             (FuncCall
-                                (FieldAccess
-                                   (Ident (Identifier "func"))
-                                   (FieldAccess
-                                      (Ident (Identifier "element")) (Ident (Identifier "it"))))
-                                [])
-                             (Ident (Identifier "heading")))
-                      , Block
-                          (CodeBlock
-                             [ Let
-                                 (BasicBind (Just (Identifier "element")))
-                                 (FieldAccess
-                                    (Ident (Identifier "element")) (Ident (Identifier "it")))
-                             , Literal (String "[")
-                             , FuncCall
-                                 (Ident (Identifier "emph"))
-                                 [ NormalArg
-                                     (FieldAccess
-                                        (Ident (Identifier "supplement"))
-                                        (Ident (Identifier "element")))
-                                 ]
-                             , Literal (String "-")
-                             , FuncCall
-                                 (Ident (Identifier "numbering"))
-                                 [ NormalArg
-                                     (FieldAccess
-                                        (Ident (Identifier "numbering"))
-                                        (Ident (Identifier "element")))
-                                 , SpreadArg
-                                     (FuncCall
-                                        (FieldAccess
-                                           (Ident (Identifier "at"))
-                                           (FuncCall
-                                              (Ident (Identifier "counter"))
-                                              [ NormalArg (Ident (Identifier "heading")) ]))
-                                        [ NormalArg
-                                            (FuncCall
-                                               (FieldAccess
-                                                  (Ident (Identifier "location"))
-                                                  (Ident (Identifier "element")))
-                                               [])
-                                        ])
-                                 ]
-                             , Literal (String "]")
-                             ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block (CodeBlock [ Ident (Identifier "it") ])
-                      )
-                    ]
-                ]))))
-, ParBreak
-, Heading 1 [ Text "Introduction" ]
-, Code
-    "test/typ/meta/ref-04.typ" ( line 19 , column 16 ) (Label "intro")
-, ParBreak
-, Heading 1 [ Text "Summary" ]
-, Code
-    "test/typ/meta/ref-04.typ" ( line 21 , column 11 ) (Label "sum")
-, ParBreak
-, Heading 2 [ Text "Subsection" ]
-, Code
-    "test/typ/meta/ref-04.typ" ( line 23 , column 15 ) (Label "sub")
-, ParBreak
-, Ref "intro" (Literal Auto)
-, ParBreak
-, Ref "sum" (Literal Auto)
-, ParBreak
-, Ref "sub" (Literal Auto)
-, ParBreak
-]
-"test/typ/meta/ref-04.typ" (line 23, column 15):
-Content does not have a method "element" or FieldAccess requires a dictionary
diff --git a/test/out/meta/ref-05.out b/test/out/meta/ref-05.out
deleted file mode 100644
--- a/test/out/meta/ref-05.out
+++ /dev/null
@@ -1,149 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/ref-05.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/ref-05.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/ref-05.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, ParBreak
-, Code
-    "test/typ/meta/ref-05.typ"
-    ( line 3 , column 2 )
-    (Show
-       (Just (Ident (Identifier "ref")))
-       (FuncExpr
-          [ NormalParam (Identifier "it") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Not
-                          (Equals
-                             (FieldAccess
-                                (Ident (Identifier "element")) (Ident (Identifier "it")))
-                             (Literal None))
-                      , Block
-                          (CodeBlock
-                             [ If
-                                 [ ( Equals
-                                       (FuncCall
-                                          (FieldAccess
-                                             (Ident (Identifier "func"))
-                                             (FieldAccess
-                                                (Ident (Identifier "element"))
-                                                (Ident (Identifier "it"))))
-                                          [])
-                                       (Ident (Identifier "text"))
-                                   , Block
-                                       (CodeBlock
-                                          [ Let
-                                              (BasicBind (Just (Identifier "element")))
-                                              (FieldAccess
-                                                 (Ident (Identifier "element"))
-                                                 (Ident (Identifier "it")))
-                                          , Literal (String "[")
-                                          , Ident (Identifier "element")
-                                          , Literal (String "]")
-                                          ])
-                                   )
-                                 , ( Equals
-                                       (FuncCall
-                                          (FieldAccess
-                                             (Ident (Identifier "func"))
-                                             (FieldAccess
-                                                (Ident (Identifier "element"))
-                                                (Ident (Identifier "it"))))
-                                          [])
-                                       (Ident (Identifier "underline"))
-                                   , Block
-                                       (CodeBlock
-                                          [ Let
-                                              (BasicBind (Just (Identifier "element")))
-                                              (FieldAccess
-                                                 (Ident (Identifier "element"))
-                                                 (Ident (Identifier "it")))
-                                          , Literal (String "{")
-                                          , Ident (Identifier "element")
-                                          , Literal (String "}")
-                                          ])
-                                   )
-                                 , ( Literal (Boolean True)
-                                   , Block (CodeBlock [ Ident (Identifier "it") ])
-                                   )
-                                 ]
-                             ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block (CodeBlock [ Ident (Identifier "it") ])
-                      )
-                    ]
-                ]))))
-, ParBreak
-, Ref "txt" (Literal Auto)
-, ParBreak
-, Text "Ref"
-, Space
-, Text "something"
-, Space
-, Text "unreferable"
-, Space
-, Code
-    "test/typ/meta/ref-05.typ" ( line 25 , column 27 ) (Label "txt")
-, ParBreak
-, Ref "under" (Literal Auto)
-, SoftBreak
-, Code
-    "test/typ/meta/ref-05.typ"
-    ( line 28 , column 2 )
-    (FuncCall
-       (Ident (Identifier "underline"))
-       [ BlockArg
-           [ SoftBreak
-           , Text "Some"
-           , Space
-           , Text "underline"
-           , Space
-           , Text "text"
-           , Text "."
-           , ParBreak
-           ]
-       ])
-, Space
-, Code
-    "test/typ/meta/ref-05.typ" ( line 30 , column 3 ) (Label "under")
-, ParBreak
-]
-"test/typ/meta/ref-05.typ" (line 3, column 2):
-Content does not have a method "element" or FieldAccess requires a dictionary
diff --git a/test/out/meta/state-00.out b/test/out/meta/state-00.out
deleted file mode 100644
--- a/test/out/meta/state-00.out
+++ /dev/null
@@ -1,139 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/state-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/state-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/state-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/meta/state-00.typ"
-    ( line 2 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "s")))
-       (FuncCall
-          (Ident (Identifier "state"))
-          [ NormalArg (Literal (String "hey"))
-          , NormalArg (Literal (String "a"))
-          ]))
-, SoftBreak
-, Code
-    "test/typ/meta/state-00.typ"
-    ( line 3 , column 2 )
-    (LetFunc
-       (Identifier "double")
-       [ NormalParam (Identifier "it") ]
-       (Times (Literal (Int 2)) (Ident (Identifier "it"))))
-, ParBreak
-, Code
-    "test/typ/meta/state-00.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (FieldAccess
-          (Ident (Identifier "update")) (Ident (Identifier "s")))
-       [ NormalArg (Ident (Identifier "double")) ])
-, SoftBreak
-, Code
-    "test/typ/meta/state-00.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (FieldAccess
-          (Ident (Identifier "update")) (Ident (Identifier "s")))
-       [ NormalArg (Ident (Identifier "double")) ])
-, SoftBreak
-, Equation True [ Text "2" , Text "+" , Text "3" ]
-, SoftBreak
-, Code
-    "test/typ/meta/state-00.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (FieldAccess
-          (Ident (Identifier "update")) (Ident (Identifier "s")))
-       [ NormalArg (Ident (Identifier "double")) ])
-, ParBreak
-, Text "Is"
-, Text ":"
-, Space
-, Code
-    "test/typ/meta/state-00.typ"
-    ( line 10 , column 6 )
-    (FuncCall
-       (FieldAccess
-          (Ident (Identifier "display")) (Ident (Identifier "s")))
-       [])
-, Text ","
-, SoftBreak
-, Text "Was"
-, Text ":"
-, Space
-, Code
-    "test/typ/meta/state-00.typ"
-    ( line 11 , column 7 )
-    (FuncCall
-       (Ident (Identifier "locate"))
-       [ NormalArg
-           (FuncExpr
-              [ NormalParam (Identifier "location") ]
-              (Block
-                 (CodeBlock
-                    [ Let
-                        (BasicBind (Just (Identifier "it")))
-                        (FuncCall
-                           (FieldAccess
-                              (Ident (Identifier "first"))
-                              (FuncCall
-                                 (Ident (Identifier "query"))
-                                 [ NormalArg
-                                     (FieldAccess
-                                        (Ident (Identifier "equation")) (Ident (Identifier "math")))
-                                 , NormalArg (Ident (Identifier "location"))
-                                 ]))
-                           [])
-                    , FuncCall
-                        (FieldAccess (Ident (Identifier "at")) (Ident (Identifier "s")))
-                        [ NormalArg
-                            (FuncCall
-                               (FieldAccess
-                                  (Ident (Identifier "location")) (Ident (Identifier "it")))
-                               [])
-                        ]
-                    ])))
-       ])
-, Text "."
-, ParBreak
-]
-"test/typ/meta/state-00.typ" (line 5, column 2):
-Content does not have a method "update" or FieldAccess requires a dictionary
diff --git a/test/out/meta/state-01.out b/test/out/meta/state-01.out
deleted file mode 100644
--- a/test/out/meta/state-01.out
+++ /dev/null
@@ -1,216 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/meta/state-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/meta/state-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/meta/state-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/meta/state-01.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 200.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/meta/state-01.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ NormalArg (Literal (Numeric 8.0 Pt)) ])
-, ParBreak
-, Code
-    "test/typ/meta/state-01.typ"
-    ( line 5 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "ls")))
-       (FuncCall
-          (Ident (Identifier "state"))
-          [ NormalArg (Literal (String "lorem"))
-          , NormalArg
-              (FuncCall
-                 (FieldAccess
-                    (Ident (Identifier "split"))
-                    (FuncCall
-                       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 1000)) ]))
-                 [ NormalArg (Literal (String ".")) ])
-          ]))
-, SoftBreak
-, Code
-    "test/typ/meta/state-01.typ"
-    ( line 6 , column 2 )
-    (LetFunc
-       (Identifier "loremum")
-       [ NormalParam (Identifier "count") ]
-       (Block
-          (CodeBlock
-             [ FuncCall
-                 (FieldAccess
-                    (Ident (Identifier "display")) (Ident (Identifier "ls")))
-                 [ NormalArg
-                     (FuncExpr
-                        [ NormalParam (Identifier "list") ]
-                        (Plus
-                           (FuncCall
-                              (FieldAccess
-                                 (Ident (Identifier "trim"))
-                                 (FuncCall
-                                    (FieldAccess
-                                       (Ident (Identifier "join"))
-                                       (FuncCall
-                                          (FieldAccess
-                                             (Ident (Identifier "slice"))
-                                             (Ident (Identifier "list")))
-                                          [ NormalArg (Literal (Int 0))
-                                          , NormalArg (Ident (Identifier "count"))
-                                          ]))
-                                    [ NormalArg (Literal (String ".")) ]))
-                              [])
-                           (Literal (String "."))))
-                 ]
-             , FuncCall
-                 (FieldAccess
-                    (Ident (Identifier "update")) (Ident (Identifier "ls")))
-                 [ NormalArg
-                     (FuncExpr
-                        [ NormalParam (Identifier "list") ]
-                        (FuncCall
-                           (FieldAccess
-                              (Ident (Identifier "slice")) (Ident (Identifier "list")))
-                           [ NormalArg (Ident (Identifier "count")) ]))
-                 ]
-             ])))
-, ParBreak
-, Code
-    "test/typ/meta/state-01.typ"
-    ( line 11 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "fs")))
-       (FuncCall
-          (Ident (Identifier "state"))
-          [ NormalArg (Literal (String "fader"))
-          , NormalArg (Ident (Identifier "red"))
-          ]))
-, SoftBreak
-, Code
-    "test/typ/meta/state-01.typ"
-    ( line 12 , column 2 )
-    (LetFunc
-       (Identifier "trait")
-       [ NormalParam (Identifier "title") ]
-       (FuncCall
-          (Ident (Identifier "block"))
-          [ BlockArg
-              [ SoftBreak
-              , Code
-                  "test/typ/meta/state-01.typ"
-                  ( line 13 , column 4 )
-                  (FuncCall
-                     (FieldAccess
-                        (Ident (Identifier "display")) (Ident (Identifier "fs")))
-                     [ NormalArg
-                         (FuncExpr
-                            [ NormalParam (Identifier "color") ]
-                            (FuncCall
-                               (Ident (Identifier "text"))
-                               [ KeyValArg (Identifier "fill") (Ident (Identifier "color"))
-                               , BlockArg
-                                   [ SoftBreak
-                                   , Strong
-                                       [ Code
-                                           "test/typ/meta/state-01.typ"
-                                           ( line 14 , column 7 )
-                                           (Ident (Identifier "title"))
-                                       , Text ":"
-                                       ]
-                                   , Space
-                                   , Code
-                                       "test/typ/meta/state-01.typ"
-                                       ( line 14 , column 16 )
-                                       (FuncCall
-                                          (Ident (Identifier "loremum"))
-                                          [ NormalArg (Literal (Int 1)) ])
-                                   , ParBreak
-                                   ]
-                               ]))
-                     ])
-              , SoftBreak
-              , Code
-                  "test/typ/meta/state-01.typ"
-                  ( line 16 , column 4 )
-                  (FuncCall
-                     (FieldAccess
-                        (Ident (Identifier "update")) (Ident (Identifier "fs")))
-                     [ NormalArg
-                         (FuncExpr
-                            [ NormalParam (Identifier "color") ]
-                            (FuncCall
-                               (FieldAccess
-                                  (Ident (Identifier "lighten")) (Ident (Identifier "color")))
-                               [ NormalArg (Literal (Numeric 30.0 Percent)) ]))
-                     ])
-              , ParBreak
-              ]
-          ]))
-, ParBreak
-, Code
-    "test/typ/meta/state-01.typ"
-    ( line 19 , column 2 )
-    (FuncCall
-       (Ident (Identifier "trait")) [ BlockArg [ Text "Boldness" ] ])
-, SoftBreak
-, Code
-    "test/typ/meta/state-01.typ"
-    ( line 20 , column 2 )
-    (FuncCall
-       (Ident (Identifier "trait")) [ BlockArg [ Text "Adventure" ] ])
-, SoftBreak
-, Code
-    "test/typ/meta/state-01.typ"
-    ( line 21 , column 2 )
-    (FuncCall
-       (Ident (Identifier "trait")) [ BlockArg [ Text "Fear" ] ])
-, SoftBreak
-, Code
-    "test/typ/meta/state-01.typ"
-    ( line 22 , column 2 )
-    (FuncCall
-       (Ident (Identifier "trait")) [ BlockArg [ Text "Anger" ] ])
-, ParBreak
-]
-"test/typ/meta/state-01.typ" (line 13, column 4):
-Content does not have a method "display" or FieldAccess requires a dictionary
diff --git a/test/out/regression/issue1.out b/test/out/regression/issue1.out
deleted file mode 100644
--- a/test/out/regression/issue1.out
+++ /dev/null
@@ -1,71 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/regression/issue1.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/regression/issue1.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/regression/issue1.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/regression/issue1.typ"
-    ( line 2 , column 2 )
-    (LetFunc
-       (Identifier "foo")
-       [ NormalParam (Identifier "x") ]
-       (Block
-          (CodeBlock
-             [ Return
-                 (Just
-                    (Array [ Spr (Ident (Identifier "x")) , Reg (Literal (Int 5)) ]))
-             ])))
-, SoftBreak
-, Code
-    "test/typ/regression/issue1.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "foo"))
-       [ NormalArg
-           (Array [ Reg (Literal (Int 3)) , Reg (Literal (Int 4)) ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [(3, 4, 5)]), 
-                 parbreak() })
diff --git a/test/out/regression/issue12.out b/test/out/regression/issue12.out
deleted file mode 100644
--- a/test/out/regression/issue12.out
+++ /dev/null
@@ -1,61 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/regression/issue12.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/regression/issue12.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/regression/issue12.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Text "he"
-, Quote '\''
-, Strong [ Text "llo" , Space , Text "World" ]
-, ParBreak
-, Text "l\8217"
-, Strong [ Text "exactitude" ]
-, ParBreak
-, Text "a*b_c_e"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-he’]), 
-                 strong(body: text(body: [llo World])), 
-                 parbreak(), 
-                 text(body: [l’]), 
-                 strong(body: text(body: [exactitude])), 
-                 parbreak(), 
-                 text(body: [a*b_c_e]), 
-                 parbreak() })
diff --git a/test/out/regression/issue15.out b/test/out/regression/issue15.out
deleted file mode 100644
--- a/test/out/regression/issue15.out
+++ /dev/null
@@ -1,70 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/regression/issue15.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/regression/issue15.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/regression/issue15.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Equation
-    False
-    [ Code
-        "test/typ/regression/issue15.typ"
-        ( line 2 , column 2 )
-        (Ident (Identifier "dots"))
-    ]
-, SoftBreak
-, Equation
-    False
-    [ Code
-        "test/typ/regression/issue15.typ"
-        ( line 3 , column 2 )
-        (FieldAccess (Ident (Identifier "l")) (Ident (Identifier "quote")))
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: false, 
-                               body: text(body: […]), 
-                               numbering: none), 
-                 text(body: [
-]), 
-                 math.equation(block: false, 
-                               body: text(body: [“]), 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/regression/issue17.out b/test/out/regression/issue17.out
deleted file mode 100644
--- a/test/out/regression/issue17.out
+++ /dev/null
@@ -1,223 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/regression/issue17.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/regression/issue17.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/regression/issue17.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Equation
-    False
-    [ MAttach
-        Nothing
-        (Just (MGroup Nothing Nothing [ Text "b" ]))
-        (MGroup
-           Nothing
-           Nothing
-           [ Text "n" , MGroup (Just "(") (Just ")") [ Text "a" ] ])
-    ]
-, ParBreak
-, Equation
-    False
-    [ MAttach (Just (Text "1")) Nothing (Text "a")
-    , MGroup (Just "(") (Just ")") [ Text "x" ]
-    ]
-, ParBreak
-, Equation
-    False
-    [ MAttach
-        (Just
-           (MGroup
-              Nothing
-              Nothing
-              [ Text "f" , MGroup (Just "(") (Just ")") [ Text "x" ] ]))
-        Nothing
-        (Text "a")
-    ]
-, ParBreak
-, Equation
-    False
-    [ MAttach
-        (Just (MGroup Nothing Nothing [ Text "j" , Text "=" , Text "0" ]))
-        (Just (Text "3"))
-        (Code
-           "test/typ/regression/issue17.typ"
-           ( line 8 , column 2 )
-           (Ident (Identifier "sum")))
-    ]
-, ParBreak
-, Equation
-    False
-    [ MAttach
-        (Just (MGroup Nothing Nothing [ Text "j" , Text "=" , Text "0" ]))
-        (Just (Text "3"))
-        (Code
-           "test/typ/regression/issue17.typ"
-           ( line 10 , column 2 )
-           (Ident (Identifier "sum")))
-    ]
-, ParBreak
-, Equation
-    False
-    [ MAttach
-        (Just (Text "3"))
-        (Just (MGroup Nothing Nothing [ Text "j" , Text "=" , Text "0" ]))
-        (Code
-           "test/typ/regression/issue17.typ"
-           ( line 12 , column 2 )
-           (Ident (Identifier "sum")))
-    ]
-, ParBreak
-, Equation
-    False
-    [ MAttach
-        (Just (Text "3"))
-        (Just (MGroup Nothing Nothing [ Text "j" , Text "=" , Text "0" ]))
-        (Code
-           "test/typ/regression/issue17.typ"
-           ( line 14 , column 2 )
-           (Ident (Identifier "sum")))
-    ]
-, ParBreak
-, Equation
-    False
-    [ MAttach
-        (Just (MGroup Nothing Nothing [ Text "j" , Text "=" , Text "0" ]))
-        (Just
-           (Code
-              "test/typ/regression/issue17.typ"
-              ( line 16 , column 12 )
-              (Ident (Identifier "pi"))))
-        (Code
-           "test/typ/regression/issue17.typ"
-           ( line 16 , column 2 )
-           (Ident (Identifier "sum")))
-    ]
-, ParBreak
-, Equation
-    False
-    [ MAttach
-        (Just (MGroup Nothing Nothing [ Text "j" , Text "=" , Text "0" ]))
-        (Just
-           (Code
-              "test/typ/regression/issue17.typ"
-              ( line 18 , column 6 )
-              (Ident (Identifier "pi"))))
-        (Code
-           "test/typ/regression/issue17.typ"
-           ( line 18 , column 2 )
-           (Ident (Identifier "sum")))
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: false, 
-                               body: math.attach(b: none, 
-                                                 base: { text(body: [n]), 
-                                                         math.lr(body: ({ [(], 
-                                                                          text(body: [a]), 
-                                                                          [)] })) }, 
-                                                 t: text(body: [b])), 
-                               numbering: none), 
-                 parbreak(), 
-                 math.equation(block: false, 
-                               body: { math.attach(b: text(body: [1]), 
-                                                   base: text(body: [a]), 
-                                                   t: none), 
-                                       math.lr(body: ({ [(], 
-                                                        text(body: [x]), 
-                                                        [)] })) }, 
-                               numbering: none), 
-                 parbreak(), 
-                 math.equation(block: false, 
-                               body: math.attach(b: { text(body: [f]), 
-                                                      math.lr(body: ({ [(], 
-                                                                       text(body: [x]), 
-                                                                       [)] })) }, 
-                                                 base: text(body: [a]), 
-                                                 t: none), 
-                               numbering: none), 
-                 parbreak(), 
-                 math.equation(block: false, 
-                               body: math.attach(b: { text(body: [j]), 
-                                                      text(body: [=]), 
-                                                      text(body: [0]) }, 
-                                                 base: text(body: [∑]), 
-                                                 t: text(body: [3])), 
-                               numbering: none), 
-                 parbreak(), 
-                 math.equation(block: false, 
-                               body: math.attach(b: { text(body: [j]), 
-                                                      text(body: [=]), 
-                                                      text(body: [0]) }, 
-                                                 base: text(body: [∑]), 
-                                                 t: text(body: [3])), 
-                               numbering: none), 
-                 parbreak(), 
-                 math.equation(block: false, 
-                               body: math.attach(b: text(body: [3]), 
-                                                 base: text(body: [∑]), 
-                                                 t: { text(body: [j]), 
-                                                      text(body: [=]), 
-                                                      text(body: [0]) }), 
-                               numbering: none), 
-                 parbreak(), 
-                 math.equation(block: false, 
-                               body: math.attach(b: text(body: [3]), 
-                                                 base: text(body: [∑]), 
-                                                 t: { text(body: [j]), 
-                                                      text(body: [=]), 
-                                                      text(body: [0]) }), 
-                               numbering: none), 
-                 parbreak(), 
-                 math.equation(block: false, 
-                               body: math.attach(b: { text(body: [j]), 
-                                                      text(body: [=]), 
-                                                      text(body: [0]) }, 
-                                                 base: text(body: [∑]), 
-                                                 t: text(body: [π])), 
-                               numbering: none), 
-                 parbreak(), 
-                 math.equation(block: false, 
-                               body: math.attach(b: { text(body: [j]), 
-                                                      text(body: [=]), 
-                                                      text(body: [0]) }, 
-                                                 base: text(body: [∑]), 
-                                                 t: text(body: [π])), 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/regression/issue19.out b/test/out/regression/issue19.out
deleted file mode 100644
--- a/test/out/regression/issue19.out
+++ /dev/null
@@ -1,89 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/regression/issue19.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/regression/issue19.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/regression/issue19.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/regression/issue19.typ"
-    ( line 2 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "nums")))
-       (Array
-          [ Reg (Literal (Int 1))
-          , Reg (Literal None)
-          , Reg (Literal (Int 2))
-          ]))
-, SoftBreak
-, Code
-    "test/typ/regression/issue19.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (FieldAccess
-          (Ident (Identifier "map")) (Ident (Identifier "nums")))
-       [ NormalArg
-           (FuncExpr
-              [ NormalParam (Identifier "num") ]
-              (Block
-                 (CodeBlock
-                    [ If
-                        [ ( Equals (Ident (Identifier "num")) (Literal None)
-                          , Block (CodeBlock [ Return (Just (Literal (Int 1))) ])
-                          )
-                        ]
-                    , Return
-                        (Just
-                           (Dict
-                              [ Reg
-                                  ( FuncCall
-                                      (Ident (Identifier "str"))
-                                      [ NormalArg (Ident (Identifier "num")) ]
-                                  , Literal (Int 1)
-                                  )
-                              ]))
-                    ])))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [((1: 1), 1, (2: 1))]), 
-                 parbreak() })
diff --git a/test/out/regression/issue2.out b/test/out/regression/issue2.out
deleted file mode 100644
--- a/test/out/regression/issue2.out
+++ /dev/null
@@ -1,72 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/regression/issue2.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/regression/issue2.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/regression/issue2.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Equation
-    False
-    [ Code
-        "test/typ/regression/issue2.typ"
-        ( line 2 , column 2 )
-        (FuncCall
-           (Ident (Identifier "lr"))
-           [ BlockArg
-               [ Code
-                   "test/typ/regression/issue2.typ"
-                   ( line 2 , column 6 )
-                   (FieldAccess
-                      (Ident (Identifier "alpha")) (Ident (Identifier "sym")))
-               , Code
-                   "test/typ/regression/issue2.typ"
-                   ( line 2 , column 16 )
-                   (FieldAccess
-                      (Ident (Identifier "beta")) (Ident (Identifier "sym")))
-               ]
-           ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: false, 
-                               body: math.lr(body: ({ text(body: [α]), 
-                                                      text(body: [β]) })), 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/regression/issue20.out b/test/out/regression/issue20.out
deleted file mode 100644
--- a/test/out/regression/issue20.out
+++ /dev/null
@@ -1,63 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/regression/issue20.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/regression/issue20.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/regression/issue20.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/regression/issue20.typ"
-    ( line 2 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "a")))
-       (Literal (String "\nThis is a\nmultiline string\n")))
-, SoftBreak
-, Code
-    "test/typ/regression/issue20.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (FieldAccess (Ident (Identifier "len")) (Ident (Identifier "a")))
-       [])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [28]), 
-                 parbreak() })
diff --git a/test/out/regression/issue21.out b/test/out/regression/issue21.out
deleted file mode 100644
--- a/test/out/regression/issue21.out
+++ /dev/null
@@ -1,68 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/regression/issue21.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/regression/issue21.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/regression/issue21.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/regression/issue21.typ"
-    ( line 2 , column 2 )
-    (FuncCall
-       (Ident (Identifier "version"))
-       [ NormalArg (Literal (Int 1)) , NormalArg (Literal (Int 2)) ])
-, SoftBreak
-, Code
-    "test/typ/regression/issue21.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (FieldAccess
-          (Ident (Identifier "at"))
-          (FuncCall
-             (Ident (Identifier "version"))
-             [ NormalArg (Literal (Int 1)) , NormalArg (Literal (Int 2)) ]))
-       [ NormalArg (Literal (Int 3)) ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [1.2]), 
-                 text(body: [
-]), 
-                 text(body: [0]), 
-                 parbreak() })
diff --git a/test/out/regression/issue21b.out b/test/out/regression/issue21b.out
deleted file mode 100644
--- a/test/out/regression/issue21b.out
+++ /dev/null
@@ -1,83 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/regression/issue21b.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/regression/issue21b.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/regression/issue21b.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/regression/issue21b.typ"
-    ( line 2 , column 2 )
-    (Import
-       (Literal (String "issue19.typ"))
-       (NoIdentifiers (Just (Identifier "zeke"))))
-, SoftBreak
-, Code
-    "test/typ/regression/issue21b.typ"
-    ( line 3 , column 2 )
-    (FieldAccess
-       (Ident (Identifier "nums")) (Ident (Identifier "zeke")))
-, SoftBreak
-, Code
-    "test/typ/regression/issue21b.typ"
-    ( line 4 , column 2 )
-    (Import
-       (Literal (String "issue20.typ"))
-       (SomeIdentifiers
-          [ ( Identifier "a" , Just (Identifier "multiline") ) ]))
-, SoftBreak
-, Code
-    "test/typ/regression/issue21b.typ"
-    ( line 5 , column 2 )
-    (Ident (Identifier "multiline"))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [(1, none, 2)]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-This is a
-multiline string
-]), 
-                 parbreak() })
diff --git a/test/out/regression/issue23.out b/test/out/regression/issue23.out
deleted file mode 100644
--- a/test/out/regression/issue23.out
+++ /dev/null
@@ -1,77 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/regression/issue23.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/regression/issue23.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/regression/issue23.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/regression/issue23.typ"
-    ( line 2 , column 2 )
-    (LetFunc
-       (Identifier "fn")
-       []
-       (Block
-          (CodeBlock
-             [ Set
-                 (Ident (Identifier "text"))
-                 [ KeyValArg (Identifier "fill") (Ident (Identifier "red")) ]
-             , If
-                 [ ( Literal (Boolean True)
-                   , Block (Content [ SoftBreak , Text "test" , ParBreak ])
-                   )
-                 , ( Literal (Boolean True)
-                   , Block (Content [ SoftBreak , Text "test2" , ParBreak ])
-                   )
-                 ]
-             ])))
-, ParBreak
-, Code
-    "test/typ/regression/issue23.typ"
-    ( line 11 , column 2 )
-    (FuncCall (Ident (Identifier "fn")) [])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [
-test], 
-                      fill: rgb(100%,25%,21%,100%)), 
-                 parbreak(), 
-                 parbreak() })
diff --git a/test/out/regression/issue25.out b/test/out/regression/issue25.out
deleted file mode 100644
--- a/test/out/regression/issue25.out
+++ /dev/null
@@ -1,82 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/regression/issue25.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/regression/issue25.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/regression/issue25.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/regression/issue25.typ"
-    ( line 2 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "x")))
-       (Dict [ Reg ( Ident (Identifier "a") , Literal (Int 5) ) ]))
-, SoftBreak
-, Code
-    "test/typ/regression/issue25.typ"
-    ( line 3 , column 2 )
-    (Let (BasicBind (Just (Identifier "key"))) (Literal (String "a")))
-, SoftBreak
-, Code
-    "test/typ/regression/issue25.typ"
-    ( line 4 , column 2 )
-    (Block
-       (CodeBlock
-          [ Assign
-              (FuncCall
-                 (FieldAccess (Ident (Identifier "at")) (Ident (Identifier "x")))
-                 [ NormalArg (Ident (Identifier "key")) ])
-              (Literal (Int 6))
-          ]))
-, SoftBreak
-, Code
-    "test/typ/regression/issue25.typ"
-    ( line 7 , column 2 )
-    (Ident (Identifier "x"))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [(a: 6)]), 
-                 parbreak() })
diff --git a/test/out/regression/issue26.out b/test/out/regression/issue26.out
deleted file mode 100644
--- a/test/out/regression/issue26.out
+++ /dev/null
@@ -1,68 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/regression/issue26.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/regression/issue26.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/regression/issue26.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/regression/issue26.typ"
-    ( line 2 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "x")))
-       (Dict [ Reg ( Ident (Identifier "a") , Literal (Int 4) ) ]))
-, SoftBreak
-, Code
-    "test/typ/regression/issue26.typ"
-    ( line 3 , column 2 )
-    (Block
-       (CodeBlock
-          [ Assign
-              (FuncCall
-                 (FieldAccess (Ident (Identifier "at")) (Ident (Identifier "x")))
-                 [ NormalArg (Literal (String "b")) ])
-              (Literal (Int 5))
-          ]))
-, SoftBreak
-, Code
-    "test/typ/regression/issue26.typ"
-    ( line 6 , column 2 )
-    (Ident (Identifier "x"))
-, ParBreak
-]
-"test/typ/regression/issue26.typ" (line 3, column 2):
-Dictionary does not contain key "b"
diff --git a/test/out/regression/issue3.out b/test/out/regression/issue3.out
deleted file mode 100644
--- a/test/out/regression/issue3.out
+++ /dev/null
@@ -1,74 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/regression/issue3.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/regression/issue3.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/regression/issue3.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/regression/issue3.typ"
-    ( line 2 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "alpha")))
-       (Dict
-          [ Reg
-              ( Ident (Identifier "named")
-              , Dict
-                  [ Reg ( Ident (Identifier "a") , Literal (Int 1) )
-                  , Reg ( Ident (Identifier "b") , Literal (Int 2) )
-                  ]
-              )
-          ]))
-, SoftBreak
-, Code
-    "test/typ/regression/issue3.typ"
-    ( line 3 , column 2 )
-    (Dict
-       [ Spr
-           (FieldAccess
-              (Ident (Identifier "named")) (Ident (Identifier "alpha")))
-       , Reg ( Ident (Identifier "c") , Literal (Int 3) )
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [(a: 1, b: 2, c: 3)]), 
-                 parbreak() })
diff --git a/test/out/regression/issue41.out b/test/out/regression/issue41.out
deleted file mode 100644
--- a/test/out/regression/issue41.out
+++ /dev/null
@@ -1,63 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/regression/issue41.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/regression/issue41.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/regression/issue41.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Equation
-    False
-    [ MAttach
-        (Just (Text "2"))
-        Nothing
-        (Code
-           "test/typ/regression/issue41.typ"
-           ( line 2 , column 2 )
-           (FieldAccess
-              (Ident (Identifier "circle")) (Ident (Identifier "plus"))))
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: false, 
-                               body: math.attach(b: text(body: [2]), 
-                                                 base: text(body: [⊕]), 
-                                                 t: none), 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/regression/issue43.out b/test/out/regression/issue43.out
deleted file mode 100644
--- a/test/out/regression/issue43.out
+++ /dev/null
@@ -1,124 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/regression/issue43.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/regression/issue43.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/regression/issue43.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/regression/issue43.typ"
-    ( line 2 , column 1 )
-    (Label "foo:bar")
-, ParBreak
-, Code
-    "test/typ/regression/issue43.typ"
-    ( line 4 , column 2 )
-    (Let (BasicBind (Just (Identifier "a"))) (Literal (String "a")))
-, ParBreak
-, Code
-    "test/typ/regression/issue43.typ"
-    ( line 6 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "w")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") ]
-          (Plus
-             (Block (Content [ Equation False [ Text "x" ] ]))
-             (Ident (Identifier "x")))))
-, ParBreak
-, Code
-    "test/typ/regression/issue43.typ"
-    ( line 8 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "x")))
-       (Block (Content [ RawInline "hello" ])))
-, ParBreak
-, Code
-    "test/typ/regression/issue43.typ"
-    ( line 10 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "a")))
-       (Dict [ Reg ( Ident (Identifier "a") , Literal (Int 1) ) ]))
-, ParBreak
-, Code
-    "test/typ/regression/issue43.typ"
-    ( line 12 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "b")))
-       (Dict [ Reg ( Ident (Identifier "b") , Literal (Int 2) ) ]))
-, ParBreak
-, Code
-    "test/typ/regression/issue43.typ"
-    ( line 14 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "c")))
-       (Dict [ Reg ( Ident (Identifier "c") , Literal (Int 3) ) ]))
-, ParBreak
-, Code
-    "test/typ/regression/issue43.typ"
-    ( line 16 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "d")))
-       (Dict [ Spr (Ident (Identifier "a")) ]))
-, ParBreak
-, Code
-    "test/typ/regression/issue43.typ"
-    ( line 18 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "e")))
-       (Dict [ Spr (Ident (Identifier "b")) ]))
-, ParBreak
-, Code
-    "test/typ/regression/issue43.typ"
-    ( line 20 , column 2 )
-    (Let (BasicBind (Just (Identifier "f"))) (Dict []))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 <foo:bar>, 
-                 parbreak(), 
-                 parbreak(), 
-                 parbreak(), 
-                 parbreak(), 
-                 parbreak(), 
-                 parbreak(), 
-                 parbreak(), 
-                 parbreak(), 
-                 parbreak(), 
-                 parbreak() })
diff --git a/test/out/regression/issue49.out b/test/out/regression/issue49.out
deleted file mode 100644
--- a/test/out/regression/issue49.out
+++ /dev/null
@@ -1,52 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/regression/issue49.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/regression/issue49.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/regression/issue49.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Text "\27979\35797\25991\26412"
-, Strong [ Text "\21152\31895" ]
-, Text "\12290"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-测试文本]), 
-                 strong(body: text(body: [加粗])), 
-                 text(body: [。]), 
-                 parbreak() })
diff --git a/test/out/regression/issue5.out b/test/out/regression/issue5.out
deleted file mode 100644
--- a/test/out/regression/issue5.out
+++ /dev/null
@@ -1,52 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/regression/issue5.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/regression/issue5.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/regression/issue5.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Equation True [ MGroup Nothing Nothing [ Text "3" , Text "!" ] ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { text(body: [3]), 
-                                       text(body: [!]) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/regression/issue50.out b/test/out/regression/issue50.out
deleted file mode 100644
--- a/test/out/regression/issue50.out
+++ /dev/null
@@ -1,51 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/regression/issue50.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/regression/issue50.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/regression/issue50.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Equation False [ Text "1." ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: false, 
-                               body: text(body: [1.]), 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/regression/issue54.out b/test/out/regression/issue54.out
deleted file mode 100644
--- a/test/out/regression/issue54.out
+++ /dev/null
@@ -1,114 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/regression/issue54.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/regression/issue54.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/regression/issue54.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Equation
-    True
-    [ MAttach
-        (Just
-           (MGroup
-              Nothing
-              Nothing
-              [ Text "a" , MGroup (Just "(") (Just ")") [ Text "b" ] ]))
-        Nothing
-        (Text "c")
-    , HardBreak
-    , MAttach
-        (Just (MGroup Nothing Nothing [ Text "a" ])) Nothing (Text "c")
-    , MGroup (Just "(") (Just ")") [ Text "b" ]
-    , HardBreak
-    , MAttach
-        (Just (MGroup Nothing Nothing [ Text "a" , Text "!" ]))
-        Nothing
-        (Text "c")
-    , HardBreak
-    , MAttach
-        (Just (MGroup Nothing Nothing [ Text "a" , Text "!" ]))
-        Nothing
-        (Text "c")
-    , MGroup (Just "(") (Just ")") [ Text "b" ]
-    , HardBreak
-    , MFrac
-        (Text "a")
-        (MAttach
-           Nothing
-           (Just (Text "n"))
-           (MGroup Nothing Nothing [ Text "b" , Text "!" ]))
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { math.attach(b: { text(body: [a]), 
-                                                        math.lr(body: ({ [(], 
-                                                                         text(body: [b]), 
-                                                                         [)] })) }, 
-                                                   base: text(body: [c]), 
-                                                   t: none), 
-                                       linebreak(), 
-                                       math.attach(b: text(body: [a]), 
-                                                   base: text(body: [c]), 
-                                                   t: none), 
-                                       math.lr(body: ({ [(], 
-                                                        text(body: [b]), 
-                                                        [)] })), 
-                                       linebreak(), 
-                                       math.attach(b: { text(body: [a]), 
-                                                        text(body: [!]) }, 
-                                                   base: text(body: [c]), 
-                                                   t: none), 
-                                       linebreak(), 
-                                       math.attach(b: { text(body: [a]), 
-                                                        text(body: [!]) }, 
-                                                   base: text(body: [c]), 
-                                                   t: none), 
-                                       math.lr(body: ({ [(], 
-                                                        text(body: [b]), 
-                                                        [)] })), 
-                                       linebreak(), 
-                                       math.frac(denom: math.attach(b: none, 
-                                                                    base: { text(body: [b]), 
-                                                                            text(body: [!]) }, 
-                                                                    t: text(body: [n])), 
-                                                 num: text(body: [a])) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/regression/issue55.out b/test/out/regression/issue55.out
deleted file mode 100644
--- a/test/out/regression/issue55.out
+++ /dev/null
@@ -1,76 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/regression/issue55.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/regression/issue55.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/regression/issue55.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Equation
-    True
-    [ MGroup (Just "(") (Just ")") [ Text "b" ]
-    , MFrac
-        (MGroup (Just "(") (Just ")") [ Text "c" ])
-        (MGroup Nothing Nothing [ Text "d" ])
-    , Text "!"
-    , MFrac
-        (MGroup (Just "(") (Just ")") [ Text "a" ])
-        (MGroup Nothing Nothing [ Text "b" ])
-    , MGroup Nothing Nothing [ HardBreak , Text "!" ]
-    , MFrac
-        (MGroup (Just "(") (Just ")") [ Text "a" ])
-        (MGroup Nothing Nothing [ Text "b" ])
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: { math.lr(body: ({ [(], 
-                                                        text(body: [b]), 
-                                                        [)] })), 
-                                       math.frac(denom: text(body: [d]), 
-                                                 num: text(body: [c])), 
-                                       text(body: [!]), 
-                                       math.frac(denom: text(body: [b]), 
-                                                 num: text(body: [a])), 
-                                       linebreak(), 
-                                       text(body: [!]), 
-                                       math.frac(denom: text(body: [b]), 
-                                                 num: text(body: [a])) }, 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/regression/issue59.out b/test/out/regression/issue59.out
deleted file mode 100644
--- a/test/out/regression/issue59.out
+++ /dev/null
@@ -1,56 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/regression/issue59.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/regression/issue59.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/regression/issue59.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/regression/issue59.typ"
-    ( line 2 , column 2 )
-    (If
-       [ ( Not (Equals (Literal (Int 5)) (Label "foo"))
-         , Block (CodeBlock [ Block (Content [ Text "a" ]) ])
-         )
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [a]), 
-                 parbreak() })
diff --git a/test/out/regression/issue6.out b/test/out/regression/issue6.out
deleted file mode 100644
--- a/test/out/regression/issue6.out
+++ /dev/null
@@ -1,65 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/regression/issue6.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/regression/issue6.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/regression/issue6.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Equation
-    True
-    [ Code
-        "test/typ/regression/issue6.typ"
-        ( line 2 , column 4 )
-        (Let
-           (BasicBind (Just (Identifier "g")))
-           (Block (Content [ Equation False [ Text "3" ] ])))
-    , Code
-        "test/typ/regression/issue6.typ"
-        ( line 3 , column 2 )
-        (Ident (Identifier "g"))
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 math.equation(block: true, 
-                               body: math.equation(block: false, 
-                                                   body: text(body: [3]), 
-                                                   numbering: none), 
-                               numbering: none), 
-                 parbreak() })
diff --git a/test/out/regression/issue60.out b/test/out/regression/issue60.out
deleted file mode 100644
--- a/test/out/regression/issue60.out
+++ /dev/null
@@ -1,62 +0,0 @@
---- parse tree ---
-[ Code
-    "typ/regression/issue60.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "typ/regression/issue60.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "typ/regression/issue60.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "typ/regression/issue60.typ"
-    ( line 2 , column 2 )
-    (Import
-       (Literal (String "addons/example.typ"))
-       (SomeIdentifiers [ ( Identifier "utf8string" , Nothing ) ]))
-, SoftBreak
-, Code
-    "typ/regression/issue60.typ"
-    ( line 3 , column 2 )
-    (Ident (Identifier "utf8string"))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [Anything!
-]), 
-                 parbreak() })
diff --git a/test/out/text/baseline-00.out b/test/out/text/baseline-00.out
deleted file mode 100644
--- a/test/out/text/baseline-00.out
+++ /dev/null
@@ -1,193 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/baseline-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/baseline-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/baseline-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, SoftBreak
-, EmDash
-, SoftBreak
-, Text "Hi"
-, Space
-, Code
-    "test/typ/text/baseline-00.typ"
-    ( line 5 , column 5 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ NormalArg (Literal (Numeric 1.5 Em)) , BlockArg [ Text "You" ] ])
-, Text ","
-, Space
-, Code
-    "test/typ/text/baseline-00.typ"
-    ( line 5 , column 24 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ NormalArg (Literal (Numeric 0.75 Em))
-       , BlockArg
-           [ Text "how" , Space , Text "are" , Space , Text "you?" ]
-       ])
-, ParBreak
-, Text "Our"
-, Space
-, Text "cockatoo"
-, Space
-, Text "was"
-, Space
-, Text "one"
-, Space
-, Text "of"
-, Space
-, Text "the"
-, SoftBreak
-, Code
-    "test/typ/text/baseline-00.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ KeyValArg
-           (Identifier "baseline") (Negated (Literal (Numeric 0.2 Em)))
-       , BlockArg
-           [ Code
-               "test/typ/text/baseline-00.typ"
-               ( line 8 , column 26 )
-               (FuncCall
-                  (Ident (Identifier "box"))
-                  [ NormalArg
-                      (FuncCall
-                         (Ident (Identifier "circle"))
-                         [ KeyValArg (Identifier "radius") (Literal (Numeric 2.0 Pt)) ])
-                  ])
-           , Space
-           , Text "first"
-           ]
-       ])
-, SoftBreak
-, Code
-    "test/typ/text/baseline-00.typ"
-    ( line 9 , column 2 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "baseline") (Literal (Numeric 0.2 Em))
-       , BlockArg
-           [ Text "birds"
-           , Space
-           , Code
-               "test/typ/text/baseline-00.typ"
-               ( line 9 , column 31 )
-               (FuncCall
-                  (Ident (Identifier "box"))
-                  [ NormalArg
-                      (FuncCall
-                         (Ident (Identifier "circle"))
-                         [ KeyValArg (Identifier "radius") (Literal (Numeric 2.0 Pt)) ])
-                  ])
-           ]
-       ])
-, SoftBreak
-, Text "that"
-, Space
-, Text "ever"
-, Space
-, Text "learned"
-, Space
-, Text "to"
-, Space
-, Text "mimic"
-, Space
-, Text "a"
-, Space
-, Text "human"
-, Space
-, Text "voice"
-, Text "."
-, ParBreak
-, EmDash
-, SoftBreak
-, Text "Hey"
-, Space
-, Code
-    "test/typ/text/baseline-00.typ"
-    ( line 13 , column 6 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ KeyValArg
-           (Identifier "baseline") (Literal (Numeric 40.0 Percent))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "image"))
-              [ NormalArg (Literal (String "/assets/files/tiger.jpg"))
-              , KeyValArg (Identifier "width") (Literal (Numeric 1.5 Cm))
-              ])
-       ])
-, Space
-, Text "there!"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-—
-Hi ]), 
-                 text(body: text(body: [You]), 
-                      size: 1.5em), 
-                 text(body: [, ]), 
-                 text(body: text(body: [how are you?]), 
-                      size: 0.75em), 
-                 parbreak(), 
-                 text(body: [Our cockatoo was one of the
-]), 
-                 text(baseline: -0.2em, 
-                      body: { box(body: circle(radius: 2.0pt)), 
-                              text(body: [ first]) }), 
-                 text(body: [
-]), 
-                 text(baseline: 0.2em, 
-                      body: { text(body: [birds ]), 
-                              box(body: circle(radius: 2.0pt)) }), 
-                 text(body: [
-that ever learned to mimic a human voice.]), 
-                 parbreak(), 
-                 text(body: [—
-Hey ]), 
-                 box(baseline: 40%, 
-                     body: image(path: "/assets/files/tiger.jpg", 
-                                 width: 1.5cm)), 
-                 text(body: [ there!]), 
-                 parbreak() })
diff --git a/test/out/text/case-00.out b/test/out/text/case-00.out
deleted file mode 100644
--- a/test/out/text/case-00.out
+++ /dev/null
@@ -1,98 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/case-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/case-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/case-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/text/case-00.typ"
-    ( line 2 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "memes")))
-       (Literal (String "ArE mEmEs gReAt?")))
-, SoftBreak
-, Code
-    "test/typ/text/case-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "lower"))
-              [ NormalArg (Ident (Identifier "memes")) ])
-       , NormalArg (Literal (String "are memes great?"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/text/case-00.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "upper"))
-              [ NormalArg (Ident (Identifier "memes")) ])
-       , NormalArg (Literal (String "ARE MEMES GREAT?"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/text/case-00.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "upper"))
-              [ NormalArg (Literal (String "\917\955\955\940\948\945")) ])
-       , NormalArg (Literal (String "\917\923\923\902\916\913"))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 text(body: [
-]), 
-                 text(body: [✅]), 
-                 parbreak() })
diff --git a/test/out/text/case-01.out b/test/out/text/case-01.out
deleted file mode 100644
--- a/test/out/text/case-01.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/text/chinese-00.out b/test/out/text/chinese-00.out
deleted file mode 100644
--- a/test/out/text/chinese-00.out
+++ /dev/null
@@ -1,73 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/chinese-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/chinese-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/chinese-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/text/chinese-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg
-           (Identifier "font") (Literal (String "Noto Serif CJK SC"))
-       ])
-, ParBreak
-, Text
-    "\26159\32654\22269\24191\25773\20844\21496\30005\35270\21095\12298\36855\22833\12299\31532\&3\23395\30340\31532\&22\21644\&23\38598\65292\20063\26159\20840\21095\30340\31532\&71\38598\21644\&72\38598"
-, SoftBreak
-, Text
-    "\30001\25191\34892\21046\20316\20154\25140\33945\183\26519\36947\22827\21644\21345\23572\39039\183\24211\26031\32534\21095\65292\23548\28436\21017\26159\21478\19968\21517\25191\34892\21046\20316\20154\26480\20811\183\26412\24503"
-, SoftBreak
-, Text
-    "\33410\30446\20110\&2007\24180\&5\26376\&23\26085\22312\32654\22269\21644\21152\25343\22823\39318\25773\65292\20849\35745\21560\24341\20102\&1400\19975\32654\22269\35266\20247\25910\30475"
-, SoftBreak
-, Text
-    "\26412\38598\21152\19978\25554\25773\24191\21578\19968\20849\20063\25345\32493\26377\20004\20010\23567\26102"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [是美国广播公司电视剧《迷失》第3季的第22和23集，也是全剧的第71集和72集
-由执行制作人戴蒙·林道夫和卡尔顿·库斯编剧，导演则是另一名执行制作人杰克·本德
-节目于2007年5月23日在美国和加拿大首播，共计吸引了1400万美国观众收看
-本集加上插播广告一共也持续有两个小时], 
-                      font: "Noto Serif CJK SC"), 
-                 parbreak() })
diff --git a/test/out/text/copy-paste-00.out b/test/out/text/copy-paste-00.out
deleted file mode 100644
--- a/test/out/text/copy-paste-00.out
+++ /dev/null
@@ -1,71 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/copy-paste-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/copy-paste-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/copy-paste-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Text "The"
-, Space
-, Text "after"
-, Space
-, Text "fira"
-, Space
-, Text "\127987\65039\8205\127752!"
-, ParBreak
-, Code
-    "test/typ/text/copy-paste-00.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "lang") (Literal (String "ar"))
-       , KeyValArg
-           (Identifier "font") (Literal (String "Noto Sans Arabic"))
-       ])
-, SoftBreak
-, Text "\1605\1585\1581\1576\1611\1575"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-The after fira 🏳️‍🌈!]), 
-                 parbreak(), 
-                 text(body: [
-مرحبًا], 
-                      font: "Noto Sans Arabic", 
-                      lang: "ar"), 
-                 parbreak() })
diff --git a/test/out/text/deco-00.out b/test/out/text/deco-00.out
deleted file mode 100644
--- a/test/out/text/deco-00.out
+++ /dev/null
@@ -1,170 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/deco-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/deco-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/deco-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/text/deco-00.typ"
-    ( line 2 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "red")))
-       (FuncCall
-          (Ident (Identifier "rgb"))
-          [ NormalArg (Literal (String "fc0030")) ]))
-, ParBreak
-, Comment
-, Code
-    "test/typ/text/deco-00.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "strike"))
-       [ BlockArg
-           [ Text "Statements"
-           , Space
-           , Text "dreamt"
-           , Space
-           , Text "up"
-           , Space
-           , Text "by"
-           , Space
-           , Text "the"
-           , Space
-           , Text "utterly"
-           , Space
-           , Text "deranged"
-           , Text "."
-           ]
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/text/deco-00.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "underline"))
-       [ KeyValArg (Identifier "offset") (Literal (Numeric 5.0 Pt))
-       , BlockArg [ Text "Further" , Space , Text "below" , Text "." ]
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/text/deco-00.typ"
-    ( line 11 , column 2 )
-    (FuncCall
-       (Ident (Identifier "underline"))
-       [ KeyValArg (Identifier "stroke") (Ident (Identifier "red"))
-       , KeyValArg (Identifier "evade") (Literal (Boolean False))
-       , BlockArg
-           [ Text "Critical"
-           , Space
-           , Text "information"
-           , Space
-           , Text "is"
-           , Space
-           , Text "conveyed"
-           , Space
-           , Text "here"
-           , Text "."
-           ]
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/text/deco-00.typ"
-    ( line 14 , column 2 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "fill") (Ident (Identifier "red"))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "underline"))
-              [ BlockArg
-                  [ Text "Change"
-                  , Space
-                  , Text "with"
-                  , Space
-                  , Text "the"
-                  , Space
-                  , Text "wind"
-                  , Text "."
-                  ]
-              ])
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/text/deco-00.typ"
-    ( line 17 , column 2 )
-    (FuncCall
-       (Ident (Identifier "overline"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "underline"))
-              [ BlockArg
-                  [ Text "Running"
-                  , Space
-                  , Text "amongst"
-                  , Space
-                  , Text "the"
-                  , Space
-                  , Text "wolves"
-                  , Text "."
-                  ]
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 strike(body: text(body: [Statements dreamt up by the utterly deranged.])), 
-                 parbreak(), 
-                 underline(body: text(body: [Further below.]), 
-                           offset: 5.0pt), 
-                 parbreak(), 
-                 underline(body: text(body: [Critical information is conveyed here.]), 
-                           evade: false, 
-                           stroke: rgb(98%,0%,18%,100%)), 
-                 parbreak(), 
-                 text(body: underline(body: text(body: [Change with the wind.])), 
-                      fill: rgb(98%,0%,18%,100%)), 
-                 parbreak(), 
-                 overline(body: underline(body: text(body: [Running amongst the wolves.]))), 
-                 parbreak() })
diff --git a/test/out/text/deco-01.out b/test/out/text/deco-01.out
deleted file mode 100644
--- a/test/out/text/deco-01.out
+++ /dev/null
@@ -1,125 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/deco-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/deco-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/deco-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/text/deco-01.typ"
-    ( line 2 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "redact")))
-       (FuncCall
-          (FieldAccess
-             (Ident (Identifier "with")) (Ident (Identifier "strike")))
-          [ KeyValArg (Identifier "stroke") (Literal (Numeric 10.0 Pt))
-          , KeyValArg (Identifier "extent") (Literal (Numeric 5.0e-2 Em))
-          ]))
-, SoftBreak
-, Code
-    "test/typ/text/deco-01.typ"
-    ( line 3 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "highlight")))
-       (FuncCall
-          (FieldAccess
-             (Ident (Identifier "with")) (Ident (Identifier "strike")))
-          [ KeyValArg
-              (Identifier "stroke")
-              (Plus
-                 (Literal (Numeric 10.0 Pt))
-                 (FuncCall
-                    (Ident (Identifier "rgb"))
-                    [ NormalArg (Literal (String "abcdef88")) ]))
-          , KeyValArg (Identifier "extent") (Literal (Numeric 5.0e-2 Em))
-          ]))
-, ParBreak
-, Comment
-, Text "Sometimes,"
-, Space
-, Text "we"
-, Space
-, Text "work"
-, Space
-, Code
-    "test/typ/text/deco-01.typ"
-    ( line 6 , column 21 )
-    (FuncCall
-       (Ident (Identifier "redact"))
-       [ BlockArg [ Text "in" , Space , Text "secret" ] ])
-, Text "."
-, SoftBreak
-, Text "There"
-, Space
-, Text "might"
-, Space
-, Text "be"
-, Space
-, Code
-    "test/typ/text/deco-01.typ"
-    ( line 7 , column 17 )
-    (FuncCall
-       (Ident (Identifier "highlight")) [ BlockArg [ Text "redacted" ] ])
-, Space
-, Text "things"
-, Text "."
-, SoftBreak
-, Text "underline"
-, Text "("
-, Text ")"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [Sometimes, we work ]), 
-                 strike(body: text(body: [in secret]), 
-                        extent: 5.0e-2em, 
-                        stroke: 10.0pt), 
-                 text(body: [.
-There might be ]), 
-                 strike(body: text(body: [redacted]), 
-                        extent: 5.0e-2em, 
-                        stroke: (thickness: 10.0pt,
-                                 color: rgb(67%,80%,93%,53%))), 
-                 text(body: [ things.
-underline()]), 
-                 parbreak() })
diff --git a/test/out/text/deco-02.out b/test/out/text/deco-02.out
deleted file mode 100644
--- a/test/out/text/deco-02.out
+++ /dev/null
@@ -1,75 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/deco-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/deco-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/deco-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/text/deco-02.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "underline"))
-       [ KeyValArg (Identifier "stroke") (Literal (Numeric 2.0 Pt))
-       , KeyValArg (Identifier "offset") (Literal (Numeric 2.0 Pt))
-       ])
-, SoftBreak
-, Code
-    "test/typ/text/deco-02.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "underline"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "text"))
-              [ NormalArg (Ident (Identifier "red"))
-              , NormalArg (Block (Content [ Text "DANGER!" ]))
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 underline(body: text(body: text(body: [DANGER!]), 
-                                      color: rgb(100%,25%,21%,100%)), 
-                           offset: 2.0pt, 
-                           stroke: 2.0pt), 
-                 parbreak() })
diff --git a/test/out/text/edge-00.out b/test/out/text/edge-00.out
deleted file mode 100644
--- a/test/out/text/edge-00.out
+++ /dev/null
@@ -1,333 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/edge-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/edge-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/edge-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/text/edge-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 160.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/text/edge-00.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "size") (Literal (Numeric 8.0 Pt)) ])
-, ParBreak
-, Code
-    "test/typ/text/edge-00.typ"
-    ( line 5 , column 2 )
-    (LetFunc
-       (Identifier "try")
-       [ NormalParam (Identifier "top")
-       , NormalParam (Identifier "bottom")
-       ]
-       (FuncCall
-          (Ident (Identifier "rect"))
-          [ KeyValArg (Identifier "inset") (Literal (Numeric 0.0 Pt))
-          , KeyValArg (Identifier "fill") (Ident (Identifier "green"))
-          , BlockArg
-              [ SoftBreak
-              , Code
-                  "test/typ/text/edge-00.typ"
-                  ( line 6 , column 4 )
-                  (Set
-                     (Ident (Identifier "text"))
-                     [ KeyValArg (Identifier "font") (Literal (String "IBM Plex Mono"))
-                     , KeyValArg (Identifier "top-edge") (Ident (Identifier "top"))
-                     , KeyValArg
-                         (Identifier "bottom-edge") (Ident (Identifier "bottom"))
-                     ])
-              , SoftBreak
-              , Text "From"
-              , Space
-              , Code
-                  "test/typ/text/edge-00.typ"
-                  ( line 7 , column 9 )
-                  (Ident (Identifier "top"))
-              , Space
-              , Text "to"
-              , Space
-              , Code
-                  "test/typ/text/edge-00.typ"
-                  ( line 7 , column 17 )
-                  (Ident (Identifier "bottom"))
-              , ParBreak
-              ]
-          ]))
-, ParBreak
-, Code
-    "test/typ/text/edge-00.typ"
-    ( line 10 , column 2 )
-    (FuncCall
-       (Ident (Identifier "try"))
-       [ NormalArg (Literal (String "ascender"))
-       , NormalArg (Literal (String "descender"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/text/edge-00.typ"
-    ( line 11 , column 2 )
-    (FuncCall
-       (Ident (Identifier "try"))
-       [ NormalArg (Literal (String "ascender"))
-       , NormalArg (Literal (String "baseline"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/text/edge-00.typ"
-    ( line 12 , column 2 )
-    (FuncCall
-       (Ident (Identifier "try"))
-       [ NormalArg (Literal (String "cap-height"))
-       , NormalArg (Literal (String "baseline"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/text/edge-00.typ"
-    ( line 13 , column 2 )
-    (FuncCall
-       (Ident (Identifier "try"))
-       [ NormalArg (Literal (String "x-height"))
-       , NormalArg (Literal (String "baseline"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/text/edge-00.typ"
-    ( line 14 , column 2 )
-    (FuncCall
-       (Ident (Identifier "try"))
-       [ NormalArg (Literal (Numeric 4.0 Pt))
-       , NormalArg (Negated (Literal (Numeric 2.0 Pt)))
-       ])
-, SoftBreak
-, Code
-    "test/typ/text/edge-00.typ"
-    ( line 15 , column 2 )
-    (FuncCall
-       (Ident (Identifier "try"))
-       [ NormalArg
-           (Plus (Literal (Numeric 1.0 Pt)) (Literal (Numeric 0.3 Em)))
-       , NormalArg (Negated (Literal (Numeric 0.15 Em)))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 parbreak(), 
-                 rect(body: { text(body: [
-], 
-                                   size: 8.0pt), 
-                              text(body: [
-From ], 
-                                   bottom-edge: "descender", 
-                                   font: "IBM Plex Mono", 
-                                   size: 8.0pt, 
-                                   top-edge: "ascender"), 
-                              text(body: [ascender], 
-                                   bottom-edge: "descender", 
-                                   font: "IBM Plex Mono", 
-                                   size: 8.0pt, 
-                                   top-edge: "ascender"), 
-                              text(body: [ to ], 
-                                   bottom-edge: "descender", 
-                                   font: "IBM Plex Mono", 
-                                   size: 8.0pt, 
-                                   top-edge: "ascender"), 
-                              text(body: [descender], 
-                                   bottom-edge: "descender", 
-                                   font: "IBM Plex Mono", 
-                                   size: 8.0pt, 
-                                   top-edge: "ascender"), 
-                              parbreak() }, 
-                      fill: rgb(18%,80%,25%,100%), 
-                      inset: 0.0pt), 
-                 text(body: [
-], size: 8.0pt), 
-                 rect(body: { text(body: [
-], 
-                                   size: 8.0pt), 
-                              text(body: [
-From ], 
-                                   bottom-edge: "baseline", 
-                                   font: "IBM Plex Mono", 
-                                   size: 8.0pt, 
-                                   top-edge: "ascender"), 
-                              text(body: [ascender], 
-                                   bottom-edge: "baseline", 
-                                   font: "IBM Plex Mono", 
-                                   size: 8.0pt, 
-                                   top-edge: "ascender"), 
-                              text(body: [ to ], 
-                                   bottom-edge: "baseline", 
-                                   font: "IBM Plex Mono", 
-                                   size: 8.0pt, 
-                                   top-edge: "ascender"), 
-                              text(body: [baseline], 
-                                   bottom-edge: "baseline", 
-                                   font: "IBM Plex Mono", 
-                                   size: 8.0pt, 
-                                   top-edge: "ascender"), 
-                              parbreak() }, 
-                      fill: rgb(18%,80%,25%,100%), 
-                      inset: 0.0pt), 
-                 text(body: [
-], size: 8.0pt), 
-                 rect(body: { text(body: [
-], 
-                                   size: 8.0pt), 
-                              text(body: [
-From ], 
-                                   bottom-edge: "baseline", 
-                                   font: "IBM Plex Mono", 
-                                   size: 8.0pt, 
-                                   top-edge: "cap-height"), 
-                              text(body: [cap-height], 
-                                   bottom-edge: "baseline", 
-                                   font: "IBM Plex Mono", 
-                                   size: 8.0pt, 
-                                   top-edge: "cap-height"), 
-                              text(body: [ to ], 
-                                   bottom-edge: "baseline", 
-                                   font: "IBM Plex Mono", 
-                                   size: 8.0pt, 
-                                   top-edge: "cap-height"), 
-                              text(body: [baseline], 
-                                   bottom-edge: "baseline", 
-                                   font: "IBM Plex Mono", 
-                                   size: 8.0pt, 
-                                   top-edge: "cap-height"), 
-                              parbreak() }, 
-                      fill: rgb(18%,80%,25%,100%), 
-                      inset: 0.0pt), 
-                 text(body: [
-], size: 8.0pt), 
-                 rect(body: { text(body: [
-], 
-                                   size: 8.0pt), 
-                              text(body: [
-From ], 
-                                   bottom-edge: "baseline", 
-                                   font: "IBM Plex Mono", 
-                                   size: 8.0pt, 
-                                   top-edge: "x-height"), 
-                              text(body: [x-height], 
-                                   bottom-edge: "baseline", 
-                                   font: "IBM Plex Mono", 
-                                   size: 8.0pt, 
-                                   top-edge: "x-height"), 
-                              text(body: [ to ], 
-                                   bottom-edge: "baseline", 
-                                   font: "IBM Plex Mono", 
-                                   size: 8.0pt, 
-                                   top-edge: "x-height"), 
-                              text(body: [baseline], 
-                                   bottom-edge: "baseline", 
-                                   font: "IBM Plex Mono", 
-                                   size: 8.0pt, 
-                                   top-edge: "x-height"), 
-                              parbreak() }, 
-                      fill: rgb(18%,80%,25%,100%), 
-                      inset: 0.0pt), 
-                 text(body: [
-], size: 8.0pt), 
-                 rect(body: { text(body: [
-], 
-                                   size: 8.0pt), 
-                              text(body: [
-From ], 
-                                   bottom-edge: -2.0pt, 
-                                   font: "IBM Plex Mono", 
-                                   size: 8.0pt, 
-                                   top-edge: 4.0pt), 
-                              text(body: [4.0pt], 
-                                   bottom-edge: -2.0pt, 
-                                   font: "IBM Plex Mono", 
-                                   size: 8.0pt, 
-                                   top-edge: 4.0pt), 
-                              text(body: [ to ], 
-                                   bottom-edge: -2.0pt, 
-                                   font: "IBM Plex Mono", 
-                                   size: 8.0pt, 
-                                   top-edge: 4.0pt), 
-                              text(body: [-2.0pt], 
-                                   bottom-edge: -2.0pt, 
-                                   font: "IBM Plex Mono", 
-                                   size: 8.0pt, 
-                                   top-edge: 4.0pt), 
-                              parbreak() }, 
-                      fill: rgb(18%,80%,25%,100%), 
-                      inset: 0.0pt), 
-                 text(body: [
-], size: 8.0pt), 
-                 rect(body: { text(body: [
-], 
-                                   size: 8.0pt), 
-                              text(body: [
-From ], 
-                                   bottom-edge: -0.15em, 
-                                   font: "IBM Plex Mono", 
-                                   size: 8.0pt, 
-                                   top-edge: 1.0pt + 0.3em), 
-                              text(body: [1.0pt + 0.3em], 
-                                   bottom-edge: -0.15em, 
-                                   font: "IBM Plex Mono", 
-                                   size: 8.0pt, 
-                                   top-edge: 1.0pt + 0.3em), 
-                              text(body: [ to ], 
-                                   bottom-edge: -0.15em, 
-                                   font: "IBM Plex Mono", 
-                                   size: 8.0pt, 
-                                   top-edge: 1.0pt + 0.3em), 
-                              text(body: [-0.15em], 
-                                   bottom-edge: -0.15em, 
-                                   font: "IBM Plex Mono", 
-                                   size: 8.0pt, 
-                                   top-edge: 1.0pt + 0.3em), 
-                              parbreak() }, 
-                      fill: rgb(18%,80%,25%,100%), 
-                      inset: 0.0pt), 
-                 parbreak() })
diff --git a/test/out/text/edge-01.out b/test/out/text/edge-01.out
deleted file mode 100644
--- a/test/out/text/edge-01.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/text/edge-02.out b/test/out/text/edge-02.out
deleted file mode 100644
--- a/test/out/text/edge-02.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/text/em-00.out b/test/out/text/em-00.out
deleted file mode 100644
--- a/test/out/text/em-00.out
+++ /dev/null
@@ -1,150 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/em-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/em-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/em-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/text/em-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "size") (Literal (Numeric 5.0 Pt)) ])
-, SoftBreak
-, Text "A"
-, Space
-, Comment
-, Code
-    "test/typ/text/em-00.typ"
-    ( line 4 , column 2 )
-    (Block
-       (Content
-          [ SoftBreak
-          , Code
-              "test/typ/text/em-00.typ"
-              ( line 5 , column 4 )
-              (Set
-                 (Ident (Identifier "text"))
-                 [ KeyValArg (Identifier "size") (Literal (Numeric 2.0 Em)) ])
-          , SoftBreak
-          , Text "B"
-          , Space
-          , Comment
-          , Space
-          , Code
-              "test/typ/text/em-00.typ"
-              ( line 7 , column 4 )
-              (Block
-                 (Content
-                    [ SoftBreak
-                    , Code
-                        "test/typ/text/em-00.typ"
-                        ( line 8 , column 6 )
-                        (Set
-                           (Ident (Identifier "text"))
-                           [ KeyValArg
-                               (Identifier "size")
-                               (Plus (Literal (Numeric 1.5 Em)) (Literal (Numeric 1.0 Pt)))
-                           ])
-                    , SoftBreak
-                    , Text "C"
-                    , Space
-                    , Comment
-                    , Space
-                    , Code
-                        "test/typ/text/em-00.typ"
-                        ( line 10 , column 6 )
-                        (FuncCall
-                           (Ident (Identifier "text"))
-                           [ KeyValArg (Identifier "size") (Literal (Numeric 2.0 Em))
-                           , BlockArg [ Text "D" ]
-                           ])
-                    , Space
-                    , Comment
-                    , Space
-                    , Text "E"
-                    , Space
-                    , Comment
-                    , Space
-                    ]))
-          , SoftBreak
-          , Text "F"
-          , Space
-          , Comment
-          ]))
-, SoftBreak
-, Text "G"
-, Space
-, Comment
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-A ], 
-                      size: 5.0pt), 
-                 text(body: [
-], size: 5.0pt), 
-                 text(body: [
-B ], 
-                      size: 2.0em), 
-                 text(body: [ ], size: 2.0em), 
-                 text(body: [
-], size: 2.0em), 
-                 text(body: [
-C ], 
-                      size: 1.5em + 1.0pt), 
-                 text(body: [ ], 
-                      size: 1.5em + 1.0pt), 
-                 text(body: text(body: [D], 
-                                 size: 1.5em + 1.0pt), 
-                      size: 2.0em), 
-                 text(body: [ ], 
-                      size: 1.5em + 1.0pt), 
-                 text(body: [ E ], 
-                      size: 1.5em + 1.0pt), 
-                 text(body: [ ], 
-                      size: 1.5em + 1.0pt), 
-                 text(body: [
-F ], 
-                      size: 1.5em + 1.0pt), 
-                 text(body: [
-G ], 
-                      size: 1.5em + 1.0pt), 
-                 parbreak() })
diff --git a/test/out/text/em-01.out b/test/out/text/em-01.out
deleted file mode 100644
--- a/test/out/text/em-01.out
+++ /dev/null
@@ -1,120 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/em-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/em-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/em-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/text/em-01.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "size") (Literal (Numeric 5.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/text/em-01.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "size") (Literal (Numeric 2.0 Em)) ])
-, SoftBreak
-, Code
-    "test/typ/text/em-01.typ"
-    ( line 5 , column 2 )
-    (Set
-       (Ident (Identifier "square"))
-       [ KeyValArg (Identifier "fill") (Ident (Identifier "red")) ])
-, ParBreak
-, Code
-    "test/typ/text/em-01.typ"
-    ( line 7 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "size")))
-       (Block
-          (CodeBlock
-             [ Let
-                 (BasicBind (Just (Identifier "size")))
-                 (Plus (Literal (Numeric 0.25 Em)) (Literal (Numeric 1.0 Pt)))
-             , For
-                 (BasicBind Nothing)
-                 (FuncCall
-                    (Ident (Identifier "range")) [ NormalArg (Literal (Int 3)) ])
-                 (Block
-                    (CodeBlock
-                       [ Assign
-                           (Ident (Identifier "size"))
-                           (Times (Ident (Identifier "size")) (Literal (Int 2)))
-                       ]))
-             , Minus (Ident (Identifier "size")) (Literal (Numeric 3.0 Pt))
-             ])))
-, ParBreak
-, Code
-    "test/typ/text/em-01.typ"
-    ( line 15 , column 2 )
-    (FuncCall
-       (Ident (Identifier "stack"))
-       [ KeyValArg (Identifier "dir") (Ident (Identifier "ltr"))
-       , KeyValArg (Identifier "spacing") (Literal (Numeric 1.0 Fr))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "square"))
-              [ KeyValArg (Identifier "size") (Ident (Identifier "size")) ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "square"))
-              [ KeyValArg (Identifier "size") (Literal (Numeric 25.0 Pt)) ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-], size: 5.0pt), 
-                 text(body: [
-], size: 2.0em), 
-                 parbreak(), 
-                 parbreak(), 
-                 stack(children: (square(fill: rgb(100%,25%,21%,100%), 
-                                         size: (2.0em + 8.0pt) + -3.0pt), 
-                                  square(fill: rgb(100%,25%,21%,100%), 
-                                         size: 25.0pt)), 
-                       dir: ltr, 
-                       spacing: 1.0fr), 
-                 parbreak() })
diff --git a/test/out/text/emoji-00.out b/test/out/text/emoji-00.out
deleted file mode 100644
--- a/test/out/text/emoji-00.out
+++ /dev/null
@@ -1,65 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/emoji-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/emoji-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/emoji-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "\128105\8205\128105\8205\128102"
-, ParBreak
-, Comment
-, Text "\127987\65039\8205\127752"
-, ParBreak
-, Comment
-, Text "\128077\127999"
-, ParBreak
-, Comment
-, Text "1\65039\8419"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [👩‍👩‍👦]), 
-                 parbreak(), 
-                 text(body: [🏳️‍🌈]), 
-                 parbreak(), 
-                 text(body: [👍🏿]), 
-                 parbreak(), 
-                 text(body: [1️⃣]), 
-                 parbreak() })
diff --git a/test/out/text/emoji-01.out b/test/out/text/emoji-01.out
deleted file mode 100644
--- a/test/out/text/emoji-01.out
+++ /dev/null
@@ -1,50 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/emoji-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/emoji-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/emoji-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "\127966\8205\127755"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [🏞‍🌋]), 
-                 parbreak() })
diff --git a/test/out/text/emphasis-00.out b/test/out/text/emphasis-00.out
deleted file mode 100644
--- a/test/out/text/emphasis-00.out
+++ /dev/null
@@ -1,84 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/emphasis-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/emphasis-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/emphasis-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Emph
-    [ Text "Emphasized"
-    , Space
-    , Text "and"
-    , Space
-    , Strong [ Text "strong" ]
-    , Space
-    , Text "words!"
-    ]
-, ParBreak
-, Comment
-, Text "hello_world"
-, Space
-, Text "Nutzer*innen"
-, ParBreak
-, Comment
-, Emph
-    [ Text "Still"
-    , Space
-    , Code
-        "test/typ/text/emphasis-00.typ"
-        ( line 9 , column 9 )
-        (Block (Content [ ParBreak ]))
-    , Space
-    , Text "emphasized"
-    , Text "."
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 emph(body: { text(body: [Emphasized and ]), 
-                              strong(body: text(body: [strong])), 
-                              text(body: [ words!]) }), 
-                 parbreak(), 
-                 text(body: [hello_world Nutzer*innen]), 
-                 parbreak(), 
-                 emph(body: { text(body: [Still ]), 
-                              parbreak(), 
-                              text(body: [ emphasized.]) }), 
-                 parbreak() })
diff --git a/test/out/text/emphasis-01.out b/test/out/text/emphasis-01.out
deleted file mode 100644
--- a/test/out/text/emphasis-01.out
+++ /dev/null
@@ -1,68 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/emphasis-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/emphasis-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/emphasis-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "P"
-, Code
-    "test/typ/text/emphasis-01.typ"
-    ( line 3 , column 3 )
-    (FuncCall
-       (Ident (Identifier "strong")) [ BlockArg [ Text "art" ] ])
-, Text "ly"
-, Space
-, Text "em"
-, Code
-    "test/typ/text/emphasis-01.typ"
-    ( line 3 , column 20 )
-    (FuncCall (Ident (Identifier "emph")) [ BlockArg [ Text "phas" ] ])
-, Text "ized"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [P]), 
-                 strong(body: text(body: [art])), 
-                 text(body: [ly em]), 
-                 emph(body: text(body: [phas])), 
-                 text(body: [ized.]), 
-                 parbreak() })
diff --git a/test/out/text/emphasis-02.out b/test/out/text/emphasis-02.out
deleted file mode 100644
--- a/test/out/text/emphasis-02.out
+++ /dev/null
@@ -1,91 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/emphasis-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/emphasis-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/emphasis-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "Normal"
-, ParBreak
-, Code
-    "test/typ/text/emphasis-02.typ"
-    ( line 5 , column 2 )
-    (Set
-       (Ident (Identifier "strong"))
-       [ KeyValArg (Identifier "delta") (Literal (Int 300)) ])
-, SoftBreak
-, Strong [ Text "Bold" ]
-, ParBreak
-, Code
-    "test/typ/text/emphasis-02.typ"
-    ( line 8 , column 2 )
-    (Set
-       (Ident (Identifier "strong"))
-       [ KeyValArg (Identifier "delta") (Literal (Int 150)) ])
-, SoftBreak
-, Strong [ Text "Medium" ]
-, Space
-, Text "and"
-, Space
-, Strong
-    [ Code
-        "test/typ/text/emphasis-02.typ"
-        ( line 9 , column 16 )
-        (Block (Content [ Strong [ Text "Bold" ] ]))
-    ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [Normal]), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 strong(body: text(body: [Bold]), 
-                        delta: 300), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 strong(body: text(body: [Medium]), 
-                        delta: 150), 
-                 text(body: [ and ]), 
-                 strong(body: strong(body: text(body: [Bold]), 
-                                     delta: 150), 
-                        delta: 150), 
-                 parbreak() })
diff --git a/test/out/text/emphasis-03.out b/test/out/text/emphasis-03.out
deleted file mode 100644
--- a/test/out/text/emphasis-03.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/text/emphasis-04.out b/test/out/text/emphasis-04.out
deleted file mode 100644
--- a/test/out/text/emphasis-04.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/text/emphasis-05.out b/test/out/text/emphasis-05.out
deleted file mode 100644
--- a/test/out/text/emphasis-05.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/text/escape-00.out b/test/out/text/escape-00.out
deleted file mode 100644
--- a/test/out/text/escape-00.out
+++ /dev/null
@@ -1,187 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/escape-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/escape-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/escape-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "\\"
-, Space
-, Text "/"
-, Space
-, Text "["
-, Space
-, Text "]"
-, Space
-, Text "{"
-, Space
-, Text "}"
-, Space
-, Text "#"
-, Space
-, Text "*"
-, Space
-, Text "_"
-, Space
-, Text "+"
-, Space
-, Text "="
-, Space
-, Text "~"
-, Space
-, HardBreak
-, Text "`"
-, Space
-, Text "$"
-, Space
-, Text "\""
-, Space
-, Text "'"
-, Space
-, Text "<"
-, Space
-, Text ">"
-, Space
-, Text "@"
-, Space
-, Text "("
-, Space
-, Text ")"
-, Space
-, Text "A"
-, ParBreak
-, Comment
-, Text "("
-, Space
-, Text ")"
-, Space
-, Text ";"
-, ParBreak
-, Comment
-, Text "/"
-, Text "/"
-, SoftBreak
-, Text "/"
-, Text "*"
-, Space
-, Text "*"
-, Text "/"
-, SoftBreak
-, Text "/"
-, Strong [ Space , Text "*" , Text "/" , Space ]
-, ParBreak
-, Comment
-, Text "\127957"
-, Space
-, Text "="
-, Text "="
-, Space
-, Text "\127957"
-, ParBreak
-, Comment
-, Text "A"
-, Space
-, Text "vs"
-, Text "."
-, Space
-, Text "\\"
-, Text "u"
-, Text "{"
-, Text "41"
-, Text "}"
-, ParBreak
-, Comment
-, Text "let"
-, Space
-, Text "f"
-, Text "("
-, Text ")"
-, Space
-, Text ","
-, Space
-, Text ";"
-, Space
-, Text ":"
-, Space
-, Text "|"
-, Space
-, Text "+"
-, Space
-, Text "-"
-, Space
-, Text "/"
-, Text "="
-, Space
-, Text "="
-, Text "="
-, Space
-, Text "12"
-, Space
-, Quote '"'
-, Text "string"
-, Quote '"'
-, ParBreak
-, Comment
-, Text "10"
-, Text "."
-, Space
-, Text "May"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [\ / [ ] { } # * _ + = ~ ]), 
-                 linebreak(), 
-                 text(body: [` $ " ' < > @ ( ) A]), 
-                 parbreak(), 
-                 text(body: [( ) ;]), 
-                 parbreak(), 
-                 text(body: [//
-/* */
-/]), 
-                 strong(body: text(body: [ */ ])), 
-                 parbreak(), 
-                 text(body: [🏕 == 🏕]), 
-                 parbreak(), 
-                 text(body: [A vs. \u{41}]), 
-                 parbreak(), 
-                 text(body: [let f() , ; : | + - /= == 12 “string”]), 
-                 parbreak(), 
-                 text(body: [10. May]), 
-                 parbreak() })
diff --git a/test/out/text/escape-01.out b/test/out/text/escape-01.out
deleted file mode 100644
--- a/test/out/text/escape-01.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/text/escape-02.out b/test/out/text/escape-02.out
deleted file mode 100644
--- a/test/out/text/escape-02.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/text/fallback-00.out b/test/out/text/fallback-00.out
deleted file mode 100644
--- a/test/out/text/fallback-00.out
+++ /dev/null
@@ -1,81 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/fallback-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/fallback-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/fallback-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "A\128512B"
-, ParBreak
-, Comment
-, Text "\1583\1593"
-, Space
-, Text "\1575\1604\1606\1589"
-, Space
-, Text "\1610\1605\1591\1585"
-, Space
-, Text "\1593\1604\1610\1603"
-, ParBreak
-, Comment
-, Text "\1576\128008\128512\1587\1605"
-, ParBreak
-, Comment
-, Text "A\1576\128512\127966\1587\1605B"
-, ParBreak
-, Comment
-, Text "01\65039\8419\&2"
-, ParBreak
-, Comment
-, Text "A\128008\4850\4638B"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [A😀B]), 
-                 parbreak(), 
-                 text(body: [دع النص يمطر عليك]), 
-                 parbreak(), 
-                 text(body: [ب🐈😀سم]), 
-                 parbreak(), 
-                 text(body: [Aب😀🏞سمB]), 
-                 parbreak(), 
-                 text(body: [01️⃣2]), 
-                 parbreak(), 
-                 text(body: [A🐈ዲሞB]), 
-                 parbreak() })
diff --git a/test/out/text/features-00.out b/test/out/text/features-00.out
deleted file mode 100644
--- a/test/out/text/features-00.out
+++ /dev/null
@@ -1,72 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/features-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/features-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/features-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/text/features-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "kerning") (Literal (Boolean True))
-       , BlockArg [ Text "Tq" ]
-       ])
-, Space
-, HardBreak
-, Code
-    "test/typ/text/features-00.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "kerning") (Literal (Boolean False))
-       , BlockArg [ Text "Tq" ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: text(body: [Tq]), 
-                      kerning: true), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 text(body: text(body: [Tq]), 
-                      kerning: false), 
-                 parbreak() })
diff --git a/test/out/text/features-01.out b/test/out/text/features-01.out
deleted file mode 100644
--- a/test/out/text/features-01.out
+++ /dev/null
@@ -1,54 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/features-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/features-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/features-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/text/features-01.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "smallcaps")) [ BlockArg [ Text "Smallcaps" ] ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 smallcaps(body: text(body: [Smallcaps])), 
-                 parbreak() })
diff --git a/test/out/text/features-02.out b/test/out/text/features-02.out
deleted file mode 100644
--- a/test/out/text/features-02.out
+++ /dev/null
@@ -1,98 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/features-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/features-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/features-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/text/features-02.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "font") (Literal (String "IBM Plex Serif"))
-       ])
-, SoftBreak
-, Text "a"
-, Space
-, Text "vs"
-, Space
-, Code
-    "test/typ/text/features-02.typ"
-    ( line 4 , column 7 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "alternates") (Literal (Boolean True))
-       , BlockArg [ Text "a" ]
-       ])
-, Space
-, HardBreak
-, Text "\223"
-, Space
-, Text "vs"
-, Space
-, Code
-    "test/typ/text/features-02.typ"
-    ( line 5 , column 7 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "stylistic-set") (Literal (Int 5))
-       , BlockArg [ Text "\223" ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-a vs ], 
-                      font: "IBM Plex Serif"), 
-                 text(alternates: true, 
-                      body: text(body: [a], 
-                                 font: "IBM Plex Serif"), 
-                      font: "IBM Plex Serif"), 
-                 text(body: [ ], 
-                      font: "IBM Plex Serif"), 
-                 linebreak(), 
-                 text(body: [ß vs ], 
-                      font: "IBM Plex Serif"), 
-                 text(body: text(body: [ß], 
-                                 font: "IBM Plex Serif"), 
-                      font: "IBM Plex Serif", 
-                      stylistic-set: 5), 
-                 parbreak() })
diff --git a/test/out/text/features-03.out b/test/out/text/features-03.out
deleted file mode 100644
--- a/test/out/text/features-03.out
+++ /dev/null
@@ -1,64 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/features-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/features-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/features-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "fi"
-, Space
-, Text "vs"
-, Text "."
-, Space
-, Code
-    "test/typ/text/features-03.typ"
-    ( line 3 , column 9 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "ligatures") (Literal (Boolean False))
-       , BlockArg [ Text "No" , Space , Text "fi" ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [fi vs. ]), 
-                 text(body: text(body: [No fi]), 
-                      ligatures: false), 
-                 parbreak() })
diff --git a/test/out/text/features-04.out b/test/out/text/features-04.out
deleted file mode 100644
--- a/test/out/text/features-04.out
+++ /dev/null
@@ -1,75 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/features-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/features-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/features-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/text/features-04.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg
-           (Identifier "number-type") (Literal (String "old-style"))
-       ])
-, SoftBreak
-, Text "0123456789"
-, Space
-, HardBreak
-, Code
-    "test/typ/text/features-04.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "number-type") (Literal Auto)
-       , BlockArg [ Text "0123456789" ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-0123456789 ], 
-                      number-type: "old-style"), 
-                 linebreak(), 
-                 text(body: text(body: [0123456789], 
-                                 number-type: "old-style"), 
-                      number-type: auto), 
-                 parbreak() })
diff --git a/test/out/text/features-05.out b/test/out/text/features-05.out
deleted file mode 100644
--- a/test/out/text/features-05.out
+++ /dev/null
@@ -1,89 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/features-05.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/features-05.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/features-05.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/text/features-05.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ KeyValArg
-           (Identifier "number-width") (Literal (String "proportional"))
-       , BlockArg [ Text "0123456789" ]
-       ])
-, Space
-, HardBreak
-, Code
-    "test/typ/text/features-05.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ KeyValArg
-           (Identifier "number-width") (Literal (String "tabular"))
-       , BlockArg [ Text "3456789123" ]
-       ])
-, Space
-, HardBreak
-, Code
-    "test/typ/text/features-05.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ KeyValArg
-           (Identifier "number-width") (Literal (String "tabular"))
-       , BlockArg [ Text "0123456789" ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: text(body: [0123456789]), 
-                      number-width: "proportional"), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 text(body: text(body: [3456789123]), 
-                      number-width: "tabular"), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 text(body: text(body: [0123456789]), 
-                      number-width: "tabular"), 
-                 parbreak() })
diff --git a/test/out/text/features-06.out b/test/out/text/features-06.out
deleted file mode 100644
--- a/test/out/text/features-06.out
+++ /dev/null
@@ -1,102 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/features-06.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/features-06.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/features-06.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/text/features-06.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "font") (Literal (String "IBM Plex Serif"))
-       ])
-, SoftBreak
-, Text "0"
-, Space
-, Text "vs"
-, Text "."
-, Space
-, Code
-    "test/typ/text/features-06.typ"
-    ( line 4 , column 8 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "slashed-zero") (Literal (Boolean True))
-       , BlockArg [ Text "0" ]
-       ])
-, Space
-, HardBreak
-, Text "1"
-, Text "/"
-, Text "2"
-, Space
-, Text "vs"
-, Text "."
-, Space
-, Code
-    "test/typ/text/features-06.typ"
-    ( line 5 , column 10 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "fractions") (Literal (Boolean True))
-       , BlockArg [ Text "1" , Text "/" , Text "2" ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-0 vs. ], 
-                      font: "IBM Plex Serif"), 
-                 text(body: text(body: [0], 
-                                 font: "IBM Plex Serif"), 
-                      font: "IBM Plex Serif", 
-                      slashed-zero: true), 
-                 text(body: [ ], 
-                      font: "IBM Plex Serif"), 
-                 linebreak(), 
-                 text(body: [1/2 vs. ], 
-                      font: "IBM Plex Serif"), 
-                 text(body: text(body: [1/2], 
-                                 font: "IBM Plex Serif"), 
-                      font: "IBM Plex Serif", 
-                      fractions: true), 
-                 parbreak() })
diff --git a/test/out/text/features-07.out b/test/out/text/features-07.out
deleted file mode 100644
--- a/test/out/text/features-07.out
+++ /dev/null
@@ -1,81 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/features-07.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/features-07.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/features-07.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/text/features-07.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ KeyValArg
-           (Identifier "features") (Array [ Reg (Literal (String "smcp")) ])
-       , BlockArg [ Text "Smcp" ]
-       ])
-, Space
-, HardBreak
-, Text "fi"
-, Space
-, Text "vs"
-, Text "."
-, Space
-, Code
-    "test/typ/text/features-07.typ"
-    ( line 4 , column 9 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ KeyValArg
-           (Identifier "features")
-           (Dict [ Reg ( Ident (Identifier "liga") , Literal (Int 0) ) ])
-       , BlockArg [ Text "No" , Space , Text "fi" ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: text(body: [Smcp]), 
-                      features: ("smcp")), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 text(body: [fi vs. ]), 
-                 text(body: text(body: [No fi]), 
-                      features: (liga: 0)), 
-                 parbreak() })
diff --git a/test/out/text/features-08.out b/test/out/text/features-08.out
deleted file mode 100644
--- a/test/out/text/features-08.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/text/features-09.out b/test/out/text/features-09.out
deleted file mode 100644
--- a/test/out/text/features-09.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/text/features-10.out b/test/out/text/features-10.out
deleted file mode 100644
--- a/test/out/text/features-10.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/text/features-11.out b/test/out/text/features-11.out
deleted file mode 100644
--- a/test/out/text/features-11.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/text/features-12.out b/test/out/text/features-12.out
deleted file mode 100644
--- a/test/out/text/features-12.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/text/font-00.out b/test/out/text/font-00.out
deleted file mode 100644
--- a/test/out/text/font-00.out
+++ /dev/null
@@ -1,239 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/font-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/font-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/font-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/text/font-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ NormalArg (Literal (Numeric 20.0 Pt)) , BlockArg [ Text "A" ] ])
-, SoftBreak
-, Code
-    "test/typ/text/font-00.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ NormalArg (Literal (Numeric 2.0 Em)) , BlockArg [ Text "A" ] ])
-, SoftBreak
-, Code
-    "test/typ/text/font-00.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ KeyValArg
-           (Identifier "size")
-           (Plus (Literal (Numeric 15.0 Pt)) (Literal (Numeric 0.5 Em)))
-       , BlockArg [ Text "A" ]
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/text/font-00.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "text")) [ BlockArg [ Text "Normal" ] ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/text/font-00.typ"
-    ( line 11 , column 2 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "style") (Literal (String "italic"))
-       , BlockArg [ Text "Italic" ]
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/text/font-00.typ"
-    ( line 14 , column 2 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "weight") (Literal (String "bold"))
-       , BlockArg [ Text "Bold" ]
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/text/font-00.typ"
-    ( line 17 , column 2 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "stretch") (Literal (Numeric 50.0 Percent))
-       , BlockArg [ Text "Condensed" ]
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/text/font-00.typ"
-    ( line 20 , column 2 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "font") (Literal (String "IBM Plex Serif"))
-       , BlockArg [ Text "Serif" ]
-       ])
-, ParBreak
-, Comment
-, Text "Emoji"
-, Text ":"
-, Space
-, Text "\128042,"
-, Space
-, Text "\127755,"
-, Space
-, Text "\127966"
-, ParBreak
-, Comment
-, Code
-    "test/typ/text/font-00.typ"
-    ( line 26 , column 2 )
-    (Block
-       (Content
-          [ SoftBreak
-          , Code
-              "test/typ/text/font-00.typ"
-              ( line 27 , column 4 )
-              (Set
-                 (Ident (Identifier "text"))
-                 [ KeyValArg (Identifier "fill") (Ident (Identifier "eastern")) ])
-          , SoftBreak
-          , Text "This"
-          , Space
-          , Text "is"
-          , Space
-          , Code
-              "test/typ/text/font-00.typ"
-              ( line 28 , column 12 )
-              (FuncCall
-                 (Ident (Identifier "text"))
-                 [ NormalArg
-                     (FuncCall
-                        (Ident (Identifier "rgb"))
-                        [ NormalArg (Literal (String "FA644B")) ])
-                 , BlockArg [ Text "way" , Space , Text "more" ]
-                 ])
-          , Space
-          , Text "colorful"
-          , Text "."
-          , ParBreak
-          ]))
-, ParBreak
-, Comment
-, Comment
-, Code
-    "test/typ/text/font-00.typ"
-    ( line 33 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg
-           (Identifier "font")
-           (Array
-              [ Reg (Literal (String "PT Sans"))
-              , Reg (Literal (String "Twitter Color Emoji"))
-              ])
-       , KeyValArg (Identifier "fallback") (Literal (Boolean False))
-       ])
-, SoftBreak
-, Text "2\960"
-, Space
-, Text "="
-, Space
-, Text "\120572"
-, Space
-, Text "+"
-, Space
-, Text "\120573"
-, Text "."
-, Space
-, Text "\9989"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: text(body: [A]), 
-                      size: 20.0pt), 
-                 text(body: [
-]), 
-                 text(body: text(body: [A]), 
-                      size: 2.0em), 
-                 text(body: [
-]), 
-                 text(body: text(body: [A]), 
-                      size: 15.0pt + 0.5em), 
-                 parbreak(), 
-                 text(body: text(body: [Normal])), 
-                 parbreak(), 
-                 text(body: text(body: [Italic]), 
-                      style: "italic"), 
-                 parbreak(), 
-                 text(body: text(body: [Bold]), 
-                      weight: "bold"), 
-                 parbreak(), 
-                 text(body: text(body: [Condensed]), 
-                      stretch: 50%), 
-                 parbreak(), 
-                 text(body: text(body: [Serif]), 
-                      font: "IBM Plex Serif"), 
-                 parbreak(), 
-                 text(body: [Emoji: 🐪, 🌋, 🏞]), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 text(body: [
-This is ], 
-                      fill: rgb(13%,61%,67%,100%)), 
-                 text(body: text(body: [way more], 
-                                 fill: rgb(13%,61%,67%,100%)), 
-                      color: rgb(98%,39%,29%,100%), 
-                      fill: rgb(13%,61%,67%,100%)), 
-                 text(body: [ colorful.], 
-                      fill: rgb(13%,61%,67%,100%)), 
-                 parbreak(), 
-                 parbreak(), 
-                 text(body: [
-2π = 𝛼 + 𝛽. ✅], 
-                      fallback: false, 
-                      fill: rgb(13%,61%,67%,100%), 
-                      font: ("PT Sans", 
-                             "Twitter Color Emoji")), 
-                 parbreak() })
diff --git a/test/out/text/font-01.out b/test/out/text/font-01.out
deleted file mode 100644
--- a/test/out/text/font-01.out
+++ /dev/null
@@ -1,122 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/font-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/font-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/font-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/text/font-01.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ NormalArg (Literal (String "Text")) ])
-, Space
-, HardBreak
-, Code
-    "test/typ/text/font-01.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ NormalArg (Ident (Identifier "red"))
-       , NormalArg (Literal (String "Text"))
-       ])
-, Space
-, HardBreak
-, Code
-    "test/typ/text/font-01.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "font") (Literal (String "Ubuntu"))
-       , NormalArg (Ident (Identifier "blue"))
-       , NormalArg (Literal (String "Text"))
-       ])
-, Space
-, HardBreak
-, Code
-    "test/typ/text/font-01.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ NormalArg (Block (Content [ Text "Text" ]))
-       , NormalArg (Ident (Identifier "teal"))
-       , KeyValArg (Identifier "font") (Literal (String "IBM Plex Serif"))
-       ])
-, Space
-, HardBreak
-, Code
-    "test/typ/text/font-01.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ NormalArg (Ident (Identifier "red"))
-       , KeyValArg
-           (Identifier "font") (Literal (String "New Computer Modern"))
-       , NormalArg (Block (Content [ Text "Text" ]))
-       ])
-, Space
-, HardBreak
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: "Text"), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 text(body: "Text", 
-                      color: rgb(100%,25%,21%,100%)), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 text(body: "Text", 
-                      color: rgb(0%,45%,85%,100%), 
-                      font: "Ubuntu"), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 text(body: text(body: [Text]), 
-                      color: rgb(22%,80%,80%,100%), 
-                      font: "IBM Plex Serif"), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 text(body: text(body: [Text]), 
-                      color: rgb(100%,25%,21%,100%), 
-                      font: "New Computer Modern"), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 parbreak() })
diff --git a/test/out/text/font-02.out b/test/out/text/font-02.out
deleted file mode 100644
--- a/test/out/text/font-02.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/text/font-03.out b/test/out/text/font-03.out
deleted file mode 100644
--- a/test/out/text/font-03.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/text/font-04.out b/test/out/text/font-04.out
deleted file mode 100644
--- a/test/out/text/font-04.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/text/font-05.out b/test/out/text/font-05.out
deleted file mode 100644
--- a/test/out/text/font-05.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/text/hyphenate-00.out b/test/out/text/hyphenate-00.out
deleted file mode 100644
--- a/test/out/text/hyphenate-00.out
+++ /dev/null
@@ -1,114 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/hyphenate-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/hyphenate-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/hyphenate-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/text/hyphenate-00.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "hyphenate") (Literal (Boolean True)) ])
-, SoftBreak
-, Code
-    "test/typ/text/hyphenate-00.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal Auto) ])
-, SoftBreak
-, Code
-    "test/typ/text/hyphenate-00.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "grid"))
-       [ KeyValArg
-           (Identifier "columns")
-           (Array
-              [ Reg (Literal (Numeric 50.0 Pt))
-              , Reg (Literal (Numeric 50.0 Pt))
-              ])
-       , NormalArg
-           (Block
-              (Content
-                 [ Text "Warm"
-                 , Space
-                 , Text "welcomes"
-                 , Space
-                 , Text "to"
-                 , Space
-                 , Text "Typst"
-                 , Text "."
-                 ]))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "text"))
-              [ KeyValArg (Identifier "lang") (Literal (String "el"))
-              , BlockArg
-                  [ Text "\948\953\945\956\949\961\943\963\956\945\964\945"
-                  , Text "."
-                  , Space
-                  , HardBreak
-                  , Text "\955\945\964\961\949\965\964\972\962"
-                  ]
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-], 
-                      hyphenate: true), 
-                 text(body: [
-], 
-                      hyphenate: true), 
-                 grid(children: (text(body: [Warm welcomes to Typst.], 
-                                      hyphenate: true), 
-                                 text(body: { text(body: [διαμερίσματα. ], 
-                                                   hyphenate: true), 
-                                              linebreak(), 
-                                              text(body: [λατρευτός], 
-                                                   hyphenate: true) }, 
-                                      hyphenate: true, 
-                                      lang: "el")), 
-                      columns: (50.0pt, 50.0pt)), 
-                 parbreak() })
diff --git a/test/out/text/hyphenate-01.out b/test/out/text/hyphenate-01.out
deleted file mode 100644
--- a/test/out/text/hyphenate-01.out
+++ /dev/null
@@ -1,201 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/hyphenate-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/hyphenate-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/hyphenate-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/text/hyphenate-01.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 110.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/text/hyphenate-01.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "hyphenate") (Literal (Boolean True)) ])
-, ParBreak
-, Text "Welcome"
-, Space
-, Text "to"
-, Space
-, Text "wonderful"
-, Space
-, Text "experiences"
-, Text "."
-, Space
-, HardBreak
-, Text "Welcome"
-, Space
-, Text "to"
-, Space
-, RawInline "wonderful"
-, Space
-, Text "experiences"
-, Text "."
-, Space
-, HardBreak
-, Text "Welcome"
-, Space
-, Text "to"
-, Space
-, Code
-    "test/typ/text/hyphenate-01.typ"
-    ( line 8 , column 13 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "hyphenate") (Literal (Boolean False))
-       , BlockArg [ Text "wonderful" ]
-       ])
-, Space
-, Text "experiences"
-, Text "."
-, Space
-, HardBreak
-, Text "Welcome"
-, Space
-, Text "to"
-, Space
-, Text "wonde"
-, Code
-    "test/typ/text/hyphenate-01.typ"
-    ( line 9 , column 18 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "hyphenate") (Literal (Boolean False))
-       , BlockArg [ Text "rf" ]
-       ])
-, Text "ul"
-, Space
-, Text "experiences"
-, Text "."
-, Space
-, HardBreak
-, SoftBreak
-, Comment
-, Code
-    "test/typ/text/hyphenate-01.typ"
-    ( line 12 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "hyphenate") (Literal (Boolean False)) ])
-, SoftBreak
-, Text "Welcome"
-, Space
-, Text "to"
-, Space
-, Text "wonderful"
-, Space
-, Text "experiences"
-, Text "."
-, Space
-, HardBreak
-, Text "Welcome"
-, Space
-, Text "to"
-, Space
-, Text "wo"
-, Code
-    "test/typ/text/hyphenate-01.typ"
-    ( line 14 , column 15 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "hyphenate") (Literal (Boolean True))
-       , BlockArg [ Text "nd" ]
-       ])
-, Text "erful"
-, Space
-, Text "experiences"
-, Text "."
-, Space
-, HardBreak
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [Welcome to wonderful experiences. ], 
-                      hyphenate: true), 
-                 linebreak(), 
-                 text(body: [Welcome to ], 
-                      hyphenate: true), 
-                 raw(block: false, 
-                     lang: none, 
-                     text: "wonderful"), 
-                 text(body: [ experiences. ], 
-                      hyphenate: true), 
-                 linebreak(), 
-                 text(body: [Welcome to ], 
-                      hyphenate: true), 
-                 text(body: text(body: [wonderful], 
-                                 hyphenate: true), 
-                      hyphenate: false), 
-                 text(body: [ experiences. ], 
-                      hyphenate: true), 
-                 linebreak(), 
-                 text(body: [Welcome to wonde], 
-                      hyphenate: true), 
-                 text(body: text(body: [rf], 
-                                 hyphenate: true), 
-                      hyphenate: false), 
-                 text(body: [ul experiences. ], 
-                      hyphenate: true), 
-                 linebreak(), 
-                 text(body: [
-], 
-                      hyphenate: true), 
-                 text(body: [
-Welcome to wonderful experiences. ], 
-                      hyphenate: false), 
-                 linebreak(), 
-                 text(body: [Welcome to wo], 
-                      hyphenate: false), 
-                 text(body: text(body: [nd], 
-                                 hyphenate: false), 
-                      hyphenate: true), 
-                 text(body: [erful experiences. ], 
-                      hyphenate: false), 
-                 linebreak(), 
-                 parbreak() })
diff --git a/test/out/text/hyphenate-02.out b/test/out/text/hyphenate-02.out
deleted file mode 100644
--- a/test/out/text/hyphenate-02.out
+++ /dev/null
@@ -1,83 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/hyphenate-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/hyphenate-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/hyphenate-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/text/hyphenate-02.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 80.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/text/hyphenate-02.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "hyphenate") (Literal (Boolean True)) ])
-, SoftBreak
-, Text "It"
-, Quote '\''
-, Text "s"
-, Space
-, Text "a"
-, Space
-, Code
-    "test/typ/text/hyphenate-02.typ"
-    ( line 5 , column 9 )
-    (FuncCall (Ident (Identifier "emph")) [ BlockArg [ Text "Tree" ] ])
-, Text "beard"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-It’s a ], 
-                      hyphenate: true), 
-                 emph(body: text(body: [Tree], 
-                                 hyphenate: true)), 
-                 text(body: [beard.], 
-                      hyphenate: true), 
-                 parbreak() })
diff --git a/test/out/text/hyphenate-03.out b/test/out/text/hyphenate-03.out
deleted file mode 100644
--- a/test/out/text/hyphenate-03.out
+++ /dev/null
@@ -1,82 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/hyphenate-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/hyphenate-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/hyphenate-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/text/hyphenate-03.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "lang") (Literal (String "de"))
-       , KeyValArg (Identifier "hyphenate") (Literal (Boolean True))
-       ])
-, SoftBreak
-, Code
-    "test/typ/text/hyphenate-03.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "grid"))
-       [ KeyValArg
-           (Identifier "columns")
-           (Times
-              (Literal (Int 2)) (Array [ Reg (Literal (Numeric 20.0 Pt)) ]))
-       , KeyValArg (Identifier "gutter") (Literal (Numeric 20.0 Pt))
-       , NormalArg (Block (Content [ Text "Barankauf" ]))
-       , NormalArg (Block (Content [ Text "Bar" , Shy , Text "ankauf" ]))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-], 
-                      hyphenate: true, 
-                      lang: "de"), 
-                 grid(children: (text(body: [Barankauf], 
-                                      hyphenate: true, 
-                                      lang: "de"), 
-                                 text(body: [Bar­ankauf], 
-                                      hyphenate: true, 
-                                      lang: "de")), 
-                      columns: (20.0pt, 20.0pt), 
-                      gutter: 20.0pt), 
-                 parbreak() })
diff --git a/test/out/text/hyphenate-04.out b/test/out/text/hyphenate-04.out
deleted file mode 100644
--- a/test/out/text/hyphenate-04.out
+++ /dev/null
@@ -1,85 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/hyphenate-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/hyphenate-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/hyphenate-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Comment
-, Comment
-, Code
-    "test/typ/text/hyphenate-04.typ"
-    ( line 6 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 60.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/text/hyphenate-04.typ"
-    ( line 7 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "hyphenate") (Literal (Boolean True)) ])
-, SoftBreak
-, Code
-    "test/typ/text/hyphenate-04.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 6.0 Pt)) ])
-, Space
-, Text "networks,"
-, Space
-, Text "the"
-, Space
-, Text "rest"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-], 
-                      hyphenate: true), 
-                 h(amount: 6.0pt), 
-                 text(body: [ networks, the rest.], 
-                      hyphenate: true), 
-                 parbreak() })
diff --git a/test/out/text/lang-00.out b/test/out/text/lang-00.out
deleted file mode 100644
--- a/test/out/text/lang-00.out
+++ /dev/null
@@ -1,91 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/lang-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/lang-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/lang-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/text/lang-00.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "hyphenate") (Literal (Boolean True)) ])
-, SoftBreak
-, Code
-    "test/typ/text/lang-00.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "grid"))
-       [ KeyValArg
-           (Identifier "columns")
-           (Times
-              (Literal (Int 2)) (Array [ Reg (Literal (Numeric 20.0 Pt)) ]))
-       , KeyValArg (Identifier "gutter") (Literal (Numeric 1.0 Fr))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "text"))
-              [ KeyValArg (Identifier "lang") (Literal (String "en"))
-              , BlockArg [ Quote '"' , Text "Eingabeaufforderung" , Quote '"' ]
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "text"))
-              [ KeyValArg (Identifier "lang") (Literal (String "de"))
-              , BlockArg [ Quote '"' , Text "Eingabeaufforderung" , Quote '"' ]
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-], 
-                      hyphenate: true), 
-                 grid(children: (text(body: text(body: [“Eingabeaufforderung”], 
-                                                 hyphenate: true), 
-                                      hyphenate: true, 
-                                      lang: "en"), 
-                                 text(body: text(body: [“Eingabeaufforderung”], 
-                                                 hyphenate: true), 
-                                      hyphenate: true, 
-                                      lang: "de")), 
-                      columns: (20.0pt, 20.0pt), 
-                      gutter: 1.0fr), 
-                 parbreak() })
diff --git a/test/out/text/lang-01.out b/test/out/text/lang-01.out
deleted file mode 100644
--- a/test/out/text/lang-01.out
+++ /dev/null
@@ -1,93 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/lang-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/lang-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/lang-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/text/lang-01.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "font") (Literal (String "Ubuntu")) ])
-, ParBreak
-, Comment
-, Comment
-, Comment
-, Comment
-, Text "\1041\1073"
-, SoftBreak
-, Code
-    "test/typ/text/lang-01.typ"
-    ( line 10 , column 2 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "lang") (Literal (String "uk"))
-       , BlockArg [ Text "\1041\1073" ]
-       ])
-, SoftBreak
-, Code
-    "test/typ/text/lang-01.typ"
-    ( line 11 , column 2 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "lang") (Literal (String "sr"))
-       , BlockArg [ Text "\1041\1073" ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [Бб
-], 
-                      font: "Ubuntu"), 
-                 text(body: text(body: [Бб], 
-                                 font: "Ubuntu"), 
-                      font: "Ubuntu", 
-                      lang: "uk"), 
-                 text(body: [
-], 
-                      font: "Ubuntu"), 
-                 text(body: text(body: [Бб], 
-                                 font: "Ubuntu"), 
-                      font: "Ubuntu", 
-                      lang: "sr"), 
-                 parbreak() })
diff --git a/test/out/text/lang-02.out b/test/out/text/lang-02.out
deleted file mode 100644
--- a/test/out/text/lang-02.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/text/lang-03.out b/test/out/text/lang-03.out
deleted file mode 100644
--- a/test/out/text/lang-03.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/text/lang-04.out b/test/out/text/lang-04.out
deleted file mode 100644
--- a/test/out/text/lang-04.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/text/lang-05.out b/test/out/text/lang-05.out
deleted file mode 100644
--- a/test/out/text/lang-05.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/text/lang-with-region-00.out b/test/out/text/lang-with-region-00.out
deleted file mode 100644
--- a/test/out/text/lang-with-region-00.out
+++ /dev/null
@@ -1,62 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/lang-with-region-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/lang-with-region-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/lang-with-region-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/text/lang-with-region-00.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "lang") (Literal (String "zh")) ])
-, SoftBreak
-, Code
-    "test/typ/text/lang-with-region-00.typ"
-    ( line 4 , column 2 )
-    (FuncCall (Ident (Identifier "outline")) [])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-], lang: "zh"), 
-                 outline(), 
-                 parbreak() })
diff --git a/test/out/text/lang-with-region-01.out b/test/out/text/lang-with-region-01.out
deleted file mode 100644
--- a/test/out/text/lang-with-region-01.out
+++ /dev/null
@@ -1,66 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/lang-with-region-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/lang-with-region-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/lang-with-region-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/text/lang-with-region-01.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "lang") (Literal (String "zh"))
-       , KeyValArg (Identifier "region") (Literal (String "XX"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/text/lang-with-region-01.typ"
-    ( line 4 , column 2 )
-    (FuncCall (Ident (Identifier "outline")) [])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-], 
-                      lang: "zh", 
-                      region: "XX"), 
-                 outline(), 
-                 parbreak() })
diff --git a/test/out/text/lang-with-region-02.out b/test/out/text/lang-with-region-02.out
deleted file mode 100644
--- a/test/out/text/lang-with-region-02.out
+++ /dev/null
@@ -1,66 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/lang-with-region-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/lang-with-region-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/lang-with-region-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/text/lang-with-region-02.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "lang") (Literal (String "zh"))
-       , KeyValArg (Identifier "region") (Literal (String "TW"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/text/lang-with-region-02.typ"
-    ( line 4 , column 2 )
-    (FuncCall (Ident (Identifier "outline")) [])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-], 
-                      lang: "zh", 
-                      region: "TW"), 
-                 outline(), 
-                 parbreak() })
diff --git a/test/out/text/linebreak-00.out b/test/out/text/linebreak-00.out
deleted file mode 100644
--- a/test/out/text/linebreak-00.out
+++ /dev/null
@@ -1,57 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/linebreak-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/linebreak-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/linebreak-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "This"
-, Space
-, Text "is"
-, Space
-, Text "a"
-, Space
-, Text "spaceexceedinglylongy"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [This is a spaceexceedinglylongy.]), 
-                 parbreak() })
diff --git a/test/out/text/linebreak-01.out b/test/out/text/linebreak-01.out
deleted file mode 100644
--- a/test/out/text/linebreak-01.out
+++ /dev/null
@@ -1,53 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/linebreak-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/linebreak-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/linebreak-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "Supercalifragilisticexpialidocious"
-, Space
-, Text "Expialigoricmetrioxidation"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [Supercalifragilisticexpialidocious Expialigoricmetrioxidation.]), 
-                 parbreak() })
diff --git a/test/out/text/linebreak-02.out b/test/out/text/linebreak-02.out
deleted file mode 100644
--- a/test/out/text/linebreak-02.out
+++ /dev/null
@@ -1,64 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/linebreak-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/linebreak-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/linebreak-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "This"
-, Space
-, Text "is"
-, Space
-, Text "partly"
-, Space
-, Text "emp"
-, Code
-    "test/typ/text/linebreak-02.typ"
-    ( line 3 , column 20 )
-    (FuncCall (Ident (Identifier "emph")) [ BlockArg [ Text "has" ] ])
-, Text "ized"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [This is partly emp]), 
-                 emph(body: text(body: [has])), 
-                 text(body: [ized.]), 
-                 parbreak() })
diff --git a/test/out/text/linebreak-03.out b/test/out/text/linebreak-03.out
deleted file mode 100644
--- a/test/out/text/linebreak-03.out
+++ /dev/null
@@ -1,58 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/linebreak-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/linebreak-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/linebreak-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Text "Hard"
-, Space
-, Code
-    "test/typ/text/linebreak-03.typ"
-    ( line 2 , column 7 )
-    (FuncCall (Ident (Identifier "linebreak")) [])
-, Space
-, Text "break"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-Hard ]), 
-                 linebreak(), 
-                 text(body: [ break.]), 
-                 parbreak() })
diff --git a/test/out/text/linebreak-04.out b/test/out/text/linebreak-04.out
deleted file mode 100644
--- a/test/out/text/linebreak-04.out
+++ /dev/null
@@ -1,64 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/linebreak-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/linebreak-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/linebreak-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "Hard"
-, Space
-, Text "break"
-, Space
-, Text "directly"
-, Space
-, Text "after"
-, Space
-, HardBreak
-, Text "normal"
-, Space
-, Text "break"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [Hard break directly after ]), 
-                 linebreak(), 
-                 text(body: [normal break.]), 
-                 parbreak() })
diff --git a/test/out/text/linebreak-05.out b/test/out/text/linebreak-05.out
deleted file mode 100644
--- a/test/out/text/linebreak-05.out
+++ /dev/null
@@ -1,71 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/linebreak-05.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/linebreak-05.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/linebreak-05.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "Two"
-, Space
-, Text "consecutive"
-, Space
-, HardBreak
-, HardBreak
-, Text "breaks"
-, Space
-, Text "and"
-, Space
-, Text "three"
-, Space
-, HardBreak
-, HardBreak
-, Text "more"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [Two consecutive ]), 
-                 linebreak(), 
-                 linebreak(), 
-                 text(body: [breaks and three ]), 
-                 linebreak(), 
-                 linebreak(), 
-                 text(body: [more.]), 
-                 parbreak() })
diff --git a/test/out/text/linebreak-06.out b/test/out/text/linebreak-06.out
deleted file mode 100644
--- a/test/out/text/linebreak-06.out
+++ /dev/null
@@ -1,57 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/linebreak-06.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/linebreak-06.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/linebreak-06.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "Trailing"
-, Space
-, Text "break"
-, Space
-, HardBreak
-, HardBreak
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [Trailing break ]), 
-                 linebreak(), 
-                 linebreak(), 
-                 parbreak() })
diff --git a/test/out/text/linebreak-07.out b/test/out/text/linebreak-07.out
deleted file mode 100644
--- a/test/out/text/linebreak-07.out
+++ /dev/null
@@ -1,113 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/linebreak-07.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/linebreak-07.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/linebreak-07.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/text/linebreak-07.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "par"))
-       [ KeyValArg (Identifier "justify") (Literal (Boolean True)) ])
-, SoftBreak
-, Text "With"
-, Space
-, Text "a"
-, Space
-, Text "soft"
-, Space
-, Code
-    "test/typ/text/linebreak-07.typ"
-    ( line 4 , column 14 )
-    (FuncCall
-       (Ident (Identifier "linebreak"))
-       [ KeyValArg (Identifier "justify") (Literal (Boolean True)) ])
-, SoftBreak
-, Text "break"
-, Space
-, Text "you"
-, Space
-, Text "can"
-, Space
-, Text "force"
-, Space
-, Text "a"
-, Space
-, Text "break"
-, Space
-, Text "without"
-, Space
-, Code
-    "test/typ/text/linebreak-07.typ"
-    ( line 5 , column 38 )
-    (FuncCall
-       (Ident (Identifier "linebreak"))
-       [ KeyValArg (Identifier "justify") (Literal (Boolean True)) ])
-, SoftBreak
-, Text "breaking"
-, Space
-, Text "justification"
-, Text "."
-, Space
-, Code
-    "test/typ/text/linebreak-07.typ"
-    ( line 6 , column 26 )
-    (FuncCall
-       (Ident (Identifier "linebreak"))
-       [ KeyValArg (Identifier "justify") (Literal (Boolean False)) ])
-, SoftBreak
-, Text "Nice!"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-With a soft ]), 
-                 linebreak(justify: true), 
-                 text(body: [
-break you can force a break without ]), 
-                 linebreak(justify: true), 
-                 text(body: [
-breaking justification. ]), 
-                 linebreak(justify: false), 
-                 text(body: [
-Nice!]), 
-                 parbreak() })
diff --git a/test/out/text/linebreak-08.out b/test/out/text/linebreak-08.out
deleted file mode 100644
--- a/test/out/text/linebreak-08.out
+++ /dev/null
@@ -1,70 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/linebreak-08.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/linebreak-08.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/linebreak-08.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "First"
-, Space
-, Text "part"
-, Comment
-, Text "Second"
-, Space
-, Text "part"
-, ParBreak
-, Comment
-, Text "First"
-, Space
-, Text "part"
-, Space
-, Comment
-, Text "Second"
-, Space
-, Text "part"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [First part]), 
-                 text(body: [Second part]), 
-                 parbreak(), 
-                 text(body: [First part ]), 
-                 text(body: [Second part]), 
-                 parbreak() })
diff --git a/test/out/text/linebreak-obj-00.out b/test/out/text/linebreak-obj-00.out
deleted file mode 100644
--- a/test/out/text/linebreak-obj-00.out
+++ /dev/null
@@ -1,97 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/linebreak-obj-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/linebreak-obj-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/linebreak-obj-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/text/linebreak-obj-00.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 162.0 Pt)) ])
-, ParBreak
-, Text "They"
-, Space
-, Text "can"
-, Space
-, Text "look"
-, Space
-, Text "for"
-, Space
-, Text "the"
-, Space
-, Text "details"
-, Space
-, Text "in"
-, Space
-, Ref "netwok" (Literal Auto)
-, Text ","
-, SoftBreak
-, Text "which"
-, Space
-, Text "is"
-, Space
-, Text "the"
-, Space
-, Text "authoritative"
-, Space
-, Text "source"
-, Text "."
-, ParBreak
-, Code
-    "test/typ/text/linebreak-obj-00.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "bibliography"))
-       [ NormalArg (Literal (String "/works.bib")) ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [They can look for the details in ]), 
-                 ref(supplement: auto, 
-                     target: <netwok>), 
-                 text(body: [,
-which is the authoritative source.]), 
-                 parbreak(), 
-                 bibliography(path: "/works.bib"), 
-                 parbreak() })
diff --git a/test/out/text/linebreak-obj-01.out b/test/out/text/linebreak-obj-01.out
deleted file mode 100644
--- a/test/out/text/linebreak-obj-01.out
+++ /dev/null
@@ -1,198 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/linebreak-obj-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/linebreak-obj-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/linebreak-obj-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/text/linebreak-obj-01.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 85.0 Pt)) ])
-, ParBreak
-, Text "We"
-, Space
-, Text "prove"
-, Space
-, Equation False [ Text "1" , Text "<" , Text "2" ]
-, Text "."
-, Space
-, HardBreak
-, Text "We"
-, Space
-, Text "prove"
-, Space
-, Equation False [ Text "1" , Text "<" , Text "2" ]
-, Text "!"
-, Space
-, HardBreak
-, Text "We"
-, Space
-, Text "prove"
-, Space
-, Equation False [ Text "1" , Text "<" , Text "2" ]
-, Text "?"
-, Space
-, HardBreak
-, Text "We"
-, Space
-, Text "prove"
-, Space
-, Equation False [ Text "1" , Text "<" , Text "2" ]
-, Text ","
-, Space
-, HardBreak
-, Text "We"
-, Space
-, Text "prove"
-, Space
-, Equation False [ Text "1" , Text "<" , Text "2" ]
-, Text ";"
-, Space
-, HardBreak
-, Text "We"
-, Space
-, Text "prove"
-, Space
-, Equation False [ Text "1" , Text "<" , Text "2" ]
-, Text ":"
-, Space
-, HardBreak
-, Text "We"
-, Space
-, Text "prove"
-, Space
-, Equation False [ Text "1" , Text "<" , Text "2" ]
-, Text "-"
-, Space
-, HardBreak
-, Text "We"
-, Space
-, Text "prove"
-, Space
-, Equation False [ Text "1" , Text "<" , Text "2" ]
-, Text "\8211"
-, Space
-, HardBreak
-, Text "We"
-, Space
-, Text "prove"
-, Space
-, Equation False [ Text "1" , Text "<" , Text "2" ]
-, Text "\8212"
-, Space
-, HardBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [We prove ]), 
-                 math.equation(block: false, 
-                               body: { text(body: [1]), 
-                                       text(body: [<]), 
-                                       text(body: [2]) }, 
-                               numbering: none), 
-                 text(body: [. ]), 
-                 linebreak(), 
-                 text(body: [We prove ]), 
-                 math.equation(block: false, 
-                               body: { text(body: [1]), 
-                                       text(body: [<]), 
-                                       text(body: [2]) }, 
-                               numbering: none), 
-                 text(body: [! ]), 
-                 linebreak(), 
-                 text(body: [We prove ]), 
-                 math.equation(block: false, 
-                               body: { text(body: [1]), 
-                                       text(body: [<]), 
-                                       text(body: [2]) }, 
-                               numbering: none), 
-                 text(body: [? ]), 
-                 linebreak(), 
-                 text(body: [We prove ]), 
-                 math.equation(block: false, 
-                               body: { text(body: [1]), 
-                                       text(body: [<]), 
-                                       text(body: [2]) }, 
-                               numbering: none), 
-                 text(body: [, ]), 
-                 linebreak(), 
-                 text(body: [We prove ]), 
-                 math.equation(block: false, 
-                               body: { text(body: [1]), 
-                                       text(body: [<]), 
-                                       text(body: [2]) }, 
-                               numbering: none), 
-                 text(body: [; ]), 
-                 linebreak(), 
-                 text(body: [We prove ]), 
-                 math.equation(block: false, 
-                               body: { text(body: [1]), 
-                                       text(body: [<]), 
-                                       text(body: [2]) }, 
-                               numbering: none), 
-                 text(body: [: ]), 
-                 linebreak(), 
-                 text(body: [We prove ]), 
-                 math.equation(block: false, 
-                               body: { text(body: [1]), 
-                                       text(body: [<]), 
-                                       text(body: [2]) }, 
-                               numbering: none), 
-                 text(body: [- ]), 
-                 linebreak(), 
-                 text(body: [We prove ]), 
-                 math.equation(block: false, 
-                               body: { text(body: [1]), 
-                                       text(body: [<]), 
-                                       text(body: [2]) }, 
-                               numbering: none), 
-                 text(body: [– ]), 
-                 linebreak(), 
-                 text(body: [We prove ]), 
-                 math.equation(block: false, 
-                               body: { text(body: [1]), 
-                                       text(body: [<]), 
-                                       text(body: [2]) }, 
-                               numbering: none), 
-                 text(body: [— ]), 
-                 linebreak() })
diff --git a/test/out/text/lorem-00.out b/test/out/text/lorem-00.out
deleted file mode 100644
--- a/test/out/text/lorem-00.out
+++ /dev/null
@@ -1,54 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/lorem-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/lorem-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/lorem-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/text/lorem-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 19)) ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.]), 
-                 parbreak() })
diff --git a/test/out/text/lorem-01.out b/test/out/text/lorem-01.out
deleted file mode 100644
--- a/test/out/text/lorem-01.out
+++ /dev/null
@@ -1,127 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/lorem-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/lorem-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/lorem-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/text/lorem-01.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ NormalArg (Literal (Numeric 8.0 Pt)) ])
-, ParBreak
-, Code
-    "test/typ/text/lorem-01.typ"
-    ( line 5 , column 2 )
-    (Block
-       (CodeBlock
-          [ Let
-              (BasicBind (Just (Identifier "sentences")))
-              (FuncCall
-                 (FieldAccess
-                    (Ident (Identifier "map"))
-                    (FuncCall
-                       (FieldAccess
-                          (Ident (Identifier "filter"))
-                          (FuncCall
-                             (FieldAccess
-                                (Ident (Identifier "split"))
-                                (FuncCall
-                                   (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 59)) ]))
-                             [ NormalArg (Literal (String ".")) ]))
-                       [ NormalArg
-                           (FuncExpr
-                              [ NormalParam (Identifier "s") ]
-                              (Not (Equals (Ident (Identifier "s")) (Literal (String "")))))
-                       ]))
-                 [ NormalArg
-                     (FuncExpr
-                        [ NormalParam (Identifier "s") ]
-                        (Plus (Ident (Identifier "s")) (Literal (String "."))))
-                 ])
-          , Let (BasicBind (Just (Identifier "used"))) (Literal (Int 0))
-          , For
-              (BasicBind (Just (Identifier "s")))
-              (Ident (Identifier "sentences"))
-              (Block
-                 (CodeBlock
-                    [ If
-                        [ ( LessThan (Ident (Identifier "used")) (Literal (Int 2))
-                          , Block
-                              (CodeBlock
-                                 [ Assign
-                                     (Ident (Identifier "used"))
-                                     (Plus (Ident (Identifier "used")) (Literal (Int 1)))
-                                 ])
-                          )
-                        , ( Literal (Boolean True)
-                          , Block
-                              (CodeBlock
-                                 [ FuncCall (Ident (Identifier "parbreak")) []
-                                 , Assign (Ident (Identifier "used")) (Literal (Int 0))
-                                 ])
-                          )
-                        ]
-                    , FuncCall
-                        (FieldAccess (Ident (Identifier "trim")) (Ident (Identifier "s")))
-                        []
-                    , Block (Content [ Space ])
-                    ]))
-          ]))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.], 
-                      size: 8.0pt), 
-                 text(body: [ ], size: 8.0pt), 
-                 text(body: [Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.], 
-                      size: 8.0pt), 
-                 text(body: [ ], size: 8.0pt), 
-                 parbreak(), 
-                 text(body: [Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.], 
-                      size: 8.0pt), 
-                 text(body: [ ], size: 8.0pt), 
-                 text(body: [Excepteur sint occaecat cupidatat non proident, sunt.], 
-                      size: 8.0pt), 
-                 text(body: [ ], size: 8.0pt), 
-                 parbreak() })
diff --git a/test/out/text/lorem-02.out b/test/out/text/lorem-02.out
deleted file mode 100644
--- a/test/out/text/lorem-02.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/text/microtype-00.out b/test/out/text/microtype-00.out
deleted file mode 100644
--- a/test/out/text/microtype-00.out
+++ /dev/null
@@ -1,213 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/microtype-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/microtype-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/microtype-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/text/microtype-00.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 130.0 Pt))
-       , KeyValArg (Identifier "margin") (Literal (Numeric 15.0 Pt))
-       ])
-, SoftBreak
-, Code
-    "test/typ/text/microtype-00.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "par"))
-       [ KeyValArg (Identifier "justify") (Literal (Boolean True))
-       , KeyValArg (Identifier "linebreaks") (Literal (String "simple"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/text/microtype-00.typ"
-    ( line 5 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "size") (Literal (Numeric 9.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/text/microtype-00.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "rect"))
-       [ KeyValArg (Identifier "inset") (Literal (Numeric 0.0 Pt))
-       , KeyValArg
-           (Identifier "fill")
-           (FuncCall
-              (Ident (Identifier "rgb"))
-              [ NormalArg (Literal (Int 0))
-              , NormalArg (Literal (Int 0))
-              , NormalArg (Literal (Int 0))
-              , NormalArg (Literal (Int 0))
-              ])
-       , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
-       , BlockArg
-           [ SoftBreak
-           , Text "This"
-           , Space
-           , Text "is"
-           , Space
-           , Text "a"
-           , Space
-           , Text "little"
-           , Space
-           , Text "bit"
-           , Space
-           , Text "of"
-           , Space
-           , Text "text"
-           , Space
-           , Text "that"
-           , Space
-           , Text "builds"
-           , Space
-           , Text "up"
-           , Space
-           , Text "to"
-           , SoftBreak
-           , Text "hang"
-           , Text "-"
-           , Text "ing"
-           , Space
-           , Text "hyphens"
-           , Space
-           , Text "and"
-           , Space
-           , Text "dash"
-           , EmDash
-           , Text "es"
-           , Space
-           , Text "and"
-           , Space
-           , Text "then,"
-           , Space
-           , Text "you"
-           , Space
-           , Text "know,"
-           , SoftBreak
-           , Text "some"
-           , Space
-           , Text "punctuation"
-           , Space
-           , Text "in"
-           , Space
-           , Text "the"
-           , Space
-           , Text "margin"
-           , Text "."
-           , ParBreak
-           ]
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/text/microtype-00.typ"
-    ( line 13 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "lang") (Literal (String "he"))
-       , KeyValArg
-           (Identifier "font")
-           (Array
-              [ Reg (Literal (String "PT Sans"))
-              , Reg (Literal (String "Noto Serif Hebrew"))
-              ])
-       ])
-, SoftBreak
-, Text "\1489\1504\1497\1497\1492"
-, Space
-, Text "\1504\1499\1493\1504\1492"
-, Space
-, Text "\1513\1500"
-, Space
-, Text "\1502\1513\1508\1496\1497\1501"
-, Space
-, Text "\1488\1512\1493\1499\1497\1501"
-, Space
-, Text "\1491\1493\1512\1513\1514"
-, Space
-, Text "\1497\1491\1506"
-, Space
-, Text "\1489\1513\1508\1492"
-, Text "."
-, Space
-, Text "\1488\1494"
-, Space
-, Text "\1489\1493\1488\1493"
-, Space
-, Text "\1504\1491\1489\1512"
-, Space
-, Text "\1506\1500"
-, Space
-, Text "\1502\1494\1490"
-, Space
-, Text "\1492\1488\1493\1493\1497\1512"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-], size: 9.0pt), 
-                 rect(body: { text(body: [
-This is a little bit of text that builds up to
-hang-ing hyphens and dash—es and then, you know,
-some punctuation in the margin.], 
-                                   size: 9.0pt), 
-                              parbreak() }, 
-                      fill: rgb(0%,0%,0%,0%), 
-                      inset: 0.0pt, 
-                      width: 100%), 
-                 parbreak(), 
-                 text(body: [
-בנייה נכונה של משפטים ארוכים דורשת ידע בשפה. אז בואו נדבר על מזג האוויר.], 
-                      font: ("PT Sans", 
-                             "Noto Serif Hebrew"), 
-                      lang: "he", 
-                      size: 9.0pt), 
-                 parbreak() })
diff --git a/test/out/text/microtype-01.out b/test/out/text/microtype-01.out
deleted file mode 100644
--- a/test/out/text/microtype-01.out
+++ /dev/null
@@ -1,76 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/microtype-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/microtype-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/microtype-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/text/microtype-01.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "margin") (Literal (Numeric 0.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/text/microtype-01.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "align"))
-       [ NormalArg (Ident (Identifier "end")) ])
-, SoftBreak
-, Code
-    "test/typ/text/microtype-01.typ"
-    ( line 5 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "dir") (Ident (Identifier "rtl")) ])
-, SoftBreak
-, Text ":"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-:], dir: rtl), 
-                 parbreak() })
diff --git a/test/out/text/quotes-00.out b/test/out/text/quotes-00.out
deleted file mode 100644
--- a/test/out/text/quotes-00.out
+++ /dev/null
@@ -1,500 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/quotes-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/quotes-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/quotes-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/text/quotes-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 250.0 Pt)) ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/text/quotes-00.typ"
-    ( line 5 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "lang") (Literal (String "en")) ])
-, SoftBreak
-, Quote '"'
-, Text "The"
-, Space
-, Text "horse"
-, Space
-, Text "eats"
-, Space
-, Text "no"
-, Space
-, Text "cucumber"
-, Space
-, Text "salad"
-, Quote '"'
-, Space
-, Text "was"
-, Space
-, Text "the"
-, Space
-, Text "first"
-, Space
-, Text "sentence"
-, Space
-, Text "ever"
-, Space
-, Text "uttered"
-, Space
-, Text "on"
-, Space
-, Text "the"
-, Space
-, Quote '\''
-, Text "telephone"
-, Text "."
-, Quote '\''
-, ParBreak
-, Code
-    "test/typ/text/quotes-00.typ"
-    ( line 8 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "lang") (Literal (String "de")) ])
-, SoftBreak
-, Quote '"'
-, Text "Das"
-, Space
-, Text "Pferd"
-, Space
-, Text "frisst"
-, Space
-, Text "keinen"
-, Space
-, Text "Gurkensalat"
-, Quote '"'
-, Space
-, Text "war"
-, Space
-, Text "der"
-, Space
-, Text "erste"
-, Space
-, Text "jemals"
-, Space
-, Text "am"
-, Space
-, Quote '\''
-, Text "Fernsprecher"
-, Quote '\''
-, Space
-, Text "gesagte"
-, Space
-, Text "Satz"
-, Text "."
-, ParBreak
-, Code
-    "test/typ/text/quotes-00.typ"
-    ( line 11 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "lang") (Literal (String "de"))
-       , KeyValArg (Identifier "region") (Literal (String "CH"))
-       ])
-, SoftBreak
-, Quote '"'
-, Text "Das"
-, Space
-, Text "Pferd"
-, Space
-, Text "frisst"
-, Space
-, Text "keinen"
-, Space
-, Text "Gurkensalat"
-, Quote '"'
-, Space
-, Text "war"
-, Space
-, Text "der"
-, Space
-, Text "erste"
-, Space
-, Text "jemals"
-, Space
-, Text "am"
-, Space
-, Quote '\''
-, Text "Fernsprecher"
-, Quote '\''
-, Space
-, Text "gesagte"
-, Space
-, Text "Satz"
-, Text "."
-, ParBreak
-, Code
-    "test/typ/text/quotes-00.typ"
-    ( line 14 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "lang") (Literal (String "es"))
-       , KeyValArg (Identifier "region") (Literal None)
-       ])
-, SoftBreak
-, Quote '"'
-, Text "El"
-, Space
-, Text "caballo"
-, Space
-, Text "no"
-, Space
-, Text "come"
-, Space
-, Text "ensalada"
-, Space
-, Text "de"
-, Space
-, Text "pepino"
-, Quote '"'
-, Space
-, Text "fue"
-, Space
-, Text "la"
-, Space
-, Text "primera"
-, Space
-, Text "frase"
-, Space
-, Text "pronunciada"
-, Space
-, Text "por"
-, Space
-, Quote '\''
-, Text "tel\233fono"
-, Quote '\''
-, Text "."
-, ParBreak
-, Code
-    "test/typ/text/quotes-00.typ"
-    ( line 17 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "lang") (Literal (String "es"))
-       , KeyValArg (Identifier "region") (Literal (String "MX"))
-       ])
-, SoftBreak
-, Quote '"'
-, Text "El"
-, Space
-, Text "caballo"
-, Space
-, Text "no"
-, Space
-, Text "come"
-, Space
-, Text "ensalada"
-, Space
-, Text "de"
-, Space
-, Text "pepino"
-, Quote '"'
-, Space
-, Text "fue"
-, Space
-, Text "la"
-, Space
-, Text "primera"
-, Space
-, Text "frase"
-, Space
-, Text "pronunciada"
-, Space
-, Text "por"
-, Space
-, Quote '\''
-, Text "tel\233fono"
-, Quote '\''
-, Text "."
-, ParBreak
-, Code
-    "test/typ/text/quotes-00.typ"
-    ( line 20 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "lang") (Literal (String "fr"))
-       , KeyValArg (Identifier "region") (Literal None)
-       ])
-, SoftBreak
-, Quote '"'
-, Text "Le"
-, Space
-, Text "cheval"
-, Space
-, Text "ne"
-, Space
-, Text "mange"
-, Space
-, Text "pas"
-, Space
-, Text "de"
-, Space
-, Text "salade"
-, Space
-, Text "de"
-, Space
-, Text "concombres"
-, Quote '"'
-, Space
-, Text "est"
-, Space
-, Text "la"
-, Space
-, Text "premi\232re"
-, Space
-, Text "phrase"
-, Space
-, Text "jamais"
-, Space
-, Text "prononc\233e"
-, Space
-, Text "au"
-, Space
-, Quote '\''
-, Text "t\233l\233phone"
-, Quote '\''
-, Text "."
-, ParBreak
-, Code
-    "test/typ/text/quotes-00.typ"
-    ( line 23 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "lang") (Literal (String "fi")) ])
-, SoftBreak
-, Quote '"'
-, Text "Hevonen"
-, Space
-, Text "ei"
-, Space
-, Text "sy\246"
-, Space
-, Text "kurkkusalaattia"
-, Quote '"'
-, Space
-, Text "oli"
-, Space
-, Text "ensimm\228inen"
-, Space
-, Text "koskaan"
-, Space
-, Quote '\''
-, Text "puhelimessa"
-, Quote '\''
-, Space
-, Text "lausuttu"
-, Space
-, Text "lause"
-, Text "."
-, ParBreak
-, Code
-    "test/typ/text/quotes-00.typ"
-    ( line 26 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "lang") (Literal (String "he")) ])
-, SoftBreak
-, Quote '"'
-, Text "\1492\1505\1493\1505"
-, Space
-, Text "\1500\1488"
-, Space
-, Text "\1488\1493\1499\1500"
-, Space
-, Text "\1505\1500\1496"
-, Space
-, Text "\1502\1500\1508\1508\1493\1504\1497\1501"
-, Quote '"'
-, Space
-, Text "\1492\1497\1492"
-, Space
-, Text "\1492\1502\1513\1508\1496"
-, Space
-, Text "\1492\1492\1512\1488\1513\1493\1503"
-, Space
-, Text "\1513\1504\1488\1502\1512"
-, Space
-, Text "\1489"
-, Space
-, Quote '\''
-, Text "\1496\1500\1508\1493\1503"
-, Quote '\''
-, Text "."
-, ParBreak
-, Code
-    "test/typ/text/quotes-00.typ"
-    ( line 29 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "lang") (Literal (String "ro")) ])
-, SoftBreak
-, Quote '"'
-, Text "Calul"
-, Space
-, Text "nu"
-, Space
-, Text "m\259n\226nc\259"
-, Space
-, Text "salat\259"
-, Space
-, Text "de"
-, Space
-, Text "castrave\539i"
-, Quote '"'
-, Space
-, Text "a"
-, Space
-, Text "fost"
-, Space
-, Text "prima"
-, Space
-, Text "propozi\539ie"
-, Space
-, Text "rostit\259"
-, Space
-, Text "vreodat\259"
-, Space
-, Text "la"
-, Space
-, Quote '\''
-, Text "telefon"
-, Quote '\''
-, Text "."
-, ParBreak
-, Code
-    "test/typ/text/quotes-00.typ"
-    ( line 32 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "lang") (Literal (String "ru")) ])
-, SoftBreak
-, Quote '"'
-, Text "\1051\1086\1096\1072\1076\1100"
-, Space
-, Text "\1085\1077"
-, Space
-, Text "\1077\1089\1090"
-, Space
-, Text "\1089\1072\1083\1072\1090"
-, Space
-, Text "\1080\1079"
-, Space
-, Text "\1086\1075\1091\1088\1094\1086\1074"
-, Quote '"'
-, Space
-, Text "-"
-, Space
-, Text "\1101\1090\1086"
-, Space
-, Text "\1073\1099\1083\1072"
-, Space
-, Text "\1087\1077\1088\1074\1072\1103"
-, Space
-, Text "\1092\1088\1072\1079\1072,"
-, Space
-, Text "\1089\1082\1072\1079\1072\1085\1085\1072\1103"
-, Space
-, Text "\1087\1086"
-, Space
-, Quote '\''
-, Text "\1090\1077\1083\1077\1092\1086\1085\1091"
-, Quote '\''
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [
-“The horse eats no cucumber salad” was the first sentence ever uttered on the ‘telephone.’], 
-                      lang: "en"), 
-                 parbreak(), 
-                 text(body: [
-“Das Pferd frisst keinen Gurkensalat” war der erste jemals am ‘Fernsprecher” gesagte Satz.], 
-                      lang: "de"), 
-                 parbreak(), 
-                 text(body: [
-“Das Pferd frisst keinen Gurkensalat” war der erste jemals am ‘Fernsprecher” gesagte Satz.], 
-                      lang: "de", 
-                      region: "CH"), 
-                 parbreak(), 
-                 text(body: [
-“El caballo no come ensalada de pepino” fue la primera frase pronunciada por ‘teléfono’.], 
-                      lang: "es", 
-                      region: none), 
-                 parbreak(), 
-                 text(body: [
-“El caballo no come ensalada de pepino” fue la primera frase pronunciada por ‘teléfono’.], 
-                      lang: "es", 
-                      region: "MX"), 
-                 parbreak(), 
-                 text(body: [
-“Le cheval ne mange pas de salade de concombres” est la première phrase jamais prononcée au ‘téléphone’.], 
-                      lang: "fr", 
-                      region: none), 
-                 parbreak(), 
-                 text(body: [
-“Hevonen ei syö kurkkusalaattia” oli ensimmäinen koskaan ‘puhelimessa” lausuttu lause.], 
-                      lang: "fi", 
-                      region: none), 
-                 parbreak(), 
-                 text(body: [
-“הסוס לא אוכל סלט מלפפונים” היה המשפט ההראשון שנאמר ב ‘טלפון’.], 
-                      lang: "he", 
-                      region: none), 
-                 parbreak(), 
-                 text(body: [
-“Calul nu mănâncă salată de castraveți” a fost prima propoziție rostită vreodată la ‘telefon’.], 
-                      lang: "ro", 
-                      region: none), 
-                 parbreak(), 
-                 text(body: [
-“Лошадь не ест салат из огурцов” - это была первая фраза, сказанная по ‘телефону’.], 
-                      lang: "ru", 
-                      region: none), 
-                 parbreak() })
diff --git a/test/out/text/quotes-01.out b/test/out/text/quotes-01.out
deleted file mode 100644
--- a/test/out/text/quotes-01.out
+++ /dev/null
@@ -1,51 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/quotes-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/quotes-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/quotes-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Quote '"'
-, Quote '"'
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [””]), 
-                 parbreak() })
diff --git a/test/out/text/quotes-02.out b/test/out/text/quotes-02.out
deleted file mode 100644
--- a/test/out/text/quotes-02.out
+++ /dev/null
@@ -1,99 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/quotes-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/quotes-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/quotes-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "The"
-, Space
-, Text "5"
-, Quote '\''
-, Text "11"
-, Quote '"'
-, Space
-, Quote '\''
-, Text "quick"
-, Quote '\''
-, Space
-, Text "brown"
-, Space
-, Text "fox"
-, Space
-, Text "jumps"
-, Space
-, Text "over"
-, Space
-, Text "the"
-, Space
-, Quote '"'
-, Text "lazy"
-, Quote '"'
-, Space
-, Text "dog"
-, Quote '\''
-, Text "s"
-, Space
-, Text "ear"
-, Text "."
-, ParBreak
-, Text "He"
-, Space
-, Text "said"
-, Space
-, Quote '"'
-, Text "I"
-, Quote '\''
-, Text "m"
-, Space
-, Text "a"
-, Space
-, Text "big"
-, Space
-, Text "fella"
-, Text "."
-, Quote '"'
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [The 5’11” ‘quick” brown fox jumps over the “lazy” dog’s ear.]), 
-                 parbreak(), 
-                 text(body: [He said “I’m a big fella.”]), 
-                 parbreak() })
diff --git a/test/out/text/quotes-03.out b/test/out/text/quotes-03.out
deleted file mode 100644
--- a/test/out/text/quotes-03.out
+++ /dev/null
@@ -1,80 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/quotes-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/quotes-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/quotes-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "The"
-, Space
-, Text "5"
-, Text "'"
-, Text "11"
-, Text "\""
-, Space
-, Quote '\''
-, Text "quick"
-, Text "'"
-, Space
-, Text "brown"
-, Space
-, Text "fox"
-, Space
-, Text "jumps"
-, Space
-, Text "over"
-, Space
-, Text "the"
-, Space
-, Text "\""
-, Text "lazy"
-, Quote '"'
-, Space
-, Text "dog"
-, Text "'"
-, Text "s"
-, Space
-, Text "ear"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [The 5'11" ‘quick' brown fox jumps over the "lazy” dog's ear.]), 
-                 parbreak() })
diff --git a/test/out/text/quotes-04.out b/test/out/text/quotes-04.out
deleted file mode 100644
--- a/test/out/text/quotes-04.out
+++ /dev/null
@@ -1,100 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/quotes-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/quotes-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/quotes-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "He"
-, Quote '\''
-, Text "s"
-, Space
-, Text "told"
-, Space
-, Text "some"
-, Space
-, Text "books"
-, Space
-, Text "contain"
-, Space
-, Text "questionable"
-, Space
-, Quote '"'
-, Text "example"
-, Space
-, Text "text"
-, Quote '"'
-, Text "."
-, ParBreak
-, Code
-    "test/typ/text/quotes-04.typ"
-    ( line 5 , column 2 )
-    (Set
-       (Ident (Identifier "smartquote"))
-       [ KeyValArg (Identifier "enabled") (Literal (Boolean False)) ])
-, SoftBreak
-, Text "He"
-, Quote '\''
-, Text "s"
-, Space
-, Text "told"
-, Space
-, Text "some"
-, Space
-, Text "books"
-, Space
-, Text "contain"
-, Space
-, Text "questionable"
-, Space
-, Quote '"'
-, Text "example"
-, Space
-, Text "text"
-, Quote '"'
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [He’s told some books contain questionable “example text”.]), 
-                 parbreak(), 
-                 text(body: [
-He’s told some books contain questionable “example text”.]), 
-                 parbreak() })
diff --git a/test/out/text/quotes-05.out b/test/out/text/quotes-05.out
deleted file mode 100644
--- a/test/out/text/quotes-05.out
+++ /dev/null
@@ -1,128 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/quotes-05.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/quotes-05.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/quotes-05.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Quote '"'
-, Text "She"
-, Space
-, Text "suddenly"
-, Space
-, Text "started"
-, Space
-, Text "speaking"
-, Space
-, Text "french"
-, Text ":"
-, Space
-, Code
-    "test/typ/text/quotes-05.typ"
-    ( line 3 , column 41 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "lang") (Literal (String "fr"))
-       , BlockArg
-           [ Quote '\''
-           , Text "Je"
-           , Space
-           , Text "suis"
-           , Space
-           , Text "une"
-           , Space
-           , Text "banane"
-           , Text "."
-           , Quote '\''
-           ]
-       ])
-, Quote '"'
-, Space
-, Text "Roman"
-, Space
-, Text "told"
-, Space
-, Text "me"
-, Text "."
-, ParBreak
-, Text "Some"
-, Space
-, Text "people"
-, Quote '\''
-, Text "s"
-, Space
-, Text "thought"
-, Space
-, Text "on"
-, Space
-, Text "this"
-, Space
-, Text "would"
-, Space
-, Text "be"
-, Space
-, Code
-    "test/typ/text/quotes-05.typ"
-    ( line 5 , column 41 )
-    (Block
-       (Content
-          [ Code
-              "test/typ/text/quotes-05.typ"
-              ( line 5 , column 43 )
-              (Set
-                 (Ident (Identifier "smartquote"))
-                 [ KeyValArg (Identifier "enabled") (Literal (Boolean False)) ])
-          , Space
-          , Quote '"'
-          , Text "strange"
-          , Text "."
-          , Quote '"'
-          ]))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [“She suddenly started speaking french: ]), 
-                 text(body: text(body: [‘Je suis une banane.’]), 
-                      lang: "fr"), 
-                 text(body: [” Roman told me.]), 
-                 parbreak(), 
-                 text(body: [Some people’s thought on this would be ]), 
-                 text(body: [ “strange.”]), 
-                 parbreak() })
diff --git a/test/out/text/raw-00.out b/test/out/text/raw-00.out
deleted file mode 100644
--- a/test/out/text/raw-00.out
+++ /dev/null
@@ -1,56 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/raw-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/raw-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/raw-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, RawInline "A"
-, RawInline "B"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 raw(block: false, 
-                     lang: none, 
-                     text: "A"), 
-                 raw(block: false, 
-                     lang: none, 
-                     text: "B"), 
-                 parbreak() })
diff --git a/test/out/text/raw-01.out b/test/out/text/raw-01.out
deleted file mode 100644
--- a/test/out/text/raw-01.out
+++ /dev/null
@@ -1,60 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/raw-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/raw-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/raw-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, RawBlock "typ" "#let x = 1"
-, Space
-, HardBreak
-, RawBlock "typ" "#f(1)"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 raw(block: true, 
-                     lang: "typ", 
-                     text: "#let x = 1"), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 raw(block: true, 
-                     lang: "typ", 
-                     text: "#f(1)"), 
-                 parbreak() })
diff --git a/test/out/text/raw-02.out b/test/out/text/raw-02.out
deleted file mode 100644
--- a/test/out/text/raw-02.out
+++ /dev/null
@@ -1,62 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/raw-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/raw-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/raw-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, SoftBreak
-, Text "Text"
-, SoftBreak
-, RawBlock "rust" "fn code() {}\n"
-, SoftBreak
-, Text "Text"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-Text
-]), 
-                 raw(block: true, 
-                     lang: "rust", 
-                     text: "fn code() {}\n"), 
-                 text(body: [
-Text]), 
-                 parbreak() })
diff --git a/test/out/text/raw-03.out b/test/out/text/raw-03.out
deleted file mode 100644
--- a/test/out/text/raw-03.out
+++ /dev/null
@@ -1,52 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/raw-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/raw-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/raw-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, RawBlock "" "```backticks```\n"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 raw(block: true, 
-                     lang: none, 
-                     text: "```backticks```\n"), 
-                 parbreak() })
diff --git a/test/out/text/raw-04.out b/test/out/text/raw-04.out
deleted file mode 100644
--- a/test/out/text/raw-04.out
+++ /dev/null
@@ -1,121 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/raw-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/raw-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/raw-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, SoftBreak
-, Comment
-, Text "The"
-, Space
-, Text "keyword"
-, Space
-, RawBlock "rust" "let"
-, Text "."
-, ParBreak
-, Comment
-, Text "("
-, RawInline ""
-, Text ")"
-, Space
-, HardBreak
-, Text "("
-, RawInline " untrimmed "
-, Text ")"
-, Space
-, HardBreak
-, Text "("
-, RawBlock "" "trimmed` "
-, Text ")"
-, Space
-, HardBreak
-, Text "("
-, RawBlock "" "trimmed "
-, Text ")"
-, Space
-, HardBreak
-, Text "("
-, RawBlock "" "trimmed"
-, Text ")"
-, Space
-, HardBreak
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [The keyword ]), 
-                 raw(block: true, 
-                     lang: "rust", 
-                     text: "let"), 
-                 text(body: [.]), 
-                 parbreak(), 
-                 text(body: [(]), 
-                 raw(block: false, 
-                     lang: none, 
-                     text: ""), 
-                 text(body: [) ]), 
-                 linebreak(), 
-                 text(body: [(]), 
-                 raw(block: false, 
-                     lang: none, 
-                     text: " untrimmed "), 
-                 text(body: [) ]), 
-                 linebreak(), 
-                 text(body: [(]), 
-                 raw(block: true, 
-                     lang: none, 
-                     text: "trimmed` "), 
-                 text(body: [) ]), 
-                 linebreak(), 
-                 text(body: [(]), 
-                 raw(block: true, 
-                     lang: none, 
-                     text: "trimmed "), 
-                 text(body: [) ]), 
-                 linebreak(), 
-                 text(body: [(]), 
-                 raw(block: true, 
-                     lang: none, 
-                     text: "trimmed"), 
-                 text(body: [) ]), 
-                 linebreak(), 
-                 parbreak() })
diff --git a/test/out/text/raw-05.out b/test/out/text/raw-05.out
deleted file mode 100644
--- a/test/out/text/raw-05.out
+++ /dev/null
@@ -1,52 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/raw-05.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/raw-05.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/raw-05.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, RawInline "rust let"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 raw(block: false, 
-                     lang: none, 
-                     text: "rust let"), 
-                 parbreak() })
diff --git a/test/out/text/raw-06.out b/test/out/text/raw-06.out
deleted file mode 100644
--- a/test/out/text/raw-06.out
+++ /dev/null
@@ -1,54 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/raw-06.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/raw-06.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/raw-06.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Space
-, RawBlock "" "  A\n        B\n       C\n     "
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [ ]), 
-                 raw(block: true, 
-                     lang: none, 
-                     text: "  A\n        B\n       C\n     "), 
-                 parbreak() })
diff --git a/test/out/text/raw-07.out b/test/out/text/raw-07.out
deleted file mode 100644
--- a/test/out/text/raw-07.out
+++ /dev/null
@@ -1,63 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/raw-07.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/raw-07.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/raw-07.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/text/raw-07.typ"
-    ( line 3 , column 2 )
-    (Show
-       (Just (Ident (Identifier "raw")))
-       (Set
-          (Ident (Identifier "text"))
-          [ KeyValArg (Identifier "font") (Literal (String "Roboto")) ]))
-, SoftBreak
-, RawInline "Roboto"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 raw(block: false, 
-                     lang: none, 
-                     text: "Roboto"), 
-                 parbreak() })
diff --git a/test/out/text/raw-08.out b/test/out/text/raw-08.out
deleted file mode 100644
--- a/test/out/text/raw-08.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/text/raw-align-00.out b/test/out/text/raw-align-00.out
deleted file mode 100644
--- a/test/out/text/raw-align-00.out
+++ /dev/null
@@ -1,98 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/raw-align-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/raw-align-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/raw-align-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/text/raw-align-00.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "align"))
-       [ NormalArg (Ident (Identifier "center")) ])
-, SoftBreak
-, Code
-    "test/typ/text/raw-align-00.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 180.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/text/raw-align-00.typ"
-    ( line 5 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ NormalArg (Literal (Numeric 6.0 Pt)) ])
-, ParBreak
-, Code
-    "test/typ/text/raw-align-00.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 20)) ])
-, ParBreak
-, RawBlock
-    "py"
-    "def something(x):\n  return x\n\na = 342395823859823958329\nb = 324923\n"
-, ParBreak
-, Code
-    "test/typ/text/raw-align-00.typ"
-    ( line 17 , column 2 )
-    (FuncCall
-       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 20)) ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut], 
-                      size: 6.0pt), 
-                 parbreak(), 
-                 raw(block: true, 
-                     lang: "py", 
-                     text: "def something(x):\n  return x\n\na = 342395823859823958329\nb = 324923\n"), 
-                 parbreak(), 
-                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut], 
-                      size: 6.0pt), 
-                 parbreak() })
diff --git a/test/out/text/raw-align-01.out b/test/out/text/raw-align-01.out
deleted file mode 100644
--- a/test/out/text/raw-align-01.out
+++ /dev/null
@@ -1,107 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/raw-align-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/raw-align-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/raw-align-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/text/raw-align-01.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 180.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/text/raw-align-01.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ NormalArg (Literal (Numeric 6.0 Pt)) ])
-, ParBreak
-, Code
-    "test/typ/text/raw-align-01.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 20)) ])
-, SoftBreak
-, Code
-    "test/typ/text/raw-align-01.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "align"))
-       [ NormalArg (Ident (Identifier "center"))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "raw"))
-              [ KeyValArg (Identifier "lang") (Literal (String "typ"))
-              , KeyValArg (Identifier "block") (Literal (Boolean True))
-              , KeyValArg (Identifier "align") (Ident (Identifier "right"))
-              , NormalArg
-                  (Literal
-                     (String "#let f(x) = x\n#align(center, line(length: 1em))"))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/text/raw-align-01.typ"
-    ( line 13 , column 2 )
-    (FuncCall
-       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 20)) ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut], 
-                      size: 6.0pt), 
-                 text(body: [
-], size: 6.0pt), 
-                 align(alignment: center, 
-                       body: raw(align: right, 
-                                 block: true, 
-                                 lang: "typ", 
-                                 text: "#let f(x) = x\n#align(center, line(length: 1em))")), 
-                 text(body: [
-], size: 6.0pt), 
-                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut], 
-                      size: 6.0pt), 
-                 parbreak() })
diff --git a/test/out/text/raw-align-02.out b/test/out/text/raw-align-02.out
deleted file mode 100644
--- a/test/out/text/raw-align-02.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/text/raw-code-00.out b/test/out/text/raw-code-00.out
deleted file mode 100644
--- a/test/out/text/raw-code-00.out
+++ /dev/null
@@ -1,71 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/raw-code-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/raw-code-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/raw-code-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/text/raw-code-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 180.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/text/raw-code-00.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ NormalArg (Literal (Numeric 6.0 Pt)) ])
-, SoftBreak
-, RawBlock
-    "typ"
-    "= Chapter 1\n#lorem(100)\n\n#let hi = \"Hello World\"\n#show heading: emph\n"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-], size: 6.0pt), 
-                 raw(block: true, 
-                     lang: "typ", 
-                     text: "= Chapter 1\n#lorem(100)\n\n#let hi = \"Hello World\"\n#show heading: emph\n"), 
-                 parbreak() })
diff --git a/test/out/text/raw-code-01.out b/test/out/text/raw-code-01.out
deleted file mode 100644
--- a/test/out/text/raw-code-01.out
+++ /dev/null
@@ -1,70 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/raw-code-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/raw-code-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/raw-code-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/text/raw-code-01.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 180.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/text/raw-code-01.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ NormalArg (Literal (Numeric 6.0 Pt)) ])
-, ParBreak
-, RawBlock
-    "rust"
-    "/// A carefully designed state machine.\n#[derive(Debug)]\nenum State<'a> { A(u8), B(&'a str) }\n\nfn advance(state: State<'_>) -> State<'_> {\n    unimplemented!(\"state machine\")\n}\n"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 raw(block: true, 
-                     lang: "rust", 
-                     text: "/// A carefully designed state machine.\n#[derive(Debug)]\nenum State<'a> { A(u8), B(&'a str) }\n\nfn advance(state: State<'_>) -> State<'_> {\n    unimplemented!(\"state machine\")\n}\n"), 
-                 parbreak() })
diff --git a/test/out/text/raw-code-02.out b/test/out/text/raw-code-02.out
deleted file mode 100644
--- a/test/out/text/raw-code-02.out
+++ /dev/null
@@ -1,68 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/raw-code-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/raw-code-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/raw-code-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/text/raw-code-02.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 180.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/text/raw-code-02.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ NormalArg (Literal (Numeric 6.0 Pt)) ])
-, ParBreak
-, RawBlock "py" "import this\n\ndef hi():\n  print(\"Hi!\")\n"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 raw(block: true, 
-                     lang: "py", 
-                     text: "import this\n\ndef hi():\n  print(\"Hi!\")\n"), 
-                 parbreak() })
diff --git a/test/out/text/raw-code-03.out b/test/out/text/raw-code-03.out
deleted file mode 100644
--- a/test/out/text/raw-code-03.out
+++ /dev/null
@@ -1,70 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/raw-code-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/raw-code-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/raw-code-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/text/raw-code-03.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 180.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/text/raw-code-03.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ NormalArg (Literal (Numeric 6.0 Pt)) ])
-, ParBreak
-, RawBlock
-    "cpp"
-    "#include <iostream>\n\nint main() {\n  std::cout << \"Hello, world!\";\n}\n"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 raw(block: true, 
-                     lang: "cpp", 
-                     text: "#include <iostream>\n\nint main() {\n  std::cout << \"Hello, world!\";\n}\n"), 
-                 parbreak() })
diff --git a/test/out/text/raw-code-04.out b/test/out/text/raw-code-04.out
deleted file mode 100644
--- a/test/out/text/raw-code-04.out
+++ /dev/null
@@ -1,102 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/raw-code-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/raw-code-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/raw-code-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/text/raw-code-04.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 180.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/text/raw-code-04.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ NormalArg (Literal (Numeric 6.0 Pt)) ])
-, ParBreak
-, Code
-    "test/typ/text/raw-code-04.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "rect"))
-       [ KeyValArg
-           (Identifier "inset")
-           (Dict
-              [ Reg ( Ident (Identifier "x") , Literal (Numeric 4.0 Pt) )
-              , Reg ( Ident (Identifier "y") , Literal (Numeric 5.0 Pt) )
-              ])
-       , KeyValArg (Identifier "radius") (Literal (Numeric 4.0 Pt))
-       , KeyValArg
-           (Identifier "fill")
-           (FuncCall
-              (Ident (Identifier "rgb"))
-              [ NormalArg (Literal (Int 239))
-              , NormalArg (Literal (Int 241))
-              , NormalArg (Literal (Int 243))
-              ])
-       , BlockArg
-           [ SoftBreak
-           , RawBlock
-               "html"
-               "<!DOCTYPE html>\n  <html>\n    <head>\n      <meta charset=\"utf-8\">\n    </head>\n    <body>\n      <h1>Topic</h1>\n      <p>The Hypertext Markup Language.</p>\n      <script>\n        function foo(a, b) {\n          return a + b + \"string\";\n        }\n      </script>\n    </body>\n  </html>\n  "
-           , ParBreak
-           ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 rect(body: { text(body: [
-], 
-                                   size: 6.0pt), 
-                              raw(block: true, 
-                                  lang: "html", 
-                                  text: "<!DOCTYPE html>\n  <html>\n    <head>\n      <meta charset=\"utf-8\">\n    </head>\n    <body>\n      <h1>Topic</h1>\n      <p>The Hypertext Markup Language.</p>\n      <script>\n        function foo(a, b) {\n          return a + b + \"string\";\n        }\n      </script>\n    </body>\n  </html>\n  "), 
-                              parbreak() }, 
-                      fill: rgb(93%,94%,95%,100%), 
-                      inset: (x: 4.0pt, y: 5.0pt), 
-                      radius: 4.0pt), 
-                 parbreak() })
diff --git a/test/out/text/shaping-00.out b/test/out/text/shaping-00.out
deleted file mode 100644
--- a/test/out/text/shaping-00.out
+++ /dev/null
@@ -1,71 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/shaping-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/shaping-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/shaping-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "ABC\2309\2346\2366\2352\2381\2335\2350\2375\2306\2335"
-, ParBreak
-, Comment
-, Text "\2309\2346\2366\2352\2381\2335\2350\2375\2306\2335"
-, ParBreak
-, Comment
-, Comment
-, Text "\2309"
-, Space
-, Text "\2346\2366"
-, Space
-, Text "\2352\2381"
-, Space
-, Text "\2335"
-, Space
-, Text "\2350\2375\2306"
-, Space
-, Text "\2335"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [ABCअपार्टमेंट]), 
-                 parbreak(), 
-                 text(body: [अपार्टमेंट]), 
-                 parbreak(), 
-                 text(body: [अ पा र् ट में ट]), 
-                 parbreak() })
diff --git a/test/out/text/shaping-01.out b/test/out/text/shaping-01.out
deleted file mode 100644
--- a/test/out/text/shaping-01.out
+++ /dev/null
@@ -1,69 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/shaping-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/shaping-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/shaping-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/text/shaping-01.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "dir") (Ident (Identifier "rtl"))
-       , KeyValArg
-           (Identifier "font") (Literal (String "Noto Serif Hebrew"))
-       ])
-, SoftBreak
-, HardBreak
-, Text "\1496"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-], 
-                      dir: rtl, 
-                      font: "Noto Serif Hebrew"), 
-                 linebreak(), 
-                 text(body: [ט], 
-                      dir: rtl, 
-                      font: "Noto Serif Hebrew"), 
-                 parbreak() })
diff --git a/test/out/text/shift-00.out b/test/out/text/shift-00.out
deleted file mode 100644
--- a/test/out/text/shift-00.out
+++ /dev/null
@@ -1,163 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/shift-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/shift-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/shift-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/text/shift-00.typ"
-    ( line 2 , column 2 )
-    (FuncCall
-       (Ident (Identifier "table"))
-       [ KeyValArg (Identifier "columns") (Literal (Int 3))
-       , NormalArg (Block (Content [ Text "Typo" , Text "." ]))
-       , NormalArg (Block (Content [ Text "Fallb" , Text "." ]))
-       , NormalArg (Block (Content [ Text "Synth" ]))
-       , NormalArg
-           (Block
-              (Content
-                 [ Text "x"
-                 , Code
-                     "test/typ/text/shift-00.typ"
-                     ( line 5 , column 6 )
-                     (FuncCall (Ident (Identifier "super")) [ BlockArg [ Text "1" ] ])
-                 ]))
-       , NormalArg
-           (Block
-              (Content
-                 [ Text "x"
-                 , Code
-                     "test/typ/text/shift-00.typ"
-                     ( line 5 , column 20 )
-                     (FuncCall (Ident (Identifier "super")) [ BlockArg [ Text "5n" ] ])
-                 ]))
-       , NormalArg
-           (Block
-              (Content
-                 [ Text "x"
-                 , Code
-                     "test/typ/text/shift-00.typ"
-                     ( line 5 , column 35 )
-                     (FuncCall
-                        (Ident (Identifier "super"))
-                        [ BlockArg
-                            [ Text "2"
-                            , Space
-                            , Code
-                                "test/typ/text/shift-00.typ"
-                                ( line 5 , column 44 )
-                                (FuncCall
-                                   (Ident (Identifier "box"))
-                                   [ NormalArg
-                                       (FuncCall
-                                          (Ident (Identifier "square"))
-                                          [ KeyValArg (Identifier "size") (Literal (Numeric 6.0 Pt))
-                                          ])
-                                   ])
-                            ]
-                        ])
-                 ]))
-       , NormalArg
-           (Block
-              (Content
-                 [ Text "x"
-                 , Code
-                     "test/typ/text/shift-00.typ"
-                     ( line 6 , column 6 )
-                     (FuncCall (Ident (Identifier "sub")) [ BlockArg [ Text "1" ] ])
-                 ]))
-       , NormalArg
-           (Block
-              (Content
-                 [ Text "x"
-                 , Code
-                     "test/typ/text/shift-00.typ"
-                     ( line 6 , column 18 )
-                     (FuncCall (Ident (Identifier "sub")) [ BlockArg [ Text "5n" ] ])
-                 ]))
-       , NormalArg
-           (Block
-              (Content
-                 [ Text "x"
-                 , Code
-                     "test/typ/text/shift-00.typ"
-                     ( line 6 , column 31 )
-                     (FuncCall
-                        (Ident (Identifier "sub"))
-                        [ BlockArg
-                            [ Text "2"
-                            , Space
-                            , Code
-                                "test/typ/text/shift-00.typ"
-                                ( line 6 , column 38 )
-                                (FuncCall
-                                   (Ident (Identifier "box"))
-                                   [ NormalArg
-                                       (FuncCall
-                                          (Ident (Identifier "square"))
-                                          [ KeyValArg (Identifier "size") (Literal (Numeric 6.0 Pt))
-                                          ])
-                                   ])
-                            ]
-                        ])
-                 ]))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 table(children: (text(body: [Typo.]), 
-                                  text(body: [Fallb.]), 
-                                  text(body: [Synth]), 
-                                  { text(body: [x]), 
-                                    super(body: text(body: [1])) }, 
-                                  { text(body: [x]), 
-                                    super(body: text(body: [5n])) }, 
-                                  { text(body: [x]), 
-                                    super(body: { text(body: [2 ]), 
-                                                  box(body: square(size: 6.0pt)) }) }, 
-                                  { text(body: [x]), 
-                                    sub(body: text(body: [1])) }, 
-                                  { text(body: [x]), 
-                                    sub(body: text(body: [5n])) }, 
-                                  { text(body: [x]), 
-                                    sub(body: { text(body: [2 ]), 
-                                                box(body: square(size: 6.0pt)) }) }), 
-                       columns: 3), 
-                 parbreak() })
diff --git a/test/out/text/shift-01.out b/test/out/text/shift-01.out
deleted file mode 100644
--- a/test/out/text/shift-01.out
+++ /dev/null
@@ -1,92 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/shift-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/shift-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/shift-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/text/shift-01.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "super"))
-       [ KeyValArg (Identifier "typographic") (Literal (Boolean False))
-       , KeyValArg
-           (Identifier "baseline") (Negated (Literal (Numeric 0.25 Em)))
-       , KeyValArg (Identifier "size") (Literal (Numeric 0.7 Em))
-       ])
-, SoftBreak
-, Text "n"
-, Code
-    "test/typ/text/shift-01.typ"
-    ( line 3 , column 3 )
-    (FuncCall (Ident (Identifier "super")) [ BlockArg [ Text "1" ] ])
-, Text ","
-, Space
-, Text "n"
-, Code
-    "test/typ/text/shift-01.typ"
-    ( line 3 , column 15 )
-    (FuncCall (Ident (Identifier "sub")) [ BlockArg [ Text "2" ] ])
-, Text ","
-, Space
-, Ellipsis
-, Space
-, Text "n"
-, Code
-    "test/typ/text/shift-01.typ"
-    ( line 3 , column 29 )
-    (FuncCall (Ident (Identifier "super")) [ BlockArg [ Text "N" ] ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-n]), 
-                 super(baseline: -0.25em, 
-                       body: text(body: [1]), 
-                       size: 0.7em, 
-                       typographic: false), 
-                 text(body: [, n]), 
-                 sub(body: text(body: [2])), 
-                 text(body: [, … n]), 
-                 super(baseline: -0.25em, 
-                       body: text(body: [N]), 
-                       size: 0.7em, 
-                       typographic: false), 
-                 parbreak() })
diff --git a/test/out/text/shift-02.out b/test/out/text/shift-02.out
deleted file mode 100644
--- a/test/out/text/shift-02.out
+++ /dev/null
@@ -1,155 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/shift-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/shift-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/shift-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/text/shift-02.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "underline"))
-       [ KeyValArg (Identifier "stroke") (Literal (Numeric 0.5 Pt))
-       , KeyValArg (Identifier "offset") (Literal (Numeric 0.15 Em))
-       ])
-, SoftBreak
-, Code
-    "test/typ/text/shift-02.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "underline"))
-       [ BlockArg
-           [ Text "The"
-           , Space
-           , Text "claim"
-           , Code
-               "test/typ/text/shift-02.typ"
-               ( line 3 , column 22 )
-               (FuncCall
-                  (Ident (Identifier "super"))
-                  [ BlockArg [ Text "[" , Text "4" , Text "]" ] ])
-           ]
-       ])
-, Space
-, Text "has"
-, Space
-, Text "been"
-, Space
-, Text "disputed"
-, Text "."
-, Space
-, HardBreak
-, Text "The"
-, Space
-, Text "claim"
-, Code
-    "test/typ/text/shift-02.typ"
-    ( line 4 , column 11 )
-    (FuncCall
-       (Ident (Identifier "super"))
-       [ BlockArg
-           [ Code
-               "test/typ/text/shift-02.typ"
-               ( line 4 , column 18 )
-               (FuncCall
-                  (Ident (Identifier "underline"))
-                  [ BlockArg [ Text "[" , Text "4" , Text "]" ] ])
-           ]
-       ])
-, Space
-, Text "has"
-, Space
-, Text "been"
-, Space
-, Text "disputed"
-, Text "."
-, Space
-, HardBreak
-, Text "It"
-, Space
-, Text "really"
-, Space
-, Text "has"
-, Space
-, Text "been"
-, Code
-    "test/typ/text/shift-02.typ"
-    ( line 5 , column 20 )
-    (FuncCall
-       (Ident (Identifier "super"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "box"))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "text"))
-                     [ KeyValArg (Identifier "baseline") (Literal (Numeric 0.0 Pt))
-                     , NormalArg
-                         (FuncCall
-                            (Ident (Identifier "underline"))
-                            [ BlockArg [ Text "[" , Text "4" , Text "]" ] ])
-                     ])
-              ])
-       ])
-, Space
-, HardBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 underline(body: { text(body: [The claim]), 
-                                   super(body: text(body: [[4]])) }, 
-                           offset: 0.15em, 
-                           stroke: 0.5pt), 
-                 text(body: [ has been disputed. ]), 
-                 linebreak(), 
-                 text(body: [The claim]), 
-                 super(body: underline(body: text(body: [[4]]), 
-                                       offset: 0.15em, 
-                                       stroke: 0.5pt)), 
-                 text(body: [ has been disputed. ]), 
-                 linebreak(), 
-                 text(body: [It really has been]), 
-                 super(body: box(body: text(baseline: 0.0pt, 
-                                            body: underline(body: text(body: [[4]]), 
-                                                            offset: 0.15em, 
-                                                            stroke: 0.5pt)))), 
-                 text(body: [ ]), 
-                 linebreak() })
diff --git a/test/out/text/space-00.out b/test/out/text/space-00.out
deleted file mode 100644
--- a/test/out/text/space-00.out
+++ /dev/null
@@ -1,241 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/space-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/space-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/space-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "A"
-, Code
-    "test/typ/text/space-00.typ"
-    ( line 3 , column 3 )
-    (Let (BasicBind (Just (Identifier "x"))) (Literal (Int 1)))
-, Text "B"
-, Space
-, Code
-    "test/typ/text/space-00.typ"
-    ( line 3 , column 17 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "x"))
-       , NormalArg (Literal (Int 1))
-       ])
-, Space
-, HardBreak
-, Text "C"
-, Space
-, Code
-    "test/typ/text/space-00.typ"
-    ( line 4 , column 4 )
-    (Let (BasicBind (Just (Identifier "x"))) (Literal (Int 2)))
-, Text "D"
-, Space
-, Code
-    "test/typ/text/space-00.typ"
-    ( line 4 , column 17 )
-    (FuncCall
-       (Ident (Identifier "test"))
-       [ NormalArg (Ident (Identifier "x"))
-       , NormalArg (Literal (Int 2))
-       ])
-, Space
-, HardBreak
-, Text "E"
-, Code
-    "test/typ/text/space-00.typ"
-    ( line 5 , column 3 )
-    (If [ ( Literal (Boolean True) , Block (Content [ Text "F" ]) ) ])
-, Text "G"
-, Space
-, HardBreak
-, Text "H"
-, Space
-, Code
-    "test/typ/text/space-00.typ"
-    ( line 6 , column 4 )
-    (If
-       [ ( Literal (Boolean True)
-         , Block (CodeBlock [ Literal (String "I") ])
-         )
-       ])
-, Space
-, Text "J"
-, Space
-, HardBreak
-, Text "K"
-, Space
-, Code
-    "test/typ/text/space-00.typ"
-    ( line 7 , column 4 )
-    (If
-       [ ( Literal (Boolean True) , Block (Content [ Text "L" ]) )
-       , ( Literal (Boolean True) , Block (Content []) )
-       ])
-, Text "M"
-, Space
-, HardBreak
-, Code
-    "test/typ/text/space-00.typ"
-    ( line 8 , column 2 )
-    (Let (BasicBind (Just (Identifier "c"))) (Literal (Boolean True)))
-, Space
-, Text "N"
-, Code
-    "test/typ/text/space-00.typ"
-    ( line 8 , column 18 )
-    (While
-       (Ident (Identifier "c"))
-       (Block
-          (Content
-             [ Code
-                 "test/typ/text/space-00.typ"
-                 ( line 8 , column 28 )
-                 (Assign (Ident (Identifier "c")) (Literal (Boolean False)))
-             , Text "O"
-             ])))
-, Space
-, Text "P"
-, Space
-, HardBreak
-, Code
-    "test/typ/text/space-00.typ"
-    ( line 9 , column 2 )
-    (Let (BasicBind (Just (Identifier "c"))) (Literal (Boolean True)))
-, Space
-, Text "Q"
-, Space
-, Code
-    "test/typ/text/space-00.typ"
-    ( line 9 , column 19 )
-    (While
-       (Ident (Identifier "c"))
-       (Block
-          (CodeBlock
-             [ Assign (Ident (Identifier "c")) (Literal (Boolean False))
-             , Literal (String "R")
-             ])))
-, Space
-, Text "S"
-, Space
-, HardBreak
-, Text "T"
-, Code
-    "test/typ/text/space-00.typ"
-    ( line 10 , column 3 )
-    (For
-       (BasicBind Nothing)
-       (Array [ Reg (Literal None) ])
-       (Block (CodeBlock [ Literal (String "U") ])))
-, Text "V"
-, SoftBreak
-, Code
-    "test/typ/text/space-00.typ"
-    ( line 11 , column 2 )
-    (Let (BasicBind (Just (Identifier "foo"))) (Literal (String "A")))
-, Space
-, HardBreak
-, Code
-    "test/typ/text/space-00.typ"
-    ( line 12 , column 2 )
-    (Ident (Identifier "foo"))
-, Text "B"
-, Space
-, HardBreak
-, Code
-    "test/typ/text/space-00.typ"
-    ( line 13 , column 2 )
-    (Ident (Identifier "foo"))
-, Space
-, Text "B"
-, Space
-, HardBreak
-, Code
-    "test/typ/text/space-00.typ"
-    ( line 14 , column 2 )
-    (Ident (Identifier "foo"))
-, Text "B"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [A]), 
-                 text(body: [B ]), 
-                 text(body: [✅]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 text(body: [C ]), 
-                 text(body: [D ]), 
-                 text(body: [✅]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 text(body: [E]), 
-                 text(body: [F]), 
-                 text(body: [G ]), 
-                 linebreak(), 
-                 text(body: [H ]), 
-                 text(body: [I]), 
-                 text(body: [ J ]), 
-                 linebreak(), 
-                 text(body: [K ]), 
-                 text(body: [L]), 
-                 text(body: [M ]), 
-                 linebreak(), 
-                 text(body: [ N]), 
-                 text(body: [O]), 
-                 text(body: [ P ]), 
-                 linebreak(), 
-                 text(body: [ Q ]), 
-                 text(body: [R]), 
-                 text(body: [ S ]), 
-                 linebreak(), 
-                 text(body: [T]), 
-                 text(body: [U]), 
-                 text(body: [V
-]), 
-                 text(body: [ ]), 
-                 linebreak(), 
-                 text(body: [A]), 
-                 text(body: [B ]), 
-                 linebreak(), 
-                 text(body: [A]), 
-                 text(body: [ B ]), 
-                 linebreak(), 
-                 text(body: [A]), 
-                 text(body: [B]), 
-                 parbreak() })
diff --git a/test/out/text/space-01.out b/test/out/text/space-01.out
deleted file mode 100644
--- a/test/out/text/space-01.out
+++ /dev/null
@@ -1,82 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/space-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/space-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/space-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "A"
-, Comment
-, Text "B"
-, Comment
-, Text "C"
-, Space
-, HardBreak
-, Text "A"
-, Space
-, Comment
-, Space
-, Text "B"
-, Comment
-, Text "C"
-, Space
-, HardBreak
-, Text "A"
-, Space
-, Comment
-, Text "B"
-, Comment
-, Space
-, Text "C"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [A]), 
-                 text(body: [B]), 
-                 text(body: [C ]), 
-                 linebreak(), 
-                 text(body: [A ]), 
-                 text(body: [ B]), 
-                 text(body: [C ]), 
-                 linebreak(), 
-                 text(body: [A ]), 
-                 text(body: [B]), 
-                 text(body: [ C]), 
-                 parbreak() })
diff --git a/test/out/text/space-02.out b/test/out/text/space-02.out
deleted file mode 100644
--- a/test/out/text/space-02.out
+++ /dev/null
@@ -1,62 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/space-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/space-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/space-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "A"
-, Code
-    "test/typ/text/space-02.typ"
-    ( line 3 , column 3 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "font") (Literal (String "IBM Plex Serif"))
-       , BlockArg [ Space ]
-       ])
-, Text "B"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [A]), 
-                 text(body: text(body: [ ]), 
-                      font: "IBM Plex Serif"), 
-                 text(body: [B]), 
-                 parbreak() })
diff --git a/test/out/text/space-03.out b/test/out/text/space-03.out
deleted file mode 100644
--- a/test/out/text/space-03.out
+++ /dev/null
@@ -1,63 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/space-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/space-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/space-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "Left"
-, Space
-, Code
-    "test/typ/text/space-03.typ"
-    ( line 3 , column 7 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "font") (Literal (String "IBM Plex Serif"))
-       , BlockArg [ Text "Right" ]
-       ])
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [Left ]), 
-                 text(body: text(body: [Right]), 
-                      font: "IBM Plex Serif"), 
-                 text(body: [.]), 
-                 parbreak() })
diff --git a/test/out/text/space-04.out b/test/out/text/space-04.out
deleted file mode 100644
--- a/test/out/text/space-04.out
+++ /dev/null
@@ -1,70 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/space-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/space-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/space-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/text/space-04.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "align"))
-       [ NormalArg (Ident (Identifier "center"))
-       , BlockArg
-           [ Text "A"
-           , Space
-           , HardBreak
-           , Text "B"
-           , Space
-           , HardBreak
-           , Text "C"
-           ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 align(alignment: center, 
-                       body: { text(body: [A ]), 
-                               linebreak(), 
-                               text(body: [B ]), 
-                               linebreak(), 
-                               text(body: [C]) }), 
-                 parbreak() })
diff --git a/test/out/text/space-05.out b/test/out/text/space-05.out
deleted file mode 100644
--- a/test/out/text/space-05.out
+++ /dev/null
@@ -1,59 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/space-05.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/space-05.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/space-05.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "A"
-, Code
-    "test/typ/text/space-05.typ"
-    ( line 3 , column 3 )
-    (Literal (String "\n"))
-, Space
-, Text "B"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [A]), 
-                 text(body: [
-]), 
-                 text(body: [ B]), 
-                 parbreak() })
diff --git a/test/out/text/space-06.out b/test/out/text/space-06.out
deleted file mode 100644
--- a/test/out/text/space-06.out
+++ /dev/null
@@ -1,55 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/space-06.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/space-06.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/space-06.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "LLLLLLLLLLLLLLLLLL"
-, Space
-, Text "R"
-, Space
-, Emph [ Text "L" ]
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [LLLLLLLLLLLLLLLLLL R ]), 
-                 emph(body: text(body: [L])), 
-                 parbreak() })
diff --git a/test/out/text/symbol-00.out b/test/out/text/symbol-00.out
deleted file mode 100644
--- a/test/out/text/symbol-00.out
+++ /dev/null
@@ -1,164 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/symbol-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/symbol-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/symbol-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/text/symbol-00.typ"
-    ( line 2 , column 2 )
-    (FieldAccess
-       (Ident (Identifier "face")) (Ident (Identifier "emoji")))
-, SoftBreak
-, Code
-    "test/typ/text/symbol-00.typ"
-    ( line 3 , column 2 )
-    (FieldAccess
-       (Ident (Identifier "old"))
-       (FieldAccess
-          (Ident (Identifier "woman")) (Ident (Identifier "emoji"))))
-, SoftBreak
-, Code
-    "test/typ/text/symbol-00.typ"
-    ( line 4 , column 2 )
-    (FieldAccess
-       (Ident (Identifier "turtle")) (Ident (Identifier "emoji")))
-, ParBreak
-, Code
-    "test/typ/text/symbol-00.typ"
-    ( line 6 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg
-           (Identifier "font") (Literal (String "New Computer Modern Math"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/text/symbol-00.typ"
-    ( line 7 , column 2 )
-    (FieldAccess
-       (Ident (Identifier "arrow")) (Ident (Identifier "sym")))
-, SoftBreak
-, Code
-    "test/typ/text/symbol-00.typ"
-    ( line 8 , column 2 )
-    (FieldAccess
-       (Ident (Identifier "l"))
-       (FieldAccess
-          (Ident (Identifier "arrow")) (Ident (Identifier "sym"))))
-, SoftBreak
-, Code
-    "test/typ/text/symbol-00.typ"
-    ( line 9 , column 2 )
-    (FieldAccess
-       (Ident (Identifier "squiggly"))
-       (FieldAccess
-          (Ident (Identifier "r"))
-          (FieldAccess
-             (Ident (Identifier "arrow")) (Ident (Identifier "sym")))))
-, SoftBreak
-, Code
-    "test/typ/text/symbol-00.typ"
-    ( line 10 , column 2 )
-    (FieldAccess
-       (Ident (Identifier "hook"))
-       (FieldAccess
-          (Ident (Identifier "tr"))
-          (FieldAccess
-             (Ident (Identifier "arrow")) (Ident (Identifier "sym")))))
-, ParBreak
-, Code
-    "test/typ/text/symbol-00.typ"
-    ( line 12 , column 2 )
-    (FieldAccess
-       (Ident (Identifier "r"))
-       (FieldAccess
-          (Ident (Identifier "arrow")) (Ident (Identifier "sym"))))
-, Text "this"
-, Space
-, Text "and"
-, Space
-, Text "this"
-, Code
-    "test/typ/text/symbol-00.typ"
-    ( line 12 , column 28 )
-    (FieldAccess
-       (Ident (Identifier "l"))
-       (FieldAccess
-          (Ident (Identifier "arrow")) (Ident (Identifier "sym"))))
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [😀]), 
-                 text(body: [
-]), 
-                 text(body: [👵]), 
-                 text(body: [
-]), 
-                 text(body: [🐢]), 
-                 parbreak(), 
-                 text(body: [
-], 
-                      font: "New Computer Modern Math"), 
-                 text(body: [→], 
-                      font: "New Computer Modern Math"), 
-                 text(body: [
-], 
-                      font: "New Computer Modern Math"), 
-                 text(body: [←], 
-                      font: "New Computer Modern Math"), 
-                 text(body: [
-], 
-                      font: "New Computer Modern Math"), 
-                 text(body: [⇝], 
-                      font: "New Computer Modern Math"), 
-                 text(body: [
-], 
-                      font: "New Computer Modern Math"), 
-                 text(body: [⤤], 
-                      font: "New Computer Modern Math"), 
-                 parbreak(), 
-                 text(body: [→], 
-                      font: "New Computer Modern Math"), 
-                 text(body: [this and this], 
-                      font: "New Computer Modern Math"), 
-                 text(body: [←], 
-                      font: "New Computer Modern Math"), 
-                 parbreak() })
diff --git a/test/out/text/symbol-01.out b/test/out/text/symbol-01.out
deleted file mode 100644
--- a/test/out/text/symbol-01.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/text/tracking-spacing-00.out b/test/out/text/tracking-spacing-00.out
deleted file mode 100644
--- a/test/out/text/tracking-spacing-00.out
+++ /dev/null
@@ -1,74 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/tracking-spacing-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/tracking-spacing-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/tracking-spacing-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/text/tracking-spacing-00.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg
-           (Identifier "tracking") (Negated (Literal (Numeric 1.0e-2 Em)))
-       ])
-, SoftBreak
-, Text "I"
-, Space
-, Text "saw"
-, Space
-, Text "Zoe"
-, Space
-, Text "y\1243sterday,"
-, Space
-, Text "on"
-, Space
-, Text "the"
-, Space
-, Text "tram"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-I saw Zoe yӛsterday, on the tram.], 
-                      tracking: -1.0e-2em), 
-                 parbreak() })
diff --git a/test/out/text/tracking-spacing-01.out b/test/out/text/tracking-spacing-01.out
deleted file mode 100644
--- a/test/out/text/tracking-spacing-01.out
+++ /dev/null
@@ -1,68 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/tracking-spacing-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/tracking-spacing-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/tracking-spacing-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "I"
-, Quote '\''
-, Text "m"
-, Space
-, Text "in"
-, Code
-    "test/typ/text/tracking-spacing-01.typ"
-    ( line 3 , column 8 )
-    (FuncCall
-       (Ident (Identifier "text"))
-       [ KeyValArg
-           (Identifier "tracking")
-           (Plus (Literal (Numeric 0.15 Em)) (Literal (Numeric 1.5 Pt)))
-       , BlockArg [ Space , Text "spaace" ]
-       ])
-, Text "!"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [I’m in]), 
-                 text(body: text(body: [ spaace]), 
-                      tracking: 0.15em + 1.5pt), 
-                 text(body: [!]), 
-                 parbreak() })
diff --git a/test/out/text/tracking-spacing-02.out b/test/out/text/tracking-spacing-02.out
deleted file mode 100644
--- a/test/out/text/tracking-spacing-02.out
+++ /dev/null
@@ -1,78 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/tracking-spacing-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/tracking-spacing-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/tracking-spacing-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/text/tracking-spacing-02.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg
-           (Identifier "font")
-           (Array
-              [ Reg (Literal (String "PT Sans"))
-              , Reg (Literal (String "Noto Serif Hebrew"))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/text/tracking-spacing-02.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "tracking") (Literal (Numeric 0.3 Em)) ])
-, SoftBreak
-, Text "\1496\1462\1511\1505\1496"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-], 
-                      font: ("PT Sans", 
-                             "Noto Serif Hebrew")), 
-                 text(body: [
-טֶקסט], 
-                      font: ("PT Sans", 
-                             "Noto Serif Hebrew"), 
-                      tracking: 0.3em), 
-                 parbreak() })
diff --git a/test/out/text/tracking-spacing-03.out b/test/out/text/tracking-spacing-03.out
deleted file mode 100644
--- a/test/out/text/tracking-spacing-03.out
+++ /dev/null
@@ -1,59 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/tracking-spacing-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/tracking-spacing-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/tracking-spacing-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/text/tracking-spacing-03.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "tracking") (Literal (Numeric 0.3 Em)) ])
-, SoftBreak
-, Text "\1575\1604\1606\1589"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-النص], 
-                      tracking: 0.3em), 
-                 parbreak() })
diff --git a/test/out/text/tracking-spacing-04.out b/test/out/text/tracking-spacing-04.out
deleted file mode 100644
--- a/test/out/text/tracking-spacing-04.out
+++ /dev/null
@@ -1,66 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/tracking-spacing-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/tracking-spacing-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/tracking-spacing-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/text/tracking-spacing-04.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "spacing") (Literal (Numeric 1.0 Em)) ])
-, SoftBreak
-, Text "My"
-, Space
-, Text "text"
-, Space
-, Text "has"
-, Space
-, Text "spaces"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-My text has spaces.], 
-                      spacing: 1.0em), 
-                 parbreak() })
diff --git a/test/out/text/tracking-spacing-05.out b/test/out/text/tracking-spacing-05.out
deleted file mode 100644
--- a/test/out/text/tracking-spacing-05.out
+++ /dev/null
@@ -1,67 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/text/tracking-spacing-05.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/text/tracking-spacing-05.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/text/tracking-spacing-05.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/text/tracking-spacing-05.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg
-           (Identifier "spacing")
-           (Plus (Literal (Numeric 50.0 Percent)) (Literal (Numeric 1.0 Pt)))
-       ])
-, SoftBreak
-, Text "This"
-, Space
-, Text "is"
-, Space
-, Text "tight"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-This is tight.], 
-                      spacing: 1.0pt + 50%), 
-                 parbreak() })
diff --git a/test/out/visualize/image-00.out b/test/out/visualize/image-00.out
deleted file mode 100644
--- a/test/out/visualize/image-00.out
+++ /dev/null
@@ -1,78 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/visualize/image-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/visualize/image-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/visualize/image-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, SoftBreak
-, Comment
-, Code
-    "test/typ/visualize/image-00.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "image"))
-       [ NormalArg (Literal (String "/assets/files/rhino.png")) ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/visualize/image-00.typ"
-    ( line 8 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 60.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/visualize/image-00.typ"
-    ( line 9 , column 2 )
-    (FuncCall
-       (Ident (Identifier "image"))
-       [ NormalArg (Literal (String "/assets/files/tiger.jpg")) ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 image(path: "/assets/files/rhino.png"), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 image(path: "/assets/files/tiger.jpg"), 
-                 parbreak() })
diff --git a/test/out/visualize/image-01.out b/test/out/visualize/image-01.out
deleted file mode 100644
--- a/test/out/visualize/image-01.out
+++ /dev/null
@@ -1,122 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/visualize/image-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/visualize/image-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/visualize/image-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, SoftBreak
-, Comment
-, Code
-    "test/typ/visualize/image-01.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "image"))
-              [ NormalArg (Literal (String "/assets/files/rhino.png"))
-              , KeyValArg (Identifier "width") (Literal (Numeric 30.0 Pt))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/visualize/image-01.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "image"))
-              [ NormalArg (Literal (String "/assets/files/rhino.png"))
-              , KeyValArg (Identifier "height") (Literal (Numeric 30.0 Pt))
-              ])
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/visualize/image-01.typ"
-    ( line 9 , column 2 )
-    (FuncCall
-       (Ident (Identifier "image"))
-       [ NormalArg (Literal (String "/assets/files/monkey.svg"))
-       , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
-       , KeyValArg (Identifier "height") (Literal (Numeric 20.0 Pt))
-       , KeyValArg (Identifier "fit") (Literal (String "stretch"))
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/visualize/image-01.typ"
-    ( line 12 , column 2 )
-    (FuncCall
-       (Ident (Identifier "align"))
-       [ NormalArg
-           (Plus (Ident (Identifier "bottom")) (Ident (Identifier "right")))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "image"))
-              [ NormalArg (Literal (String "/assets/files/tiger.jpg"))
-              , KeyValArg (Identifier "width") (Literal (Numeric 40.0 Pt))
-              , KeyValArg (Identifier "alt") (Literal (String "A tiger"))
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 box(body: image(path: "/assets/files/rhino.png", 
-                                 width: 30.0pt)), 
-                 text(body: [
-]), 
-                 box(body: image(height: 30.0pt, 
-                                 path: "/assets/files/rhino.png")), 
-                 parbreak(), 
-                 image(fit: "stretch", 
-                       height: 20.0pt, 
-                       path: "/assets/files/monkey.svg", 
-                       width: 100%), 
-                 parbreak(), 
-                 align(alignment: Axes(right, bottom), 
-                       body: image(alt: "A tiger", 
-                                   path: "/assets/files/tiger.jpg", 
-                                   width: 40.0pt)), 
-                 parbreak() })
diff --git a/test/out/visualize/image-02.out b/test/out/visualize/image-02.out
deleted file mode 100644
--- a/test/out/visualize/image-02.out
+++ /dev/null
@@ -1,115 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/visualize/image-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/visualize/image-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/visualize/image-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/visualize/image-02.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 50.0 Pt))
-       , KeyValArg (Identifier "margin") (Literal (Numeric 0.0 Pt))
-       ])
-, SoftBreak
-, Code
-    "test/typ/visualize/image-02.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "grid"))
-       [ KeyValArg
-           (Identifier "columns")
-           (Array
-              [ Reg (Literal (Numeric 1.0 Fr))
-              , Reg (Literal (Numeric 1.0 Fr))
-              , Reg (Literal (Numeric 1.0 Fr))
-              ])
-       , KeyValArg (Identifier "rows") (Literal (Numeric 100.0 Percent))
-       , KeyValArg (Identifier "gutter") (Literal (Numeric 3.0 Pt))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "image"))
-              [ NormalArg (Literal (String "/assets/files/tiger.jpg"))
-              , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
-              , KeyValArg (Identifier "height") (Literal (Numeric 100.0 Percent))
-              , KeyValArg (Identifier "fit") (Literal (String "contain"))
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "image"))
-              [ NormalArg (Literal (String "/assets/files/tiger.jpg"))
-              , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
-              , KeyValArg (Identifier "height") (Literal (Numeric 100.0 Percent))
-              , KeyValArg (Identifier "fit") (Literal (String "cover"))
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "image"))
-              [ NormalArg (Literal (String "/assets/files/monkey.svg"))
-              , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
-              , KeyValArg (Identifier "height") (Literal (Numeric 100.0 Percent))
-              , KeyValArg (Identifier "fit") (Literal (String "stretch"))
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 grid(children: (image(fit: "contain", 
-                                       height: 100%, 
-                                       path: "/assets/files/tiger.jpg", 
-                                       width: 100%), 
-                                 image(fit: "cover", 
-                                       height: 100%, 
-                                       path: "/assets/files/tiger.jpg", 
-                                       width: 100%), 
-                                 image(fit: "stretch", 
-                                       height: 100%, 
-                                       path: "/assets/files/monkey.svg", 
-                                       width: 100%)), 
-                      columns: (1.0fr, 
-                                1.0fr, 
-                                1.0fr), 
-                      gutter: 3.0pt, 
-                      rows: 100%), 
-                 parbreak() })
diff --git a/test/out/visualize/image-03.out b/test/out/visualize/image-03.out
deleted file mode 100644
--- a/test/out/visualize/image-03.out
+++ /dev/null
@@ -1,67 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/visualize/image-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/visualize/image-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/visualize/image-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/visualize/image-03.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 60.0 Pt)) ])
-, SoftBreak
-, Text "Stuff"
-, SoftBreak
-, Code
-    "test/typ/visualize/image-03.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "image"))
-       [ NormalArg (Literal (String "/assets/files/rhino.png")) ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-Stuff
-]), 
-                 image(path: "/assets/files/rhino.png"), 
-                 parbreak() })
diff --git a/test/out/visualize/image-04.out b/test/out/visualize/image-04.out
deleted file mode 100644
--- a/test/out/visualize/image-04.out
+++ /dev/null
@@ -1,70 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/visualize/image-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/visualize/image-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/visualize/image-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Text "A"
-, Space
-, Code
-    "test/typ/visualize/image-04.typ"
-    ( line 3 , column 4 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "image"))
-              [ NormalArg (Literal (String "/assets/files/tiger.jpg"))
-              , KeyValArg (Identifier "height") (Literal (Numeric 1.0 Cm))
-              , KeyValArg (Identifier "width") (Literal (Numeric 80.0 Percent))
-              ])
-       ])
-, Space
-, Text "B"
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [A ]), 
-                 box(body: image(height: 1.0cm, 
-                                 path: "/assets/files/tiger.jpg", 
-                                 width: 80%)), 
-                 text(body: [ B]), 
-                 parbreak() })
diff --git a/test/out/visualize/image-05.out b/test/out/visualize/image-05.out
deleted file mode 100644
--- a/test/out/visualize/image-05.out
+++ /dev/null
@@ -1,55 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/visualize/image-05.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/visualize/image-05.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/visualize/image-05.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/visualize/image-05.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "image"))
-       [ NormalArg (Literal (String "/assets/files/pattern.svg")) ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 image(path: "/assets/files/pattern.svg"), 
-                 parbreak() })
diff --git a/test/out/visualize/image-06.out b/test/out/visualize/image-06.out
deleted file mode 100644
--- a/test/out/visualize/image-06.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/visualize/image-07.out b/test/out/visualize/image-07.out
deleted file mode 100644
--- a/test/out/visualize/image-07.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/visualize/image-08.out b/test/out/visualize/image-08.out
deleted file mode 100644
--- a/test/out/visualize/image-08.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/visualize/line-00.out b/test/out/visualize/line-00.out
deleted file mode 100644
--- a/test/out/visualize/line-00.out
+++ /dev/null
@@ -1,152 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/visualize/line-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/visualize/line-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/visualize/line-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/visualize/line-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 60.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/visualize/line-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ NormalArg
-           (Block
-              (CodeBlock
-                 [ Set
-                     (Ident (Identifier "line"))
-                     [ KeyValArg (Identifier "stroke") (Literal (Numeric 0.75 Pt)) ]
-                 , FuncCall
-                     (Ident (Identifier "place"))
-                     [ NormalArg
-                         (FuncCall
-                            (Ident (Identifier "line"))
-                            [ KeyValArg
-                                (Identifier "end")
-                                (Array
-                                   [ Reg (Literal (Numeric 0.4 Em))
-                                   , Reg (Literal (Numeric 0.0 Pt))
-                                   ])
-                            ])
-                     ]
-                 , FuncCall
-                     (Ident (Identifier "place"))
-                     [ NormalArg
-                         (FuncCall
-                            (Ident (Identifier "line"))
-                            [ KeyValArg
-                                (Identifier "start")
-                                (Array
-                                   [ Reg (Literal (Numeric 0.0 Pt))
-                                   , Reg (Literal (Numeric 0.4 Em))
-                                   ])
-                            , KeyValArg
-                                (Identifier "end")
-                                (Array
-                                   [ Reg (Literal (Numeric 0.0 Pt))
-                                   , Reg (Literal (Numeric 0.0 Pt))
-                                   ])
-                            ])
-                     ]
-                 , FuncCall
-                     (Ident (Identifier "line"))
-                     [ KeyValArg
-                         (Identifier "end")
-                         (Array
-                            [ Reg (Literal (Numeric 0.6 Em))
-                            , Reg (Literal (Numeric 0.6 Em))
-                            ])
-                     ]
-                 ]))
-       ])
-, Space
-, Text "Hello"
-, Space
-, Code
-    "test/typ/visualize/line-00.typ"
-    ( line 8 , column 11 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "line"))
-              [ KeyValArg (Identifier "length") (Literal (Numeric 1.0 Cm)) ])
-       ])
-, Text "!"
-, ParBreak
-, Code
-    "test/typ/visualize/line-00.typ"
-    ( line 10 , column 2 )
-    (FuncCall
-       (Ident (Identifier "line"))
-       [ KeyValArg
-           (Identifier "end")
-           (Array
-              [ Reg (Literal (Numeric 70.0 Percent))
-              , Reg (Literal (Numeric 50.0 Percent))
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 box(body: { place(body: line(end: (0.4em, 
-                                                    0.0pt), 
-                                              stroke: 0.75pt)), 
-                             place(body: line(end: (0.0pt, 
-                                                    0.0pt), 
-                                              start: (0.0pt, 
-                                                      0.4em), 
-                                              stroke: 0.75pt)), 
-                             line(end: (0.6em, 0.6em), 
-                                  stroke: 0.75pt) }), 
-                 text(body: [ Hello ]), 
-                 box(body: line(length: 1.0cm)), 
-                 text(body: [!]), 
-                 parbreak(), 
-                 line(end: (70%, 50%)), 
-                 parbreak() })
diff --git a/test/out/visualize/line-01.out b/test/out/visualize/line-01.out
deleted file mode 100644
--- a/test/out/visualize/line-01.out
+++ /dev/null
@@ -1,1179 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/visualize/line-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/visualize/line-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/visualize/line-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, SoftBreak
-, Code
-    "test/typ/visualize/line-01.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg
-           (Identifier "fill")
-           (FuncCall
-              (Ident (Identifier "rgb"))
-              [ NormalArg (Literal (String "0B1026")) ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/visualize/line-01.typ"
-    ( line 5 , column 2 )
-    (Set
-       (Ident (Identifier "line"))
-       [ KeyValArg (Identifier "stroke") (Ident (Identifier "white")) ])
-, ParBreak
-, Code
-    "test/typ/visualize/line-01.typ"
-    ( line 7 , column 2 )
-    (LetFunc
-       (Identifier "star")
-       [ NormalParam (Identifier "size")
-       , SinkParam (Just (Identifier "args"))
-       ]
-       (FuncCall
-          (Ident (Identifier "box"))
-          [ KeyValArg (Identifier "width") (Ident (Identifier "size"))
-          , KeyValArg (Identifier "height") (Ident (Identifier "size"))
-          , BlockArg
-              [ SoftBreak
-              , Code
-                  "test/typ/visualize/line-01.typ"
-                  ( line 8 , column 4 )
-                  (Set
-                     (Ident (Identifier "text"))
-                     [ KeyValArg (Identifier "spacing") (Literal (Numeric 0.0 Percent))
-                     ])
-              , SoftBreak
-              , Code
-                  "test/typ/visualize/line-01.typ"
-                  ( line 9 , column 4 )
-                  (Set
-                     (Ident (Identifier "line"))
-                     [ SpreadArg (Ident (Identifier "args")) ])
-              , SoftBreak
-              , Code
-                  "test/typ/visualize/line-01.typ"
-                  ( line 10 , column 4 )
-                  (Set
-                     (Ident (Identifier "align"))
-                     [ NormalArg (Ident (Identifier "left")) ])
-              , SoftBreak
-              , Code
-                  "test/typ/visualize/line-01.typ"
-                  ( line 11 , column 4 )
-                  (FuncCall
-                     (Ident (Identifier "v"))
-                     [ NormalArg (Literal (Numeric 30.0 Percent)) ])
-              , SoftBreak
-              , Code
-                  "test/typ/visualize/line-01.typ"
-                  ( line 12 , column 4 )
-                  (FuncCall
-                     (Ident (Identifier "place"))
-                     [ NormalArg
-                         (FuncCall
-                            (Ident (Identifier "line"))
-                            [ KeyValArg (Identifier "length") (Literal (Numeric 30.0 Percent))
-                            , KeyValArg
-                                (Identifier "start")
-                                (Array
-                                   [ Reg (Literal (Numeric 9.0 Percent))
-                                   , Reg (Literal (Numeric 2.0 Percent))
-                                   ])
-                            ])
-                     ])
-              , SoftBreak
-              , Code
-                  "test/typ/visualize/line-01.typ"
-                  ( line 13 , column 4 )
-                  (FuncCall
-                     (Ident (Identifier "place"))
-                     [ NormalArg
-                         (FuncCall
-                            (Ident (Identifier "line"))
-                            [ KeyValArg (Identifier "length") (Literal (Numeric 30.0 Percent))
-                            , KeyValArg
-                                (Identifier "start")
-                                (Array
-                                   [ Reg (Literal (Numeric 38.7 Percent))
-                                   , Reg (Literal (Numeric 2.0 Percent))
-                                   ])
-                            , KeyValArg
-                                (Identifier "angle") (Negated (Literal (Numeric 72.0 Deg)))
-                            ])
-                     ])
-              , SoftBreak
-              , Code
-                  "test/typ/visualize/line-01.typ"
-                  ( line 14 , column 4 )
-                  (FuncCall
-                     (Ident (Identifier "place"))
-                     [ NormalArg
-                         (FuncCall
-                            (Ident (Identifier "line"))
-                            [ KeyValArg (Identifier "length") (Literal (Numeric 30.0 Percent))
-                            , KeyValArg
-                                (Identifier "start")
-                                (Array
-                                   [ Reg (Literal (Numeric 57.5 Percent))
-                                   , Reg (Literal (Numeric 2.0 Percent))
-                                   ])
-                            , KeyValArg (Identifier "angle") (Literal (Numeric 252.0 Deg))
-                            ])
-                     ])
-              , SoftBreak
-              , Code
-                  "test/typ/visualize/line-01.typ"
-                  ( line 15 , column 4 )
-                  (FuncCall
-                     (Ident (Identifier "place"))
-                     [ NormalArg
-                         (FuncCall
-                            (Ident (Identifier "line"))
-                            [ KeyValArg (Identifier "length") (Literal (Numeric 30.0 Percent))
-                            , KeyValArg
-                                (Identifier "start")
-                                (Array
-                                   [ Reg (Literal (Numeric 57.3 Percent))
-                                   , Reg (Literal (Numeric 2.0 Percent))
-                                   ])
-                            ])
-                     ])
-              , SoftBreak
-              , Code
-                  "test/typ/visualize/line-01.typ"
-                  ( line 16 , column 4 )
-                  (FuncCall
-                     (Ident (Identifier "place"))
-                     [ NormalArg
-                         (FuncCall
-                            (Ident (Identifier "line"))
-                            [ KeyValArg
-                                (Identifier "length") (Negated (Literal (Numeric 30.0 Percent)))
-                            , KeyValArg
-                                (Identifier "start")
-                                (Array
-                                   [ Reg (Literal (Numeric 88.0 Percent))
-                                   , Reg (Literal (Numeric 2.0 Percent))
-                                   ])
-                            , KeyValArg
-                                (Identifier "angle") (Negated (Literal (Numeric 36.0 Deg)))
-                            ])
-                     ])
-              , SoftBreak
-              , Code
-                  "test/typ/visualize/line-01.typ"
-                  ( line 17 , column 4 )
-                  (FuncCall
-                     (Ident (Identifier "place"))
-                     [ NormalArg
-                         (FuncCall
-                            (Ident (Identifier "line"))
-                            [ KeyValArg (Identifier "length") (Literal (Numeric 30.0 Percent))
-                            , KeyValArg
-                                (Identifier "start")
-                                (Array
-                                   [ Reg (Literal (Numeric 73.3 Percent))
-                                   , Reg (Literal (Numeric 48.0 Percent))
-                                   ])
-                            , KeyValArg (Identifier "angle") (Literal (Numeric 252.0 Deg))
-                            ])
-                     ])
-              , SoftBreak
-              , Code
-                  "test/typ/visualize/line-01.typ"
-                  ( line 18 , column 4 )
-                  (FuncCall
-                     (Ident (Identifier "place"))
-                     [ NormalArg
-                         (FuncCall
-                            (Ident (Identifier "line"))
-                            [ KeyValArg
-                                (Identifier "length") (Negated (Literal (Numeric 30.0 Percent)))
-                            , KeyValArg
-                                (Identifier "start")
-                                (Array
-                                   [ Reg (Literal (Numeric 73.5 Percent))
-                                   , Reg (Literal (Numeric 48.0 Percent))
-                                   ])
-                            , KeyValArg (Identifier "angle") (Literal (Numeric 36.0 Deg))
-                            ])
-                     ])
-              , SoftBreak
-              , Code
-                  "test/typ/visualize/line-01.typ"
-                  ( line 19 , column 4 )
-                  (FuncCall
-                     (Ident (Identifier "place"))
-                     [ NormalArg
-                         (FuncCall
-                            (Ident (Identifier "line"))
-                            [ KeyValArg (Identifier "length") (Literal (Numeric 30.0 Percent))
-                            , KeyValArg
-                                (Identifier "start")
-                                (Array
-                                   [ Reg (Literal (Numeric 25.4 Percent))
-                                   , Reg (Literal (Numeric 48.0 Percent))
-                                   ])
-                            , KeyValArg
-                                (Identifier "angle") (Negated (Literal (Numeric 36.0 Deg)))
-                            ])
-                     ])
-              , SoftBreak
-              , Code
-                  "test/typ/visualize/line-01.typ"
-                  ( line 20 , column 4 )
-                  (FuncCall
-                     (Ident (Identifier "place"))
-                     [ NormalArg
-                         (FuncCall
-                            (Ident (Identifier "line"))
-                            [ KeyValArg (Identifier "length") (Literal (Numeric 30.0 Percent))
-                            , KeyValArg
-                                (Identifier "start")
-                                (Array
-                                   [ Reg (Literal (Numeric 25.6 Percent))
-                                   , Reg (Literal (Numeric 48.0 Percent))
-                                   ])
-                            , KeyValArg
-                                (Identifier "angle") (Negated (Literal (Numeric 72.0 Deg)))
-                            ])
-                     ])
-              , SoftBreak
-              , Code
-                  "test/typ/visualize/line-01.typ"
-                  ( line 21 , column 4 )
-                  (FuncCall
-                     (Ident (Identifier "place"))
-                     [ NormalArg
-                         (FuncCall
-                            (Ident (Identifier "line"))
-                            [ KeyValArg (Identifier "length") (Literal (Numeric 32.0 Percent))
-                            , KeyValArg
-                                (Identifier "start")
-                                (Array
-                                   [ Reg (Literal (Numeric 8.5 Percent))
-                                   , Reg (Literal (Numeric 2.0 Percent))
-                                   ])
-                            , KeyValArg (Identifier "angle") (Literal (Numeric 34.0 Deg))
-                            ])
-                     ])
-              , ParBreak
-              ]
-          ]))
-, ParBreak
-, Code
-    "test/typ/visualize/line-01.typ"
-    ( line 24 , column 2 )
-    (FuncCall
-       (Ident (Identifier "align"))
-       [ NormalArg (Ident (Identifier "center"))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "grid"))
-              [ KeyValArg (Identifier "columns") (Literal (Int 3))
-              , KeyValArg
-                  (Identifier "column-gutter") (Literal (Numeric 10.0 Pt))
-              , SpreadArg
-                  (Times
-                     (Array
-                        [ Reg
-                            (FuncCall
-                               (Ident (Identifier "star"))
-                               [ NormalArg (Literal (Numeric 20.0 Pt))
-                               , KeyValArg (Identifier "stroke") (Literal (Numeric 0.5 Pt))
-                               ])
-                        ])
-                     (Literal (Int 9)))
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 parbreak(), 
-                 align(alignment: center, 
-                       body: grid(children: (box(body: { text(body: [
-]), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         v(amount: 30%), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(length: 30%, 
-                                                                          start: (9%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: -72.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (38%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: 252.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (57%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(length: 30%, 
-                                                                          start: (57%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: -36.0deg, 
-                                                                          length: -30%, 
-                                                                          start: (88%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: 252.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (73%, 
-                                                                                  48%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: 36.0deg, 
-                                                                          length: -30%, 
-                                                                          start: (73%, 
-                                                                                  48%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: -36.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (25%, 
-                                                                                  48%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: -72.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (25%, 
-                                                                                  48%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: 34.0deg, 
-                                                                          length: 32%, 
-                                                                          start: (8%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         parbreak() }, 
-                                                 height: 20.0pt, 
-                                                 width: 20.0pt), 
-                                             box(body: { text(body: [
-]), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         v(amount: 30%), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(length: 30%, 
-                                                                          start: (9%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: -72.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (38%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: 252.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (57%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(length: 30%, 
-                                                                          start: (57%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: -36.0deg, 
-                                                                          length: -30%, 
-                                                                          start: (88%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: 252.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (73%, 
-                                                                                  48%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: 36.0deg, 
-                                                                          length: -30%, 
-                                                                          start: (73%, 
-                                                                                  48%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: -36.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (25%, 
-                                                                                  48%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: -72.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (25%, 
-                                                                                  48%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: 34.0deg, 
-                                                                          length: 32%, 
-                                                                          start: (8%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         parbreak() }, 
-                                                 height: 20.0pt, 
-                                                 width: 20.0pt), 
-                                             box(body: { text(body: [
-]), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         v(amount: 30%), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(length: 30%, 
-                                                                          start: (9%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: -72.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (38%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: 252.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (57%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(length: 30%, 
-                                                                          start: (57%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: -36.0deg, 
-                                                                          length: -30%, 
-                                                                          start: (88%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: 252.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (73%, 
-                                                                                  48%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: 36.0deg, 
-                                                                          length: -30%, 
-                                                                          start: (73%, 
-                                                                                  48%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: -36.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (25%, 
-                                                                                  48%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: -72.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (25%, 
-                                                                                  48%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: 34.0deg, 
-                                                                          length: 32%, 
-                                                                          start: (8%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         parbreak() }, 
-                                                 height: 20.0pt, 
-                                                 width: 20.0pt), 
-                                             box(body: { text(body: [
-]), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         v(amount: 30%), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(length: 30%, 
-                                                                          start: (9%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: -72.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (38%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: 252.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (57%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(length: 30%, 
-                                                                          start: (57%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: -36.0deg, 
-                                                                          length: -30%, 
-                                                                          start: (88%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: 252.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (73%, 
-                                                                                  48%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: 36.0deg, 
-                                                                          length: -30%, 
-                                                                          start: (73%, 
-                                                                                  48%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: -36.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (25%, 
-                                                                                  48%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: -72.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (25%, 
-                                                                                  48%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: 34.0deg, 
-                                                                          length: 32%, 
-                                                                          start: (8%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         parbreak() }, 
-                                                 height: 20.0pt, 
-                                                 width: 20.0pt), 
-                                             box(body: { text(body: [
-]), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         v(amount: 30%), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(length: 30%, 
-                                                                          start: (9%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: -72.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (38%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: 252.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (57%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(length: 30%, 
-                                                                          start: (57%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: -36.0deg, 
-                                                                          length: -30%, 
-                                                                          start: (88%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: 252.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (73%, 
-                                                                                  48%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: 36.0deg, 
-                                                                          length: -30%, 
-                                                                          start: (73%, 
-                                                                                  48%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: -36.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (25%, 
-                                                                                  48%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: -72.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (25%, 
-                                                                                  48%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: 34.0deg, 
-                                                                          length: 32%, 
-                                                                          start: (8%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         parbreak() }, 
-                                                 height: 20.0pt, 
-                                                 width: 20.0pt), 
-                                             box(body: { text(body: [
-]), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         v(amount: 30%), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(length: 30%, 
-                                                                          start: (9%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: -72.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (38%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: 252.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (57%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(length: 30%, 
-                                                                          start: (57%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: -36.0deg, 
-                                                                          length: -30%, 
-                                                                          start: (88%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: 252.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (73%, 
-                                                                                  48%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: 36.0deg, 
-                                                                          length: -30%, 
-                                                                          start: (73%, 
-                                                                                  48%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: -36.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (25%, 
-                                                                                  48%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: -72.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (25%, 
-                                                                                  48%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: 34.0deg, 
-                                                                          length: 32%, 
-                                                                          start: (8%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         parbreak() }, 
-                                                 height: 20.0pt, 
-                                                 width: 20.0pt), 
-                                             box(body: { text(body: [
-]), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         v(amount: 30%), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(length: 30%, 
-                                                                          start: (9%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: -72.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (38%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: 252.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (57%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(length: 30%, 
-                                                                          start: (57%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: -36.0deg, 
-                                                                          length: -30%, 
-                                                                          start: (88%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: 252.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (73%, 
-                                                                                  48%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: 36.0deg, 
-                                                                          length: -30%, 
-                                                                          start: (73%, 
-                                                                                  48%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: -36.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (25%, 
-                                                                                  48%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: -72.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (25%, 
-                                                                                  48%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: 34.0deg, 
-                                                                          length: 32%, 
-                                                                          start: (8%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         parbreak() }, 
-                                                 height: 20.0pt, 
-                                                 width: 20.0pt), 
-                                             box(body: { text(body: [
-]), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         v(amount: 30%), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(length: 30%, 
-                                                                          start: (9%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: -72.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (38%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: 252.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (57%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(length: 30%, 
-                                                                          start: (57%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: -36.0deg, 
-                                                                          length: -30%, 
-                                                                          start: (88%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: 252.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (73%, 
-                                                                                  48%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: 36.0deg, 
-                                                                          length: -30%, 
-                                                                          start: (73%, 
-                                                                                  48%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: -36.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (25%, 
-                                                                                  48%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: -72.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (25%, 
-                                                                                  48%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: 34.0deg, 
-                                                                          length: 32%, 
-                                                                          start: (8%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         parbreak() }, 
-                                                 height: 20.0pt, 
-                                                 width: 20.0pt), 
-                                             box(body: { text(body: [
-]), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         v(amount: 30%), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(length: 30%, 
-                                                                          start: (9%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: -72.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (38%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: 252.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (57%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(length: 30%, 
-                                                                          start: (57%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: -36.0deg, 
-                                                                          length: -30%, 
-                                                                          start: (88%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: 252.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (73%, 
-                                                                                  48%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: 36.0deg, 
-                                                                          length: -30%, 
-                                                                          start: (73%, 
-                                                                                  48%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: -36.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (25%, 
-                                                                                  48%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: -72.0deg, 
-                                                                          length: 30%, 
-                                                                          start: (25%, 
-                                                                                  48%), 
-                                                                          stroke: 0.5pt)), 
-                                                         text(body: [
-], 
-                                                              spacing: 0%), 
-                                                         place(body: line(angle: 34.0deg, 
-                                                                          length: 32%, 
-                                                                          start: (8%, 
-                                                                                  2%), 
-                                                                          stroke: 0.5pt)), 
-                                                         parbreak() }, 
-                                                 height: 20.0pt, 
-                                                 width: 20.0pt)), 
-                                  column-gutter: 10.0pt, 
-                                  columns: 3)), 
-                 parbreak() })
diff --git a/test/out/visualize/line-02.out b/test/out/visualize/line-02.out
deleted file mode 100644
--- a/test/out/visualize/line-02.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/visualize/line-03.out b/test/out/visualize/line-03.out
deleted file mode 100644
--- a/test/out/visualize/line-03.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/visualize/path-00.out b/test/out/visualize/path-00.out
deleted file mode 100644
--- a/test/out/visualize/path-00.out
+++ /dev/null
@@ -1,305 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/visualize/path-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/visualize/path-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/visualize/path-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/visualize/path-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 200.0 Pt))
-       , KeyValArg (Identifier "width") (Literal (Numeric 200.0 Pt))
-       ])
-, SoftBreak
-, Code
-    "test/typ/visualize/path-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "table"))
-       [ KeyValArg
-           (Identifier "columns")
-           (Array
-              [ Reg (Literal (Numeric 1.0 Fr))
-              , Reg (Literal (Numeric 1.0 Fr))
-              ])
-       , KeyValArg
-           (Identifier "rows")
-           (Array
-              [ Reg (Literal (Numeric 1.0 Fr))
-              , Reg (Literal (Numeric 1.0 Fr))
-              ])
-       , KeyValArg
-           (Identifier "align")
-           (Plus (Ident (Identifier "center")) (Ident (Identifier "horizon")))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "path"))
-              [ KeyValArg (Identifier "fill") (Ident (Identifier "red"))
-              , KeyValArg (Identifier "closed") (Literal (Boolean True))
-              , NormalArg
-                  (Array
-                     [ Reg
-                         (Array
-                            [ Reg (Literal (Numeric 0.0 Percent))
-                            , Reg (Literal (Numeric 0.0 Percent))
-                            ])
-                     , Reg
-                         (Array
-                            [ Reg (Literal (Numeric 4.0 Percent))
-                            , Reg (Negated (Literal (Numeric 4.0 Percent)))
-                            ])
-                     ])
-              , NormalArg
-                  (Array
-                     [ Reg
-                         (Array
-                            [ Reg (Literal (Numeric 50.0 Percent))
-                            , Reg (Literal (Numeric 50.0 Percent))
-                            ])
-                     , Reg
-                         (Array
-                            [ Reg (Literal (Numeric 4.0 Percent))
-                            , Reg (Negated (Literal (Numeric 4.0 Percent)))
-                            ])
-                     ])
-              , NormalArg
-                  (Array
-                     [ Reg
-                         (Array
-                            [ Reg (Literal (Numeric 0.0 Percent))
-                            , Reg (Literal (Numeric 50.0 Percent))
-                            ])
-                     , Reg
-                         (Array
-                            [ Reg (Literal (Numeric 4.0 Percent))
-                            , Reg (Literal (Numeric 4.0 Percent))
-                            ])
-                     ])
-              , NormalArg
-                  (Array
-                     [ Reg
-                         (Array
-                            [ Reg (Literal (Numeric 50.0 Percent))
-                            , Reg (Literal (Numeric 0.0 Percent))
-                            ])
-                     , Reg
-                         (Array
-                            [ Reg (Literal (Numeric 4.0 Percent))
-                            , Reg (Literal (Numeric 4.0 Percent))
-                            ])
-                     ])
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "path"))
-              [ KeyValArg (Identifier "fill") (Ident (Identifier "purple"))
-              , KeyValArg (Identifier "stroke") (Literal (Numeric 1.0 Pt))
-              , NormalArg
-                  (Array
-                     [ Reg (Literal (Numeric 0.0 Pt))
-                     , Reg (Literal (Numeric 0.0 Pt))
-                     ])
-              , NormalArg
-                  (Array
-                     [ Reg (Literal (Numeric 30.0 Pt))
-                     , Reg (Literal (Numeric 30.0 Pt))
-                     ])
-              , NormalArg
-                  (Array
-                     [ Reg (Literal (Numeric 0.0 Pt))
-                     , Reg (Literal (Numeric 30.0 Pt))
-                     ])
-              , NormalArg
-                  (Array
-                     [ Reg (Literal (Numeric 30.0 Pt))
-                     , Reg (Literal (Numeric 0.0 Pt))
-                     ])
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "path"))
-              [ KeyValArg (Identifier "fill") (Ident (Identifier "blue"))
-              , KeyValArg (Identifier "stroke") (Literal (Numeric 1.0 Pt))
-              , KeyValArg (Identifier "closed") (Literal (Boolean True))
-              , NormalArg
-                  (Array
-                     [ Reg
-                         (Array
-                            [ Reg (Literal (Numeric 30.0 Percent))
-                            , Reg (Literal (Numeric 0.0 Percent))
-                            ])
-                     , Reg
-                         (Array
-                            [ Reg (Literal (Numeric 35.0 Percent))
-                            , Reg (Literal (Numeric 30.0 Percent))
-                            ])
-                     , Reg
-                         (Array
-                            [ Reg (Negated (Literal (Numeric 20.0 Percent)))
-                            , Reg (Literal (Numeric 0.0 Percent))
-                            ])
-                     ])
-              , NormalArg
-                  (Array
-                     [ Reg
-                         (Array
-                            [ Reg (Literal (Numeric 30.0 Percent))
-                            , Reg (Literal (Numeric 60.0 Percent))
-                            ])
-                     , Reg
-                         (Array
-                            [ Reg (Negated (Literal (Numeric 20.0 Percent)))
-                            , Reg (Literal (Numeric 0.0 Percent))
-                            ])
-                     , Reg
-                         (Array
-                            [ Reg (Literal (Numeric 0.0 Percent))
-                            , Reg (Literal (Numeric 0.0 Percent))
-                            ])
-                     ])
-              , NormalArg
-                  (Array
-                     [ Reg
-                         (Array
-                            [ Reg (Literal (Numeric 50.0 Percent))
-                            , Reg (Literal (Numeric 30.0 Percent))
-                            ])
-                     , Reg
-                         (Array
-                            [ Reg (Literal (Numeric 60.0 Percent))
-                            , Reg (Negated (Literal (Numeric 30.0 Percent)))
-                            ])
-                     , Reg
-                         (Array
-                            [ Reg (Literal (Numeric 60.0 Percent))
-                            , Reg (Literal (Numeric 0.0 Percent))
-                            ])
-                     ])
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "path"))
-              [ KeyValArg (Identifier "stroke") (Literal (Numeric 5.0 Pt))
-              , KeyValArg (Identifier "closed") (Literal (Boolean True))
-              , NormalArg
-                  (Array
-                     [ Reg (Literal (Numeric 0.0 Pt))
-                     , Reg (Literal (Numeric 30.0 Pt))
-                     ])
-              , NormalArg
-                  (Array
-                     [ Reg (Literal (Numeric 30.0 Pt))
-                     , Reg (Literal (Numeric 30.0 Pt))
-                     ])
-              , NormalArg
-                  (Array
-                     [ Reg (Literal (Numeric 15.0 Pt))
-                     , Reg (Literal (Numeric 0.0 Pt))
-                     ])
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 table(align: Axes(center, horizon), 
-                       children: (path(closed: true, 
-                                       fill: rgb(100%,25%,21%,100%), 
-                                       vertices: (((0%, 
-                                                    0%), 
-                                                   (4%, 
-                                                    -4%)), 
-                                                  ((50%, 
-                                                    50%), 
-                                                   (4%, 
-                                                    -4%)), 
-                                                  ((0%, 
-                                                    50%), 
-                                                   (4%, 
-                                                    4%)), 
-                                                  ((50%, 
-                                                    0%), 
-                                                   (4%, 
-                                                    4%)))), 
-                                  path(fill: rgb(69%,5%,78%,100%), 
-                                       stroke: 1.0pt, 
-                                       vertices: ((0.0pt, 
-                                                   0.0pt), 
-                                                  (30.0pt, 
-                                                   30.0pt), 
-                                                  (0.0pt, 
-                                                   30.0pt), 
-                                                  (30.0pt, 
-                                                   0.0pt))), 
-                                  path(closed: true, 
-                                       fill: rgb(0%,45%,85%,100%), 
-                                       stroke: 1.0pt, 
-                                       vertices: (((30%, 
-                                                    0%), 
-                                                   (35%, 
-                                                    30%), 
-                                                   (-20%, 
-                                                    0%)), 
-                                                  ((30%, 
-                                                    60%), 
-                                                   (-20%, 
-                                                    0%), 
-                                                   (0%, 
-                                                    0%)), 
-                                                  ((50%, 
-                                                    30%), 
-                                                   (60%, 
-                                                    -30%), 
-                                                   (60%, 
-                                                    0%)))), 
-                                  path(closed: true, 
-                                       stroke: 5.0pt, 
-                                       vertices: ((0.0pt, 
-                                                   30.0pt), 
-                                                  (30.0pt, 
-                                                   30.0pt), 
-                                                  (15.0pt, 
-                                                   0.0pt)))), 
-                       columns: (1.0fr, 1.0fr), 
-                       rows: (1.0fr, 1.0fr)), 
-                 parbreak() })
diff --git a/test/out/visualize/path-01.out b/test/out/visualize/path-01.out
deleted file mode 100644
--- a/test/out/visualize/path-01.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/visualize/path-02.out b/test/out/visualize/path-02.out
deleted file mode 100644
--- a/test/out/visualize/path-02.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/visualize/path-03.out b/test/out/visualize/path-03.out
deleted file mode 100644
--- a/test/out/visualize/path-03.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/visualize/polygon-00.out b/test/out/visualize/polygon-00.out
deleted file mode 100644
--- a/test/out/visualize/polygon-00.out
+++ /dev/null
@@ -1,349 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/visualize/polygon-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/visualize/polygon-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/visualize/polygon-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/visualize/polygon-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 50.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/visualize/polygon-00.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "polygon"))
-       [ KeyValArg (Identifier "stroke") (Literal (Numeric 0.75 Pt))
-       , KeyValArg (Identifier "fill") (Ident (Identifier "blue"))
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/visualize/polygon-00.typ"
-    ( line 6 , column 2 )
-    (FuncCall (Ident (Identifier "polygon")) [])
-, SoftBreak
-, Code
-    "test/typ/visualize/polygon-00.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "polygon"))
-       [ NormalArg
-           (Array
-              [ Reg (Literal (Numeric 0.0 Em))
-              , Reg (Literal (Numeric 0.0 Pt))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/visualize/polygon-00.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "polygon"))
-       [ NormalArg
-           (Array
-              [ Reg (Literal (Numeric 0.0 Pt))
-              , Reg (Literal (Numeric 0.0 Pt))
-              ])
-       , NormalArg
-           (Array
-              [ Reg (Literal (Numeric 10.0 Pt))
-              , Reg (Literal (Numeric 0.0 Pt))
-              ])
-       ])
-, ParBreak
-, Code
-    "test/typ/visualize/polygon-00.typ"
-    ( line 10 , column 2 )
-    (FuncCall
-       (Ident (Identifier "polygon"))
-       [ NormalArg
-           (Array
-              [ Reg (Literal (Numeric 5.0 Pt))
-              , Reg (Literal (Numeric 0.0 Pt))
-              ])
-       , NormalArg
-           (Array
-              [ Reg (Literal (Numeric 0.0 Pt))
-              , Reg (Literal (Numeric 10.0 Pt))
-              ])
-       , NormalArg
-           (Array
-              [ Reg (Literal (Numeric 10.0 Pt))
-              , Reg (Literal (Numeric 10.0 Pt))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/visualize/polygon-00.typ"
-    ( line 11 , column 2 )
-    (FuncCall
-       (Ident (Identifier "polygon"))
-       [ NormalArg
-           (Array
-              [ Reg (Literal (Numeric 0.0 Pt))
-              , Reg (Literal (Numeric 0.0 Pt))
-              ])
-       , NormalArg
-           (Array
-              [ Reg (Literal (Numeric 5.0 Pt))
-              , Reg (Literal (Numeric 5.0 Pt))
-              ])
-       , NormalArg
-           (Array
-              [ Reg (Literal (Numeric 10.0 Pt))
-              , Reg (Literal (Numeric 0.0 Pt))
-              ])
-       , NormalArg
-           (Array
-              [ Reg (Literal (Numeric 15.0 Pt))
-              , Reg (Literal (Numeric 5.0 Pt))
-              ])
-       , NormalArg
-           (Array
-              [ Reg (Literal (Numeric 5.0 Pt))
-              , Reg (Literal (Numeric 10.0 Pt))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/visualize/polygon-00.typ"
-    ( line 16 , column 2 )
-    (FuncCall
-       (Ident (Identifier "polygon"))
-       [ KeyValArg (Identifier "stroke") (Literal None)
-       , NormalArg
-           (Array
-              [ Reg (Literal (Numeric 5.0 Pt))
-              , Reg (Literal (Numeric 0.0 Pt))
-              ])
-       , NormalArg
-           (Array
-              [ Reg (Literal (Numeric 0.0 Pt))
-              , Reg (Literal (Numeric 10.0 Pt))
-              ])
-       , NormalArg
-           (Array
-              [ Reg (Literal (Numeric 10.0 Pt))
-              , Reg (Literal (Numeric 10.0 Pt))
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/visualize/polygon-00.typ"
-    ( line 17 , column 2 )
-    (FuncCall
-       (Ident (Identifier "polygon"))
-       [ KeyValArg (Identifier "stroke") (Literal (Numeric 3.0 Pt))
-       , KeyValArg (Identifier "fill") (Literal None)
-       , NormalArg
-           (Array
-              [ Reg (Literal (Numeric 5.0 Pt))
-              , Reg (Literal (Numeric 0.0 Pt))
-              ])
-       , NormalArg
-           (Array
-              [ Reg (Literal (Numeric 0.0 Pt))
-              , Reg (Literal (Numeric 10.0 Pt))
-              ])
-       , NormalArg
-           (Array
-              [ Reg (Literal (Numeric 10.0 Pt))
-              , Reg (Literal (Numeric 10.0 Pt))
-              ])
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/visualize/polygon-00.typ"
-    ( line 20 , column 2 )
-    (FuncCall
-       (Ident (Identifier "polygon"))
-       [ NormalArg
-           (Array
-              [ Reg (Literal (Numeric 0.0 Pt))
-              , Reg (Literal (Numeric 0.0 Pt))
-              ])
-       , NormalArg
-           (Array
-              [ Reg (Literal (Numeric 100.0 Percent))
-              , Reg (Literal (Numeric 5.0 Pt))
-              ])
-       , NormalArg
-           (Array
-              [ Reg (Literal (Numeric 50.0 Percent))
-              , Reg (Literal (Numeric 10.0 Pt))
-              ])
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/visualize/polygon-00.typ"
-    ( line 23 , column 2 )
-    (FuncCall
-       (Ident (Identifier "polygon"))
-       [ NormalArg
-           (Array
-              [ Reg (Literal (Numeric 0.0 Pt))
-              , Reg (Literal (Numeric 5.0 Pt))
-              ])
-       , NormalArg
-           (Array
-              [ Reg (Literal (Numeric 5.0 Pt))
-              , Reg (Literal (Numeric 0.0 Pt))
-              ])
-       , NormalArg
-           (Array
-              [ Reg (Literal (Numeric 0.0 Pt))
-              , Reg (Literal (Numeric 10.0 Pt))
-              ])
-       , NormalArg
-           (Array
-              [ Reg (Literal (Numeric 5.0 Pt))
-              , Reg (Literal (Numeric 15.0 Pt))
-              ])
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/visualize/polygon-00.typ"
-    ( line 26 , column 2 )
-    (FuncCall
-       (Ident (Identifier "polygon"))
-       [ NormalArg
-           (Array
-              [ Reg (Literal (Numeric 0.0 Pt))
-              , Reg (Literal (Numeric 10.0 Pt))
-              ])
-       , NormalArg
-           (Array
-              [ Reg (Literal (Numeric 30.0 Pt))
-              , Reg (Literal (Numeric 20.0 Pt))
-              ])
-       , NormalArg
-           (Array
-              [ Reg (Literal (Numeric 0.0 Pt))
-              , Reg (Literal (Numeric 30.0 Pt))
-              ])
-       , NormalArg
-           (Array
-              [ Reg (Literal (Numeric 20.0 Pt))
-              , Reg (Literal (Numeric 0.0 Pt))
-              ])
-       , NormalArg
-           (Array
-              [ Reg (Literal (Numeric 20.0 Pt))
-              , Reg (Literal (Numeric 35.0 Pt))
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 polygon(fill: rgb(0%,45%,85%,100%), 
-                         stroke: 0.75pt, 
-                         vertices: ()), 
-                 text(body: [
-]), 
-                 polygon(fill: rgb(0%,45%,85%,100%), 
-                         stroke: 0.75pt, 
-                         vertices: ((0.0em, 0.0pt))), 
-                 text(body: [
-]), 
-                 polygon(fill: rgb(0%,45%,85%,100%), 
-                         stroke: 0.75pt, 
-                         vertices: ((0.0pt, 0.0pt), 
-                                    (10.0pt, 0.0pt))), 
-                 parbreak(), 
-                 polygon(fill: rgb(0%,45%,85%,100%), 
-                         stroke: 0.75pt, 
-                         vertices: ((5.0pt, 0.0pt), 
-                                    (0.0pt, 10.0pt), 
-                                    (10.0pt, 10.0pt))), 
-                 text(body: [
-]), 
-                 polygon(fill: rgb(0%,45%,85%,100%), 
-                         stroke: 0.75pt, 
-                         vertices: ((0.0pt, 0.0pt), 
-                                    (5.0pt, 5.0pt), 
-                                    (10.0pt, 0.0pt), 
-                                    (15.0pt, 5.0pt), 
-                                    (5.0pt, 10.0pt))), 
-                 text(body: [
-]), 
-                 polygon(fill: rgb(0%,45%,85%,100%), 
-                         stroke: none, 
-                         vertices: ((5.0pt, 0.0pt), 
-                                    (0.0pt, 10.0pt), 
-                                    (10.0pt, 10.0pt))), 
-                 text(body: [
-]), 
-                 polygon(fill: none, 
-                         stroke: 3.0pt, 
-                         vertices: ((5.0pt, 0.0pt), 
-                                    (0.0pt, 10.0pt), 
-                                    (10.0pt, 10.0pt))), 
-                 parbreak(), 
-                 polygon(fill: rgb(0%,45%,85%,100%), 
-                         stroke: 0.75pt, 
-                         vertices: ((0.0pt, 0.0pt), 
-                                    (100%, 5.0pt), 
-                                    (50%, 10.0pt))), 
-                 parbreak(), 
-                 polygon(fill: rgb(0%,45%,85%,100%), 
-                         stroke: 0.75pt, 
-                         vertices: ((0.0pt, 5.0pt), 
-                                    (5.0pt, 0.0pt), 
-                                    (0.0pt, 10.0pt), 
-                                    (5.0pt, 15.0pt))), 
-                 parbreak(), 
-                 polygon(fill: rgb(0%,45%,85%,100%), 
-                         stroke: 0.75pt, 
-                         vertices: ((0.0pt, 10.0pt), 
-                                    (30.0pt, 20.0pt), 
-                                    (0.0pt, 30.0pt), 
-                                    (20.0pt, 0.0pt), 
-                                    (20.0pt, 35.0pt))), 
-                 parbreak() })
diff --git a/test/out/visualize/polygon-01.out b/test/out/visualize/polygon-01.out
deleted file mode 100644
--- a/test/out/visualize/polygon-01.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/visualize/shape-aspect-00.out b/test/out/visualize/shape-aspect-00.out
deleted file mode 100644
--- a/test/out/visualize/shape-aspect-00.out
+++ /dev/null
@@ -1,130 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/visualize/shape-aspect-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/visualize/shape-aspect-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/visualize/shape-aspect-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Comment
-, Code
-    "test/typ/visualize/shape-aspect-00.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 120.0 Pt))
-       , KeyValArg (Identifier "height") (Literal (Numeric 70.0 Pt))
-       ])
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-aspect-00.typ"
-    ( line 5 , column 2 )
-    (Set
-       (Ident (Identifier "align"))
-       [ NormalArg (Ident (Identifier "bottom")) ])
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-aspect-00.typ"
-    ( line 6 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "centered")))
-       (FuncCall
-          (FieldAccess
-             (Ident (Identifier "with")) (Ident (Identifier "align")))
-          [ NormalArg
-              (Plus (Ident (Identifier "center")) (Ident (Identifier "horizon")))
-          ]))
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-aspect-00.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "stack"))
-       [ KeyValArg (Identifier "dir") (Ident (Identifier "ltr"))
-       , KeyValArg (Identifier "spacing") (Literal (Numeric 1.0 Fr))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "square"))
-              [ KeyValArg (Identifier "width") (Literal (Numeric 50.0 Percent))
-              , NormalArg
-                  (FuncCall
-                     (Ident (Identifier "centered")) [ BlockArg [ Text "A" ] ])
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "square"))
-              [ KeyValArg (Identifier "height") (Literal (Numeric 50.0 Percent))
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "stack"))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "square"))
-                     [ KeyValArg (Identifier "size") (Literal (Numeric 10.0 Pt)) ])
-              , NormalArg
-                  (FuncCall
-                     (Ident (Identifier "square"))
-                     [ KeyValArg (Identifier "size") (Literal (Numeric 20.0 Pt))
-                     , NormalArg
-                         (FuncCall
-                            (Ident (Identifier "centered")) [ BlockArg [ Text "B" ] ])
-                     ])
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 stack(children: (square(body: align(alignment: bottom, 
-                                                     body: text(body: [A])), 
-                                         width: 50%), 
-                                  square(height: 50%), 
-                                  stack(children: (square(size: 10.0pt), 
-                                                   square(body: align(alignment: bottom, 
-                                                                      body: text(body: [B])), 
-                                                          size: 20.0pt)))), 
-                       dir: ltr, 
-                       spacing: 1.0fr), 
-                 parbreak() })
diff --git a/test/out/visualize/shape-aspect-01.out b/test/out/visualize/shape-aspect-01.out
deleted file mode 100644
--- a/test/out/visualize/shape-aspect-01.out
+++ /dev/null
@@ -1,122 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/visualize/shape-aspect-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/visualize/shape-aspect-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/visualize/shape-aspect-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/visualize/shape-aspect-01.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ NormalArg (Literal (Numeric 8.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-aspect-01.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "square"))
-              [ KeyValArg (Identifier "inset") (Literal (Numeric 4.0 Pt))
-              , BlockArg
-                  [ SoftBreak
-                  , Text "Hey"
-                  , Space
-                  , Text "there,"
-                  , Space
-                  , Code
-                      "test/typ/visualize/shape-aspect-01.typ"
-                      ( line 5 , column 15 )
-                      (FuncCall
-                         (Ident (Identifier "align"))
-                         [ NormalArg
-                             (Plus (Ident (Identifier "center")) (Ident (Identifier "bottom")))
-                         , NormalArg
-                             (FuncCall
-                                (Ident (Identifier "rotate"))
-                                [ NormalArg (Literal (Numeric 180.0 Deg))
-                                , NormalArg (Block (Content [ Text "you!" ]))
-                                ])
-                         ])
-                  , ParBreak
-                  ]
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-aspect-01.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "circle"))
-              [ NormalArg
-                  (FuncCall
-                     (Ident (Identifier "align"))
-                     [ NormalArg
-                         (Plus (Ident (Identifier "center")) (Ident (Identifier "horizon")))
-                     , NormalArg (Block (Content [ Text "Hey" , Text "." ]))
-                     ])
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-], size: 8.0pt), 
-                 box(body: square(body: { text(body: [
-Hey there, ], 
-                                               size: 8.0pt), 
-                                          align(alignment: Axes(center, bottom), 
-                                                body: rotate(angle: 180.0deg, 
-                                                             body: text(body: [you!], 
-                                                                        size: 8.0pt))), 
-                                          parbreak() }, 
-                                  inset: 4.0pt)), 
-                 text(body: [
-], size: 8.0pt), 
-                 box(body: circle(body: align(alignment: Axes(center, horizon), 
-                                              body: text(body: [Hey.], 
-                                                         size: 8.0pt)))), 
-                 parbreak() })
diff --git a/test/out/visualize/shape-aspect-02.out b/test/out/visualize/shape-aspect-02.out
deleted file mode 100644
--- a/test/out/visualize/shape-aspect-02.out
+++ /dev/null
@@ -1,74 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/visualize/shape-aspect-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/visualize/shape-aspect-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/visualize/shape-aspect-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/visualize/shape-aspect-02.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "stack"))
-       [ KeyValArg (Identifier "dir") (Ident (Identifier "ltr"))
-       , KeyValArg (Identifier "spacing") (Literal (Numeric 2.0 Pt))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "square"))
-              [ KeyValArg (Identifier "width") (Literal (Numeric 20.0 Pt))
-              , KeyValArg (Identifier "height") (Literal (Numeric 40.0 Pt))
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "circle"))
-              [ KeyValArg (Identifier "width") (Literal (Numeric 20.0 Percent))
-              , KeyValArg (Identifier "height") (Literal (Numeric 100.0 Pt))
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 stack(children: (square(height: 40.0pt, 
-                                         width: 20.0pt), 
-                                  circle(height: 100.0pt, 
-                                         width: 20%)), 
-                       dir: ltr, 
-                       spacing: 2.0pt), 
-                 parbreak() })
diff --git a/test/out/visualize/shape-aspect-03.out b/test/out/visualize/shape-aspect-03.out
deleted file mode 100644
--- a/test/out/visualize/shape-aspect-03.out
+++ /dev/null
@@ -1,78 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/visualize/shape-aspect-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/visualize/shape-aspect-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/visualize/shape-aspect-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/visualize/shape-aspect-03.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 20.0 Pt))
-       , KeyValArg (Identifier "height") (Literal (Numeric 10.0 Pt))
-       , KeyValArg (Identifier "margin") (Literal (Numeric 0.0 Pt))
-       ])
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-aspect-03.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "stack"))
-       [ KeyValArg (Identifier "dir") (Ident (Identifier "ltr"))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "square"))
-              [ KeyValArg (Identifier "fill") (Ident (Identifier "red")) ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "square"))
-              [ KeyValArg (Identifier "fill") (Ident (Identifier "green")) ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 stack(children: (square(fill: rgb(100%,25%,21%,100%)), 
-                                  square(fill: rgb(18%,80%,25%,100%))), 
-                       dir: ltr), 
-                 parbreak() })
diff --git a/test/out/visualize/shape-aspect-04.out b/test/out/visualize/shape-aspect-04.out
deleted file mode 100644
--- a/test/out/visualize/shape-aspect-04.out
+++ /dev/null
@@ -1,86 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/visualize/shape-aspect-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/visualize/shape-aspect-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/visualize/shape-aspect-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/visualize/shape-aspect-04.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 120.0 Pt))
-       , KeyValArg (Identifier "height") (Literal (Numeric 40.0 Pt))
-       ])
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-aspect-04.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "stack"))
-       [ KeyValArg (Identifier "dir") (Ident (Identifier "ltr"))
-       , KeyValArg (Identifier "spacing") (Literal (Numeric 2.0 Pt))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "circle"))
-              [ KeyValArg (Identifier "radius") (Literal (Numeric 5.0 Pt)) ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "circle"))
-              [ KeyValArg (Identifier "width") (Literal (Numeric 10.0 Percent))
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "circle"))
-              [ KeyValArg (Identifier "height") (Literal (Numeric 50.0 Percent))
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 stack(children: (circle(radius: 5.0pt), 
-                                  circle(width: 10%), 
-                                  circle(height: 50%)), 
-                       dir: ltr, 
-                       spacing: 2.0pt), 
-                 parbreak() })
diff --git a/test/out/visualize/shape-aspect-05.out b/test/out/visualize/shape-aspect-05.out
deleted file mode 100644
--- a/test/out/visualize/shape-aspect-05.out
+++ /dev/null
@@ -1,81 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/visualize/shape-aspect-05.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/visualize/shape-aspect-05.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/visualize/shape-aspect-05.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/visualize/shape-aspect-05.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 40.0 Pt))
-       , KeyValArg (Identifier "height") (Literal (Numeric 25.0 Pt))
-       , KeyValArg (Identifier "margin") (Literal (Numeric 5.0 Pt))
-       ])
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-aspect-05.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "square"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
-       ])
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-aspect-05.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "square"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
-       , BlockArg [ Text "Hello" , Space , Text "there" ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 square(width: 100%), 
-                 text(body: [
-]), 
-                 square(body: text(body: [Hello there]), 
-                        width: 100%), 
-                 parbreak() })
diff --git a/test/out/visualize/shape-aspect-06.out b/test/out/visualize/shape-aspect-06.out
deleted file mode 100644
--- a/test/out/visualize/shape-aspect-06.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/visualize/shape-circle-00.out b/test/out/visualize/shape-circle-00.out
deleted file mode 100644
--- a/test/out/visualize/shape-circle-00.out
+++ /dev/null
@@ -1,68 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/visualize/shape-circle-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/visualize/shape-circle-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/visualize/shape-circle-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/visualize/shape-circle-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ NormalArg (FuncCall (Ident (Identifier "circle")) []) ])
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-circle-00.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "circle")) [ BlockArg [ Text "Hey" ] ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 box(body: circle()), 
-                 text(body: [
-]), 
-                 box(body: circle(body: text(body: [Hey]))), 
-                 parbreak() })
diff --git a/test/out/visualize/shape-circle-01.out b/test/out/visualize/shape-circle-01.out
deleted file mode 100644
--- a/test/out/visualize/shape-circle-01.out
+++ /dev/null
@@ -1,249 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/visualize/shape-circle-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/visualize/shape-circle-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/visualize/shape-circle-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/visualize/shape-circle-01.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "circle"))
-       [ KeyValArg (Identifier "inset") (Literal (Numeric 0.0 Pt)) ])
-, ParBreak
-, Text "Auto"
-, Text "-"
-, Text "sized"
-, Space
-, Text "circle"
-, Text "."
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-circle-01.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "circle"))
-       [ KeyValArg
-           (Identifier "fill")
-           (FuncCall
-              (Ident (Identifier "rgb"))
-              [ NormalArg (Literal (String "eb5278")) ])
-       , KeyValArg
-           (Identifier "stroke")
-           (Plus (Literal (Numeric 2.0 Pt)) (Ident (Identifier "black")))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "align"))
-              [ NormalArg
-                  (Plus (Ident (Identifier "center")) (Ident (Identifier "horizon")))
-              , BlockArg [ Text "But," , Space , Text "soft!" ]
-              ])
-       ])
-, ParBreak
-, Text "Center"
-, Text "-"
-, Text "aligned"
-, Space
-, Text "rect"
-, Space
-, Text "in"
-, Space
-, Text "auto"
-, Text "-"
-, Text "sized"
-, Space
-, Text "circle"
-, Text "."
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-circle-01.typ"
-    ( line 11 , column 2 )
-    (FuncCall
-       (Ident (Identifier "circle"))
-       [ KeyValArg (Identifier "fill") (Ident (Identifier "red"))
-       , KeyValArg (Identifier "stroke") (Ident (Identifier "green"))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "align"))
-              [ NormalArg
-                  (Plus (Ident (Identifier "center")) (Ident (Identifier "horizon")))
-              , NormalArg
-                  (FuncCall
-                     (Ident (Identifier "rect"))
-                     [ KeyValArg (Identifier "fill") (Ident (Identifier "green"))
-                     , KeyValArg (Identifier "inset") (Literal (Numeric 5.0 Pt))
-                     , BlockArg [ Text "But," , Space , Text "soft!" ]
-                     ])
-              ])
-       ])
-, ParBreak
-, Text "Rect"
-, Space
-, Text "in"
-, Space
-, Text "auto"
-, Text "-"
-, Text "sized"
-, Space
-, Text "circle"
-, Text "."
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-circle-01.typ"
-    ( line 18 , column 2 )
-    (FuncCall
-       (Ident (Identifier "circle"))
-       [ KeyValArg (Identifier "fill") (Ident (Identifier "red"))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg (Identifier "fill") (Ident (Identifier "green"))
-              , KeyValArg (Identifier "stroke") (Ident (Identifier "white"))
-              , KeyValArg (Identifier "inset") (Literal (Numeric 4.0 Pt))
-              , BlockArg
-                  [ SoftBreak
-                  , Code
-                      "test/typ/visualize/shape-circle-01.typ"
-                      ( line 20 , column 6 )
-                      (Set
-                         (Ident (Identifier "text"))
-                         [ NormalArg (Literal (Numeric 8.0 Pt)) ])
-                  , SoftBreak
-                  , Text "But,"
-                  , Space
-                  , Text "soft!"
-                  , Space
-                  , Text "what"
-                  , Space
-                  , Text "light"
-                  , Space
-                  , Text "through"
-                  , Space
-                  , Text "yonder"
-                  , Space
-                  , Text "window"
-                  , Space
-                  , Text "breaks?"
-                  , ParBreak
-                  ]
-              ])
-       ])
-, ParBreak
-, Text "Expanded"
-, Space
-, Text "by"
-, Space
-, Text "height"
-, Text "."
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-circle-01.typ"
-    ( line 26 , column 2 )
-    (FuncCall
-       (Ident (Identifier "circle"))
-       [ KeyValArg (Identifier "stroke") (Ident (Identifier "black"))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "align"))
-              [ NormalArg (Ident (Identifier "center"))
-              , BlockArg
-                  [ Text "A"
-                  , Space
-                  , HardBreak
-                  , Text "B"
-                  , Space
-                  , HardBreak
-                  , Text "C"
-                  ]
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [Auto-sized circle.
-]), 
-                 circle(body: align(alignment: Axes(center, horizon), 
-                                    body: text(body: [But, soft!])), 
-                        fill: rgb(92%,32%,47%,100%), 
-                        inset: 0.0pt, 
-                        stroke: (thickness: 2.0pt,
-                                 color: rgb(0%,0%,0%,100%))), 
-                 parbreak(), 
-                 text(body: [Center-aligned rect in auto-sized circle.
-]), 
-                 circle(body: align(alignment: Axes(center, horizon), 
-                                    body: rect(body: text(body: [But, soft!]), 
-                                               fill: rgb(18%,80%,25%,100%), 
-                                               inset: 5.0pt)), 
-                        fill: rgb(100%,25%,21%,100%), 
-                        inset: 0.0pt, 
-                        stroke: rgb(18%,80%,25%,100%)), 
-                 parbreak(), 
-                 text(body: [Rect in auto-sized circle.
-]), 
-                 circle(body: rect(body: { text(body: [
-]), 
-                                           text(body: [
-But, soft! what light through yonder window breaks?], 
-                                                size: 8.0pt), 
-                                           parbreak() }, 
-                                   fill: rgb(18%,80%,25%,100%), 
-                                   inset: 4.0pt, 
-                                   stroke: rgb(100%,100%,100%,100%)), 
-                        fill: rgb(100%,25%,21%,100%), 
-                        inset: 0.0pt), 
-                 parbreak(), 
-                 text(body: [Expanded by height.
-], 
-                      size: 8.0pt), 
-                 circle(body: align(alignment: center, 
-                                    body: { text(body: [A ], 
-                                                 size: 8.0pt), 
-                                            linebreak(), 
-                                            text(body: [B ], 
-                                                 size: 8.0pt), 
-                                            linebreak(), 
-                                            text(body: [C], 
-                                                 size: 8.0pt) }), 
-                        inset: 0.0pt, 
-                        stroke: rgb(0%,0%,0%,100%)), 
-                 parbreak() })
diff --git a/test/out/visualize/shape-circle-02.out b/test/out/visualize/shape-circle-02.out
deleted file mode 100644
--- a/test/out/visualize/shape-circle-02.out
+++ /dev/null
@@ -1,65 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/visualize/shape-circle-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/visualize/shape-circle-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/visualize/shape-circle-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/visualize/shape-circle-02.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "rect"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 40.0 Pt))
-       , KeyValArg (Identifier "height") (Literal (Numeric 30.0 Pt))
-       , KeyValArg (Identifier "fill") (Ident (Identifier "red"))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "circle"))
-              [ KeyValArg (Identifier "fill") (Ident (Identifier "green")) ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 rect(body: circle(fill: rgb(18%,80%,25%,100%)), 
-                      fill: rgb(100%,25%,21%,100%), 
-                      height: 30.0pt, 
-                      width: 40.0pt), 
-                 parbreak() })
diff --git a/test/out/visualize/shape-circle-03.out b/test/out/visualize/shape-circle-03.out
deleted file mode 100644
--- a/test/out/visualize/shape-circle-03.out
+++ /dev/null
@@ -1,143 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/visualize/shape-circle-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/visualize/shape-circle-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/visualize/shape-circle-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/visualize/shape-circle-03.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "fill") (Ident (Identifier "white")) ])
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-circle-03.typ"
-    ( line 4 , column 2 )
-    (Show
-       Nothing
-       (FuncCall
-          (FieldAccess
-             (Ident (Identifier "with")) (Ident (Identifier "rect")))
-          [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Pt))
-          , KeyValArg (Identifier "height") (Literal (Numeric 50.0 Pt))
-          , KeyValArg (Identifier "inset") (Literal (Numeric 0.0 Pt))
-          , KeyValArg
-              (Identifier "fill")
-              (FuncCall
-                 (Ident (Identifier "rgb")) [ NormalArg (Literal (String "aaa")) ])
-          ]))
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-circle-03.typ"
-    ( line 5 , column 2 )
-    (Set
-       (Ident (Identifier "align"))
-       [ NormalArg
-           (Plus (Ident (Identifier "center")) (Ident (Identifier "horizon")))
-       ])
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-circle-03.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "stack"))
-       [ KeyValArg (Identifier "dir") (Ident (Identifier "ltr"))
-       , KeyValArg (Identifier "spacing") (Literal (Numeric 1.0 Fr))
-       , NormalArg (Literal (Numeric 1.0 Fr))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "circle"))
-              [ KeyValArg (Identifier "radius") (Literal (Numeric 10.0 Pt))
-              , KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
-              , NormalArg (Block (Content [ Text "A" ]))
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "circle"))
-              [ KeyValArg (Identifier "height") (Literal (Numeric 60.0 Percent))
-              , KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
-              , NormalArg (Block (Content [ Text "B" ]))
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "circle"))
-              [ KeyValArg
-                  (Identifier "width")
-                  (Plus (Literal (Numeric 20.0 Percent)) (Literal (Numeric 20.0 Pt)))
-              , KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
-              , NormalArg (Block (Content [ Text "C" ]))
-              ])
-       , NormalArg (Literal (Numeric 1.0 Fr))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-], 
-                      fill: rgb(100%,100%,100%,100%)), 
-                 rect(body: { text(body: [
-], 
-                                   fill: rgb(100%,100%,100%,100%)), 
-                              text(body: [
-], 
-                                   fill: rgb(100%,100%,100%,100%)), 
-                              stack(children: (1.0fr, 
-                                               circle(body: text(body: [A], 
-                                                                 fill: rgb(100%,100%,100%,100%)), 
-                                                      fill: rgb(13%,61%,67%,100%), 
-                                                      radius: 10.0pt), 
-                                               circle(body: text(body: [B], 
-                                                                 fill: rgb(100%,100%,100%,100%)), 
-                                                      fill: rgb(13%,61%,67%,100%), 
-                                                      height: 60%), 
-                                               circle(body: text(body: [C], 
-                                                                 fill: rgb(100%,100%,100%,100%)), 
-                                                      fill: rgb(13%,61%,67%,100%), 
-                                                      width: 20.0pt + 20%), 
-                                               1.0fr), 
-                                    dir: ltr, 
-                                    spacing: 1.0fr), 
-                              parbreak() }, 
-                      fill: rgb(3%,3%,3%,100%), 
-                      height: 50.0pt, 
-                      inset: 0.0pt, 
-                      width: 100.0pt) })
diff --git a/test/out/visualize/shape-circle-04.out b/test/out/visualize/shape-circle-04.out
deleted file mode 100644
--- a/test/out/visualize/shape-circle-04.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/visualize/shape-ellipse-00.out b/test/out/visualize/shape-ellipse-00.out
deleted file mode 100644
--- a/test/out/visualize/shape-ellipse-00.out
+++ /dev/null
@@ -1,53 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/visualize/shape-ellipse-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/visualize/shape-ellipse-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/visualize/shape-ellipse-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/visualize/shape-ellipse-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall (Ident (Identifier "ellipse")) [])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 ellipse(), 
-                 parbreak() })
diff --git a/test/out/visualize/shape-ellipse-01.out b/test/out/visualize/shape-ellipse-01.out
deleted file mode 100644
--- a/test/out/visualize/shape-ellipse-01.out
+++ /dev/null
@@ -1,235 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/visualize/shape-ellipse-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/visualize/shape-ellipse-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/visualize/shape-ellipse-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-ellipse-01.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "rect"))
-       [ KeyValArg (Identifier "inset") (Literal (Numeric 0.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-ellipse-01.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "ellipse"))
-       [ KeyValArg (Identifier "inset") (Literal (Numeric 0.0 Pt)) ])
-, ParBreak
-, Text "Rect"
-, Space
-, Text "in"
-, Space
-, Text "ellipse"
-, Space
-, Text "in"
-, Space
-, Text "fixed"
-, Space
-, Text "rect"
-, Text "."
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-ellipse-01.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "rect"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 3.0 Cm))
-       , KeyValArg (Identifier "height") (Literal (Numeric 2.0 Cm))
-       , KeyValArg
-           (Identifier "fill")
-           (FuncCall
-              (Ident (Identifier "rgb"))
-              [ NormalArg (Literal (String "2a631a")) ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "ellipse"))
-              [ KeyValArg (Identifier "fill") (Ident (Identifier "red"))
-              , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
-              , KeyValArg (Identifier "height") (Literal (Numeric 100.0 Percent))
-              , NormalArg
-                  (FuncCall
-                     (Ident (Identifier "rect"))
-                     [ KeyValArg (Identifier "fill") (Ident (Identifier "green"))
-                     , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
-                     , KeyValArg (Identifier "height") (Literal (Numeric 100.0 Percent))
-                     , NormalArg
-                         (FuncCall
-                            (Ident (Identifier "align"))
-                            [ NormalArg
-                                (Plus (Ident (Identifier "center")) (Ident (Identifier "horizon")))
-                            , BlockArg
-                                [ SoftBreak
-                                , Text "Stuff"
-                                , Space
-                                , Text "inside"
-                                , Space
-                                , Text "an"
-                                , Space
-                                , Text "ellipse!"
-                                , ParBreak
-                                ]
-                            ])
-                     ])
-              ])
-       ])
-, ParBreak
-, Text "Auto"
-, Text "-"
-, Text "sized"
-, Space
-, Text "ellipse"
-, Text "."
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-ellipse-01.typ"
-    ( line 17 , column 2 )
-    (FuncCall
-       (Ident (Identifier "ellipse"))
-       [ KeyValArg (Identifier "fill") (Ident (Identifier "green"))
-       , KeyValArg
-           (Identifier "stroke")
-           (Plus (Literal (Numeric 3.0 Pt)) (Ident (Identifier "red")))
-       , KeyValArg (Identifier "inset") (Literal (Numeric 3.0 Pt))
-       , BlockArg
-           [ SoftBreak
-           , Code
-               "test/typ/visualize/shape-ellipse-01.typ"
-               ( line 18 , column 4 )
-               (Set
-                  (Ident (Identifier "text"))
-                  [ NormalArg (Literal (Numeric 8.0 Pt)) ])
-           , SoftBreak
-           , Text "But,"
-           , Space
-           , Text "soft!"
-           , Space
-           , Text "what"
-           , Space
-           , Text "light"
-           , Space
-           , Text "through"
-           , Space
-           , Text "yonder"
-           , Space
-           , Text "window"
-           , Space
-           , Text "breaks?"
-           , ParBreak
-           ]
-       ])
-, ParBreak
-, Text "An"
-, Space
-, Text "inline"
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-ellipse-01.typ"
-    ( line 24 , column 2 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "ellipse"))
-              [ KeyValArg (Identifier "width") (Literal (Numeric 8.0 Pt))
-              , KeyValArg (Identifier "height") (Literal (Numeric 6.0 Pt))
-              , KeyValArg
-                  (Identifier "outset")
-                  (Dict
-                     [ Reg ( Ident (Identifier "top") , Literal (Numeric 3.0 Pt) )
-                     , Reg ( Ident (Identifier "rest") , Literal (Numeric 5.5 Pt) )
-                     ])
-              ])
-       ])
-, SoftBreak
-, Text "ellipse"
-, Text "."
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [Rect in ellipse in fixed rect.
-]), 
-                 rect(body: ellipse(body: rect(body: align(alignment: Axes(center, horizon), 
-                                                           body: { text(body: [
-Stuff inside an ellipse!]), 
-                                                                   parbreak() }), 
-                                               fill: rgb(18%,80%,25%,100%), 
-                                               height: 100%, 
-                                               inset: 0.0pt, 
-                                               width: 100%), 
-                                    fill: rgb(100%,25%,21%,100%), 
-                                    height: 100%, 
-                                    inset: 0.0pt, 
-                                    width: 100%), 
-                      fill: rgb(16%,38%,10%,100%), 
-                      height: 2.0cm, 
-                      inset: 0.0pt, 
-                      width: 3.0cm), 
-                 parbreak(), 
-                 text(body: [Auto-sized ellipse.
-]), 
-                 ellipse(body: { text(body: [
-]), 
-                                 text(body: [
-But, soft! what light through yonder window breaks?], 
-                                      size: 8.0pt), 
-                                 parbreak() }, 
-                         fill: rgb(18%,80%,25%,100%), 
-                         inset: 3.0pt, 
-                         stroke: (thickness: 3.0pt,
-                                  color: rgb(100%,25%,21%,100%))), 
-                 parbreak(), 
-                 text(body: [An inline
-], 
-                      size: 8.0pt), 
-                 box(body: ellipse(height: 6.0pt, 
-                                   inset: 0.0pt, 
-                                   outset: (top: 3.0pt,
-                                            rest: 5.5pt), 
-                                   width: 8.0pt)), 
-                 text(body: [
-ellipse.], 
-                      size: 8.0pt), 
-                 parbreak() })
diff --git a/test/out/visualize/shape-fill-stroke-00.out b/test/out/visualize/shape-fill-stroke-00.out
deleted file mode 100644
--- a/test/out/visualize/shape-fill-stroke-00.out
+++ /dev/null
@@ -1,276 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/visualize/shape-fill-stroke-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/visualize/shape-fill-stroke-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/visualize/shape-fill-stroke-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-fill-stroke-00.typ"
-    ( line 2 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "variant")))
-       (FuncCall
-          (FieldAccess
-             (Ident (Identifier "with")) (Ident (Identifier "rect")))
-          [ KeyValArg (Identifier "width") (Literal (Numeric 20.0 Pt))
-          , KeyValArg (Identifier "height") (Literal (Numeric 10.0 Pt))
-          ]))
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-fill-stroke-00.typ"
-    ( line 3 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "items")))
-       (For
-          (DestructuringBind
-             [ Simple (Just (Identifier "i"))
-             , Simple (Just (Identifier "item"))
-             ])
-          (FuncCall
-             (FieldAccess
-                (Ident (Identifier "enumerate"))
-                (Array
-                   [ Reg
-                       (FuncCall
-                          (Ident (Identifier "variant"))
-                          [ KeyValArg (Identifier "stroke") (Literal None) ])
-                   , Reg (FuncCall (Ident (Identifier "variant")) [])
-                   , Reg
-                       (FuncCall
-                          (Ident (Identifier "variant"))
-                          [ KeyValArg (Identifier "fill") (Literal None) ])
-                   , Reg
-                       (FuncCall
-                          (Ident (Identifier "variant"))
-                          [ KeyValArg (Identifier "stroke") (Literal (Numeric 2.0 Pt)) ])
-                   , Reg
-                       (FuncCall
-                          (Ident (Identifier "variant"))
-                          [ KeyValArg (Identifier "stroke") (Ident (Identifier "eastern")) ])
-                   , Reg
-                       (FuncCall
-                          (Ident (Identifier "variant"))
-                          [ KeyValArg
-                              (Identifier "stroke")
-                              (Plus (Ident (Identifier "eastern")) (Literal (Numeric 2.0 Pt)))
-                          ])
-                   , Reg
-                       (FuncCall
-                          (Ident (Identifier "variant"))
-                          [ KeyValArg (Identifier "fill") (Ident (Identifier "eastern")) ])
-                   , Reg
-                       (FuncCall
-                          (Ident (Identifier "variant"))
-                          [ KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
-                          , KeyValArg (Identifier "stroke") (Literal None)
-                          ])
-                   , Reg
-                       (FuncCall
-                          (Ident (Identifier "variant"))
-                          [ KeyValArg (Identifier "fill") (Ident (Identifier "red"))
-                          , KeyValArg (Identifier "stroke") (Literal None)
-                          ])
-                   , Reg
-                       (FuncCall
-                          (Ident (Identifier "variant"))
-                          [ KeyValArg (Identifier "fill") (Ident (Identifier "red"))
-                          , KeyValArg (Identifier "stroke") (Ident (Identifier "green"))
-                          ])
-                   , Reg
-                       (FuncCall
-                          (Ident (Identifier "variant"))
-                          [ KeyValArg (Identifier "fill") (Ident (Identifier "red"))
-                          , KeyValArg
-                              (Identifier "stroke")
-                              (Plus (Ident (Identifier "black")) (Literal (Numeric 2.0 Pt)))
-                          ])
-                   , Reg
-                       (FuncCall
-                          (Ident (Identifier "variant"))
-                          [ KeyValArg (Identifier "fill") (Ident (Identifier "red"))
-                          , KeyValArg
-                              (Identifier "stroke")
-                              (Plus (Ident (Identifier "green")) (Literal (Numeric 2.0 Pt)))
-                          ])
-                   ]))
-             [])
-          (Block
-             (CodeBlock
-                [ Array
-                    [ Reg
-                        (FuncCall
-                           (Ident (Identifier "align"))
-                           [ NormalArg (Ident (Identifier "horizon"))
-                           , BlockArg
-                               [ Code
-                                   "test/typ/visualize/shape-fill-stroke-00.typ"
-                                   ( line 17 , column 20 )
-                                   (Plus (Ident (Identifier "i")) (Literal (Int 1)))
-                               , Text "."
-                               ]
-                           ])
-                    , Reg (Ident (Identifier "item"))
-                    , Reg (Block (Content []))
-                    ]
-                ]))))
-, ParBreak
-, Code
-    "test/typ/visualize/shape-fill-stroke-00.typ"
-    ( line 20 , column 2 )
-    (FuncCall
-       (Ident (Identifier "grid"))
-       [ KeyValArg
-           (Identifier "columns")
-           (Array
-              [ Reg (Literal Auto)
-              , Reg (Literal Auto)
-              , Reg (Literal (Numeric 1.0 Fr))
-              , Reg (Literal Auto)
-              , Reg (Literal Auto)
-              , Reg (Literal (Numeric 0.0 Fr))
-              ])
-       , KeyValArg (Identifier "gutter") (Literal (Numeric 5.0 Pt))
-       , SpreadArg (Ident (Identifier "items"))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 parbreak(), 
-                 grid(children: (align(alignment: horizon, 
-                                       body: { text(body: [1]), 
-                                               text(body: [.]) }), 
-                                 rect(height: 10.0pt, 
-                                      stroke: none, 
-                                      width: 20.0pt), 
-                                 {  }, 
-                                 align(alignment: horizon, 
-                                       body: { text(body: [2]), 
-                                               text(body: [.]) }), 
-                                 rect(height: 10.0pt, 
-                                      width: 20.0pt), 
-                                 {  }, 
-                                 align(alignment: horizon, 
-                                       body: { text(body: [3]), 
-                                               text(body: [.]) }), 
-                                 rect(fill: none, 
-                                      height: 10.0pt, 
-                                      width: 20.0pt), 
-                                 {  }, 
-                                 align(alignment: horizon, 
-                                       body: { text(body: [4]), 
-                                               text(body: [.]) }), 
-                                 rect(height: 10.0pt, 
-                                      stroke: 2.0pt, 
-                                      width: 20.0pt), 
-                                 {  }, 
-                                 align(alignment: horizon, 
-                                       body: { text(body: [5]), 
-                                               text(body: [.]) }), 
-                                 rect(height: 10.0pt, 
-                                      stroke: rgb(13%,61%,67%,100%), 
-                                      width: 20.0pt), 
-                                 {  }, 
-                                 align(alignment: horizon, 
-                                       body: { text(body: [6]), 
-                                               text(body: [.]) }), 
-                                 rect(height: 10.0pt, 
-                                      stroke: (thickness: 2.0pt,
-                                               color: rgb(13%,61%,67%,100%)), 
-                                      width: 20.0pt), 
-                                 {  }, 
-                                 align(alignment: horizon, 
-                                       body: { text(body: [7]), 
-                                               text(body: [.]) }), 
-                                 rect(fill: rgb(13%,61%,67%,100%), 
-                                      height: 10.0pt, 
-                                      width: 20.0pt), 
-                                 {  }, 
-                                 align(alignment: horizon, 
-                                       body: { text(body: [8]), 
-                                               text(body: [.]) }), 
-                                 rect(fill: rgb(13%,61%,67%,100%), 
-                                      height: 10.0pt, 
-                                      stroke: none, 
-                                      width: 20.0pt), 
-                                 {  }, 
-                                 align(alignment: horizon, 
-                                       body: { text(body: [9]), 
-                                               text(body: [.]) }), 
-                                 rect(fill: rgb(100%,25%,21%,100%), 
-                                      height: 10.0pt, 
-                                      stroke: none, 
-                                      width: 20.0pt), 
-                                 {  }, 
-                                 align(alignment: horizon, 
-                                       body: { text(body: [10]), 
-                                               text(body: [.]) }), 
-                                 rect(fill: rgb(100%,25%,21%,100%), 
-                                      height: 10.0pt, 
-                                      stroke: rgb(18%,80%,25%,100%), 
-                                      width: 20.0pt), 
-                                 {  }, 
-                                 align(alignment: horizon, 
-                                       body: { text(body: [11]), 
-                                               text(body: [.]) }), 
-                                 rect(fill: rgb(100%,25%,21%,100%), 
-                                      height: 10.0pt, 
-                                      stroke: (thickness: 2.0pt,
-                                               color: rgb(0%,0%,0%,100%)), 
-                                      width: 20.0pt), 
-                                 {  }, 
-                                 align(alignment: horizon, 
-                                       body: { text(body: [12]), 
-                                               text(body: [.]) }), 
-                                 rect(fill: rgb(100%,25%,21%,100%), 
-                                      height: 10.0pt, 
-                                      stroke: (thickness: 2.0pt,
-                                               color: rgb(18%,80%,25%,100%)), 
-                                      width: 20.0pt), 
-                                 {  }), 
-                      columns: (auto, 
-                                auto, 
-                                1.0fr, 
-                                auto, 
-                                auto, 
-                                0.0fr), 
-                      gutter: 5.0pt), 
-                 parbreak() })
diff --git a/test/out/visualize/shape-fill-stroke-01.out b/test/out/visualize/shape-fill-stroke-01.out
deleted file mode 100644
--- a/test/out/visualize/shape-fill-stroke-01.out
+++ /dev/null
@@ -1,163 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/visualize/shape-fill-stroke-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/visualize/shape-fill-stroke-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/visualize/shape-fill-stroke-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/visualize/shape-fill-stroke-01.typ"
-    ( line 3 , column 2 )
-    (LetFunc
-       (Identifier "sq")
-       [ SinkParam (Just (Identifier "args")) ]
-       (FuncCall
-          (Ident (Identifier "box"))
-          [ NormalArg
-              (FuncCall
-                 (Ident (Identifier "square"))
-                 [ KeyValArg (Identifier "size") (Literal (Numeric 10.0 Pt))
-                 , SpreadArg (Ident (Identifier "args"))
-                 ])
-          ]))
-, ParBreak
-, Code
-    "test/typ/visualize/shape-fill-stroke-01.typ"
-    ( line 5 , column 2 )
-    (Set
-       (Ident (Identifier "square"))
-       [ KeyValArg (Identifier "stroke") (Literal None) ])
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-fill-stroke-01.typ"
-    ( line 6 , column 2 )
-    (FuncCall (Ident (Identifier "sq")) [])
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-fill-stroke-01.typ"
-    ( line 7 , column 2 )
-    (Set
-       (Ident (Identifier "square"))
-       [ KeyValArg (Identifier "stroke") (Literal Auto) ])
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-fill-stroke-01.typ"
-    ( line 8 , column 2 )
-    (FuncCall (Ident (Identifier "sq")) [])
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-fill-stroke-01.typ"
-    ( line 9 , column 2 )
-    (FuncCall
-       (Ident (Identifier "sq"))
-       [ KeyValArg (Identifier "fill") (Ident (Identifier "teal")) ])
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-fill-stroke-01.typ"
-    ( line 10 , column 2 )
-    (FuncCall
-       (Ident (Identifier "sq"))
-       [ KeyValArg (Identifier "stroke") (Literal (Numeric 2.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-fill-stroke-01.typ"
-    ( line 11 , column 2 )
-    (FuncCall
-       (Ident (Identifier "sq"))
-       [ KeyValArg (Identifier "stroke") (Ident (Identifier "blue")) ])
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-fill-stroke-01.typ"
-    ( line 12 , column 2 )
-    (FuncCall
-       (Ident (Identifier "sq"))
-       [ KeyValArg (Identifier "fill") (Ident (Identifier "teal"))
-       , KeyValArg (Identifier "stroke") (Ident (Identifier "blue"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-fill-stroke-01.typ"
-    ( line 13 , column 2 )
-    (FuncCall
-       (Ident (Identifier "sq"))
-       [ KeyValArg (Identifier "fill") (Ident (Identifier "teal"))
-       , KeyValArg
-           (Identifier "stroke")
-           (Plus (Literal (Numeric 2.0 Pt)) (Ident (Identifier "blue")))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 box(body: square(size: 10.0pt, 
-                                  stroke: none)), 
-                 text(body: [
-]), 
-                 text(body: [
-]), 
-                 box(body: square(size: 10.0pt, 
-                                  stroke: auto)), 
-                 text(body: [
-]), 
-                 box(body: square(fill: rgb(22%,80%,80%,100%), 
-                                  size: 10.0pt, 
-                                  stroke: auto)), 
-                 text(body: [
-]), 
-                 box(body: square(size: 10.0pt, 
-                                  stroke: 2.0pt)), 
-                 text(body: [
-]), 
-                 box(body: square(size: 10.0pt, 
-                                  stroke: rgb(0%,45%,85%,100%))), 
-                 text(body: [
-]), 
-                 box(body: square(fill: rgb(22%,80%,80%,100%), 
-                                  size: 10.0pt, 
-                                  stroke: rgb(0%,45%,85%,100%))), 
-                 text(body: [
-]), 
-                 box(body: square(fill: rgb(22%,80%,80%,100%), 
-                                  size: 10.0pt, 
-                                  stroke: (thickness: 2.0pt,
-                                           color: rgb(0%,45%,85%,100%)))), 
-                 parbreak() })
diff --git a/test/out/visualize/shape-fill-stroke-02.out b/test/out/visualize/shape-fill-stroke-02.out
deleted file mode 100644
--- a/test/out/visualize/shape-fill-stroke-02.out
+++ /dev/null
@@ -1,99 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/visualize/shape-fill-stroke-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/visualize/shape-fill-stroke-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/visualize/shape-fill-stroke-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/visualize/shape-fill-stroke-02.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "square"))
-       [ KeyValArg (Identifier "stroke") (Literal (Numeric 4.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-fill-stroke-02.typ"
-    ( line 4 , column 2 )
-    (Set
-       (Ident (Identifier "text"))
-       [ KeyValArg (Identifier "font") (Literal (String "Roboto")) ])
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-fill-stroke-02.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "square"))
-       [ KeyValArg
-           (Identifier "stroke")
-           (Dict
-              [ Reg ( Ident (Identifier "left") , Ident (Identifier "red") )
-              , Reg ( Ident (Identifier "top") , Ident (Identifier "yellow") )
-              , Reg ( Ident (Identifier "right") , Ident (Identifier "green") )
-              , Reg ( Ident (Identifier "bottom") , Ident (Identifier "blue") )
-              ])
-       , KeyValArg (Identifier "radius") (Literal (Numeric 100.0 Percent))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "align"))
-              [ NormalArg
-                  (Plus (Ident (Identifier "center")) (Ident (Identifier "horizon")))
-              , BlockArg [ Strong [ Text "G" ] ]
-              ])
-       , KeyValArg (Identifier "inset") (Literal (Numeric 8.0 Pt))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 text(body: [
-], 
-                      font: "Roboto"), 
-                 square(body: align(alignment: Axes(center, horizon), 
-                                    body: strong(body: text(body: [G], 
-                                                            font: "Roboto"))), 
-                        inset: 8.0pt, 
-                        radius: 100%, 
-                        stroke: (left: rgb(100%,25%,21%,100%),
-                                 top: rgb(100%,86%,0%,100%),
-                                 right: rgb(18%,80%,25%,100%),
-                                 bottom: rgb(0%,45%,85%,100%))), 
-                 parbreak() })
diff --git a/test/out/visualize/shape-rect-00.out b/test/out/visualize/shape-rect-00.out
deleted file mode 100644
--- a/test/out/visualize/shape-rect-00.out
+++ /dev/null
@@ -1,53 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/visualize/shape-rect-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/visualize/shape-rect-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/visualize/shape-rect-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/visualize/shape-rect-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall (Ident (Identifier "rect")) [])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 rect(), 
-                 parbreak() })
diff --git a/test/out/visualize/shape-rect-01.out b/test/out/visualize/shape-rect-01.out
deleted file mode 100644
--- a/test/out/visualize/shape-rect-01.out
+++ /dev/null
@@ -1,298 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/visualize/shape-rect-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/visualize/shape-rect-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/visualize/shape-rect-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-rect-01.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 150.0 Pt)) ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/visualize/shape-rect-01.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "rect"))
-       [ KeyValArg (Identifier "fill") (Ident (Identifier "green"))
-       , BlockArg [ Text "Textbox" ]
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/visualize/shape-rect-01.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "block"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg (Identifier "height") (Literal (Numeric 15.0 Pt))
-              , KeyValArg
-                  (Identifier "fill")
-                  (FuncCall
-                     (Ident (Identifier "rgb"))
-                     [ NormalArg (Literal (String "46b3c2")) ])
-              , KeyValArg
-                  (Identifier "stroke")
-                  (Plus
-                     (Literal (Numeric 2.0 Pt))
-                     (FuncCall
-                        (Ident (Identifier "rgb"))
-                        [ NormalArg (Literal (String "234994")) ]))
-              ])
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/visualize/shape-rect-01.typ"
-    ( line 15 , column 2 )
-    (FuncCall
-       (Ident (Identifier "rect"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 2.0 Cm))
-       , KeyValArg
-           (Identifier "fill")
-           (FuncCall
-              (Ident (Identifier "rgb"))
-              [ NormalArg (Literal (String "9650d6")) ])
-       , BlockArg
-           [ Text "Fixed" , Space , Text "and" , Space , Text "padded" ]
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/visualize/shape-rect-01.typ"
-    ( line 18 , column 2 )
-    (FuncCall
-       (Ident (Identifier "rect"))
-       [ KeyValArg (Identifier "height") (Literal (Numeric 1.0 Cm))
-       , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
-       , KeyValArg
-           (Identifier "fill")
-           (FuncCall
-              (Ident (Identifier "rgb"))
-              [ NormalArg (Literal (String "734ced")) ])
-       , BlockArg [ Text "Topleft" ]
-       ])
-, ParBreak
-, Comment
-, Text "{"
-, Code
-    "test/typ/visualize/shape-rect-01.typ"
-    ( line 21 , column 3 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg (Identifier "width") (Literal (Numeric 0.5 In))
-              , KeyValArg (Identifier "height") (Literal (Numeric 7.0 Pt))
-              , KeyValArg
-                  (Identifier "fill")
-                  (FuncCall
-                     (Ident (Identifier "rgb"))
-                     [ NormalArg (Literal (String "d6cd67")) ])
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-rect-01.typ"
-    ( line 22 , column 3 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg (Identifier "width") (Literal (Numeric 0.5 In))
-              , KeyValArg (Identifier "height") (Literal (Numeric 7.0 Pt))
-              , KeyValArg
-                  (Identifier "fill")
-                  (FuncCall
-                     (Ident (Identifier "rgb"))
-                     [ NormalArg (Literal (String "edd466")) ])
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-rect-01.typ"
-    ( line 23 , column 3 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg (Identifier "width") (Literal (Numeric 0.5 In))
-              , KeyValArg (Identifier "height") (Literal (Numeric 7.0 Pt))
-              , KeyValArg
-                  (Identifier "fill")
-                  (FuncCall
-                     (Ident (Identifier "rgb"))
-                     [ NormalArg (Literal (String "e3be62")) ])
-              ])
-       ])
-, Text "}"
-, ParBreak
-, Comment
-, Code
-    "test/typ/visualize/shape-rect-01.typ"
-    ( line 26 , column 2 )
-    (FuncCall
-       (Ident (Identifier "stack"))
-       [ KeyValArg (Identifier "dir") (Ident (Identifier "ltr"))
-       , KeyValArg (Identifier "spacing") (Literal (Numeric 1.0 Fr))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg (Identifier "width") (Literal (Numeric 2.0 Cm))
-              , KeyValArg (Identifier "radius") (Literal (Numeric 60.0 Percent))
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg (Identifier "width") (Literal (Numeric 1.0 Cm))
-              , KeyValArg
-                  (Identifier "radius")
-                  (Dict
-                     [ Reg ( Ident (Identifier "left") , Literal (Numeric 10.0 Pt) )
-                     , Reg ( Ident (Identifier "right") , Literal (Numeric 5.0 Pt) )
-                     ])
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "rect"))
-              [ KeyValArg (Identifier "width") (Literal (Numeric 1.25 Cm))
-              , KeyValArg
-                  (Identifier "radius")
-                  (Dict
-                     [ Reg ( Ident (Identifier "top-left") , Literal (Numeric 2.0 Pt) )
-                     , Reg ( Ident (Identifier "top-right") , Literal (Numeric 5.0 Pt) )
-                     , Reg
-                         ( Ident (Identifier "bottom-right") , Literal (Numeric 8.0 Pt) )
-                     , Reg
-                         ( Ident (Identifier "bottom-left") , Literal (Numeric 11.0 Pt) )
-                     ])
-              ])
-       ])
-, ParBreak
-, Comment
-, Code
-    "test/typ/visualize/shape-rect-01.typ"
-    ( line 40 , column 2 )
-    (Set
-       (Ident (Identifier "rect"))
-       [ KeyValArg
-           (Identifier "stroke")
-           (Dict
-              [ Reg ( Ident (Identifier "right") , Ident (Identifier "red") ) ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-rect-01.typ"
-    ( line 41 , column 2 )
-    (FuncCall
-       (Ident (Identifier "rect"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
-       , KeyValArg (Identifier "fill") (Ident (Identifier "lime"))
-       , KeyValArg
-           (Identifier "stroke")
-           (Dict
-              [ Reg ( Ident (Identifier "x") , Literal (Numeric 5.0 Pt) )
-              , Reg ( Ident (Identifier "y") , Literal (Numeric 1.0 Pt) )
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 rect(body: text(body: [Textbox]), 
-                      fill: rgb(18%,80%,25%,100%)), 
-                 parbreak(), 
-                 block(body: rect(fill: rgb(27%,70%,76%,100%), 
-                                  height: 15.0pt, 
-                                  stroke: (thickness: 2.0pt,
-                                           color: rgb(13%,28%,58%,100%)))), 
-                 parbreak(), 
-                 rect(body: text(body: [Fixed and padded]), 
-                      fill: rgb(58%,31%,83%,100%), 
-                      width: 2.0cm), 
-                 parbreak(), 
-                 rect(body: text(body: [Topleft]), 
-                      fill: rgb(45%,29%,92%,100%), 
-                      height: 1.0cm, 
-                      width: 100%), 
-                 parbreak(), 
-                 text(body: [{]), 
-                 box(body: rect(fill: rgb(83%,80%,40%,100%), 
-                                height: 7.0pt, 
-                                width: 0.5in)), 
-                 text(body: [
-]), 
-                 box(body: rect(fill: rgb(92%,83%,40%,100%), 
-                                height: 7.0pt, 
-                                width: 0.5in)), 
-                 text(body: [
-]), 
-                 box(body: rect(fill: rgb(89%,74%,38%,100%), 
-                                height: 7.0pt, 
-                                width: 0.5in)), 
-                 text(body: [}]), 
-                 parbreak(), 
-                 stack(children: (rect(radius: 60%, 
-                                       width: 2.0cm), 
-                                  rect(radius: (left: 10.0pt,
-                                                right: 5.0pt), 
-                                       width: 1.0cm), 
-                                  rect(radius: (top-left: 2.0pt,
-                                                top-right: 5.0pt,
-                                                bottom-right: 8.0pt,
-                                                bottom-left: 11.0pt), 
-                                       width: 1.25cm)), 
-                       dir: ltr, 
-                       spacing: 1.0fr), 
-                 parbreak(), 
-                 text(body: [
-]), 
-                 rect(fill: rgb(0%,100%,43%,100%), 
-                      stroke: (x: 5.0pt, y: 1.0pt), 
-                      width: 100%), 
-                 parbreak() })
diff --git a/test/out/visualize/shape-rect-02.out b/test/out/visualize/shape-rect-02.out
deleted file mode 100644
--- a/test/out/visualize/shape-rect-02.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/visualize/shape-rect-03.out b/test/out/visualize/shape-rect-03.out
deleted file mode 100644
--- a/test/out/visualize/shape-rect-03.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/visualize/shape-rounded-00.out b/test/out/visualize/shape-rounded-00.out
deleted file mode 100644
--- a/test/out/visualize/shape-rounded-00.out
+++ /dev/null
@@ -1,67 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/visualize/shape-rounded-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/visualize/shape-rounded-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/visualize/shape-rounded-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/visualize/shape-rounded-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "rect"))
-       [ KeyValArg
-           (Identifier "radius") (Negated (Literal (Numeric 20.0 Pt)))
-       ])
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-rounded-00.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "square"))
-       [ KeyValArg (Identifier "radius") (Literal (Numeric 30.0 Pt)) ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 rect(radius: -20.0pt), 
-                 text(body: [
-]), 
-                 square(radius: 30.0pt), 
-                 parbreak() })
diff --git a/test/out/visualize/shape-square-00.out b/test/out/visualize/shape-square-00.out
deleted file mode 100644
--- a/test/out/visualize/shape-square-00.out
+++ /dev/null
@@ -1,68 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/visualize/shape-square-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/visualize/shape-square-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/visualize/shape-square-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/visualize/shape-square-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ NormalArg (FuncCall (Ident (Identifier "square")) []) ])
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-square-00.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "box"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "square")) [ BlockArg [ Text "hey!" ] ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 box(body: square()), 
-                 text(body: [
-]), 
-                 box(body: square(body: text(body: [hey!]))), 
-                 parbreak() })
diff --git a/test/out/visualize/shape-square-01.out b/test/out/visualize/shape-square-01.out
deleted file mode 100644
--- a/test/out/visualize/shape-square-01.out
+++ /dev/null
@@ -1,77 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/visualize/shape-square-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/visualize/shape-square-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/visualize/shape-square-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/visualize/shape-square-01.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "square"))
-       [ KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
-       , BlockArg
-           [ SoftBreak
-           , Code
-               "test/typ/visualize/shape-square-01.typ"
-               ( line 4 , column 4 )
-               (Set
-                  (Ident (Identifier "text"))
-                  [ KeyValArg (Identifier "fill") (Ident (Identifier "white"))
-                  , KeyValArg (Identifier "weight") (Literal (String "bold"))
-                  ])
-           , SoftBreak
-           , Text "Typst"
-           , ParBreak
-           ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 square(body: { text(body: [
-]), 
-                                text(body: [
-Typst], 
-                                     fill: rgb(100%,100%,100%,100%), 
-                                     weight: "bold"), 
-                                parbreak() }, 
-                        fill: rgb(13%,61%,67%,100%)), 
-                 parbreak() })
diff --git a/test/out/visualize/shape-square-02.out b/test/out/visualize/shape-square-02.out
deleted file mode 100644
--- a/test/out/visualize/shape-square-02.out
+++ /dev/null
@@ -1,90 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/visualize/shape-square-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/visualize/shape-square-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/visualize/shape-square-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/visualize/shape-square-02.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "square"))
-       [ KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
-       , BlockArg
-           [ SoftBreak
-           , Code
-               "test/typ/visualize/shape-square-02.typ"
-               ( line 4 , column 4 )
-               (FuncCall
-                  (Ident (Identifier "rect"))
-                  [ KeyValArg (Identifier "width") (Literal (Numeric 10.0 Pt))
-                  , KeyValArg (Identifier "height") (Literal (Numeric 5.0 Pt))
-                  , KeyValArg (Identifier "fill") (Ident (Identifier "green"))
-                  ])
-           , SoftBreak
-           , Code
-               "test/typ/visualize/shape-square-02.typ"
-               ( line 5 , column 4 )
-               (FuncCall
-                  (Ident (Identifier "rect"))
-                  [ KeyValArg (Identifier "width") (Literal (Numeric 40.0 Percent))
-                  , KeyValArg (Identifier "height") (Literal (Numeric 5.0 Pt))
-                  , KeyValArg (Identifier "stroke") (Ident (Identifier "green"))
-                  ])
-           , ParBreak
-           ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 square(body: { text(body: [
-]), 
-                                rect(fill: rgb(18%,80%,25%,100%), 
-                                     height: 5.0pt, 
-                                     width: 10.0pt), 
-                                text(body: [
-]), 
-                                rect(height: 5.0pt, 
-                                     stroke: rgb(18%,80%,25%,100%), 
-                                     width: 40%), 
-                                parbreak() }, 
-                        fill: rgb(13%,61%,67%,100%)), 
-                 parbreak() })
diff --git a/test/out/visualize/shape-square-03.out b/test/out/visualize/shape-square-03.out
deleted file mode 100644
--- a/test/out/visualize/shape-square-03.out
+++ /dev/null
@@ -1,89 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/visualize/shape-square-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/visualize/shape-square-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/visualize/shape-square-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/visualize/shape-square-03.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 75.0 Pt))
-       , KeyValArg (Identifier "height") (Literal (Numeric 100.0 Pt))
-       ])
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-square-03.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "square"))
-       [ KeyValArg (Identifier "fill") (Ident (Identifier "green"))
-       , BlockArg
-           [ SoftBreak
-           , Text "But,"
-           , Space
-           , Text "soft!"
-           , Space
-           , Text "what"
-           , Space
-           , Text "light"
-           , Space
-           , Text "through"
-           , Space
-           , Text "yonder"
-           , Space
-           , Text "window"
-           , Space
-           , Text "breaks?"
-           , ParBreak
-           ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 square(body: { text(body: [
-But, soft! what light through yonder window breaks?]), 
-                                parbreak() }, 
-                        fill: rgb(18%,80%,25%,100%)), 
-                 parbreak() })
diff --git a/test/out/visualize/shape-square-04.out b/test/out/visualize/shape-square-04.out
deleted file mode 100644
--- a/test/out/visualize/shape-square-04.out
+++ /dev/null
@@ -1,89 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/visualize/shape-square-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/visualize/shape-square-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/visualize/shape-square-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/visualize/shape-square-04.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Pt))
-       , KeyValArg (Identifier "height") (Literal (Numeric 75.0 Pt))
-       ])
-, SoftBreak
-, Code
-    "test/typ/visualize/shape-square-04.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "square"))
-       [ KeyValArg (Identifier "fill") (Ident (Identifier "green"))
-       , BlockArg
-           [ SoftBreak
-           , Text "But,"
-           , Space
-           , Text "soft!"
-           , Space
-           , Text "what"
-           , Space
-           , Text "light"
-           , Space
-           , Text "through"
-           , Space
-           , Text "yonder"
-           , Space
-           , Text "window"
-           , Space
-           , Text "breaks?"
-           , ParBreak
-           ]
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 square(body: { text(body: [
-But, soft! what light through yonder window breaks?]), 
-                                parbreak() }, 
-                        fill: rgb(18%,80%,25%,100%)), 
-                 parbreak() })
diff --git a/test/out/visualize/shape-square-05.out b/test/out/visualize/shape-square-05.out
deleted file mode 100644
--- a/test/out/visualize/shape-square-05.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/visualize/stroke-00.out b/test/out/visualize/stroke-00.out
deleted file mode 100644
--- a/test/out/visualize/stroke-00.out
+++ /dev/null
@@ -1,165 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/visualize/stroke-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/visualize/stroke-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/visualize/stroke-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/visualize/stroke-00.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "line"))
-       [ KeyValArg (Identifier "length") (Literal (Numeric 60.0 Pt))
-       , KeyValArg (Identifier "stroke") (Ident (Identifier "red"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/visualize/stroke-00.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 3.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/visualize/stroke-00.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "line"))
-       [ KeyValArg (Identifier "length") (Literal (Numeric 60.0 Pt))
-       , KeyValArg (Identifier "stroke") (Literal (Numeric 2.0 Pt))
-       ])
-, SoftBreak
-, Code
-    "test/typ/visualize/stroke-00.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 3.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/visualize/stroke-00.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "line"))
-       [ KeyValArg (Identifier "length") (Literal (Numeric 60.0 Pt))
-       , KeyValArg
-           (Identifier "stroke")
-           (Plus (Ident (Identifier "blue")) (Literal (Numeric 1.5 Pt)))
-       ])
-, SoftBreak
-, Code
-    "test/typ/visualize/stroke-00.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 3.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/visualize/stroke-00.typ"
-    ( line 9 , column 2 )
-    (FuncCall
-       (Ident (Identifier "line"))
-       [ KeyValArg (Identifier "length") (Literal (Numeric 60.0 Pt))
-       , KeyValArg
-           (Identifier "stroke")
-           (Dict
-              [ Reg ( Ident (Identifier "paint") , Ident (Identifier "red") )
-              , Reg ( Ident (Identifier "thickness") , Literal (Numeric 1.0 Pt) )
-              , Reg ( Ident (Identifier "dash") , Literal (String "dashed") )
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/visualize/stroke-00.typ"
-    ( line 10 , column 2 )
-    (FuncCall
-       (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 3.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/visualize/stroke-00.typ"
-    ( line 11 , column 2 )
-    (FuncCall
-       (Ident (Identifier "line"))
-       [ KeyValArg (Identifier "length") (Literal (Numeric 60.0 Pt))
-       , KeyValArg
-           (Identifier "stroke")
-           (Dict
-              [ Reg ( Ident (Identifier "paint") , Ident (Identifier "red") )
-              , Reg ( Ident (Identifier "thickness") , Literal (Numeric 4.0 Pt) )
-              , Reg ( Ident (Identifier "cap") , Literal (String "round") )
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 line(length: 60.0pt, 
-                      stroke: rgb(100%,25%,21%,100%)), 
-                 text(body: [
-]), 
-                 v(amount: 3.0pt), 
-                 text(body: [
-]), 
-                 line(length: 60.0pt, 
-                      stroke: 2.0pt), 
-                 text(body: [
-]), 
-                 v(amount: 3.0pt), 
-                 text(body: [
-]), 
-                 line(length: 60.0pt, 
-                      stroke: (thickness: 1.5pt,
-                               color: rgb(0%,45%,85%,100%))), 
-                 text(body: [
-]), 
-                 v(amount: 3.0pt), 
-                 text(body: [
-]), 
-                 line(length: 60.0pt, 
-                      stroke: (paint: rgb(100%,25%,21%,100%),
-                               thickness: 1.0pt,
-                               dash: "dashed")), 
-                 text(body: [
-]), 
-                 v(amount: 3.0pt), 
-                 text(body: [
-]), 
-                 line(length: 60.0pt, 
-                      stroke: (paint: rgb(100%,25%,21%,100%),
-                               thickness: 4.0pt,
-                               cap: "round")), 
-                 parbreak() })
diff --git a/test/out/visualize/stroke-01.out b/test/out/visualize/stroke-01.out
deleted file mode 100644
--- a/test/out/visualize/stroke-01.out
+++ /dev/null
@@ -1,123 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/visualize/stroke-01.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/visualize/stroke-01.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/visualize/stroke-01.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/visualize/stroke-01.typ"
-    ( line 3 , column 2 )
-    (Set
-       (Ident (Identifier "line"))
-       [ KeyValArg
-           (Identifier "stroke")
-           (Dict
-              [ Reg ( Ident (Identifier "paint") , Ident (Identifier "red") )
-              , Reg ( Ident (Identifier "thickness") , Literal (Numeric 1.0 Pt) )
-              , Reg ( Ident (Identifier "cap") , Literal (String "butt") )
-              , Reg
-                  ( Ident (Identifier "dash") , Literal (String "dash-dotted") )
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/visualize/stroke-01.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "line"))
-       [ KeyValArg (Identifier "length") (Literal (Numeric 60.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/visualize/stroke-01.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 3.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/visualize/stroke-01.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "line"))
-       [ KeyValArg (Identifier "length") (Literal (Numeric 60.0 Pt))
-       , KeyValArg (Identifier "stroke") (Ident (Identifier "blue"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/visualize/stroke-01.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 3.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/visualize/stroke-01.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "line"))
-       [ KeyValArg (Identifier "length") (Literal (Numeric 60.0 Pt))
-       , KeyValArg
-           (Identifier "stroke")
-           (Dict [ Reg ( Ident (Identifier "dash") , Literal None ) ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 line(length: 60.0pt, 
-                      stroke: (paint: rgb(100%,25%,21%,100%),
-                               thickness: 1.0pt,
-                               cap: "butt",
-                               dash: "dash-dotted")), 
-                 text(body: [
-]), 
-                 v(amount: 3.0pt), 
-                 text(body: [
-]), 
-                 line(length: 60.0pt, 
-                      stroke: rgb(0%,45%,85%,100%)), 
-                 text(body: [
-]), 
-                 v(amount: 3.0pt), 
-                 text(body: [
-]), 
-                 line(length: 60.0pt, 
-                      stroke: (dash: none)), 
-                 parbreak() })
diff --git a/test/out/visualize/stroke-02.out b/test/out/visualize/stroke-02.out
deleted file mode 100644
--- a/test/out/visualize/stroke-02.out
+++ /dev/null
@@ -1,127 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/visualize/stroke-02.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/visualize/stroke-02.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/visualize/stroke-02.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/visualize/stroke-02.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "rect"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 20.0 Pt))
-       , KeyValArg (Identifier "height") (Literal (Numeric 20.0 Pt))
-       , KeyValArg (Identifier "stroke") (Ident (Identifier "red"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/visualize/stroke-02.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 3.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/visualize/stroke-02.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "rect"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 20.0 Pt))
-       , KeyValArg (Identifier "height") (Literal (Numeric 20.0 Pt))
-       , KeyValArg
-           (Identifier "stroke")
-           (Dict
-              [ Reg ( Ident (Identifier "rest") , Ident (Identifier "red") )
-              , Reg
-                  ( Ident (Identifier "top")
-                  , Dict
-                      [ Reg ( Ident (Identifier "paint") , Ident (Identifier "blue") )
-                      , Reg ( Ident (Identifier "dash") , Literal (String "dashed") )
-                      ]
-                  )
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/visualize/stroke-02.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 3.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/visualize/stroke-02.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "rect"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 20.0 Pt))
-       , KeyValArg (Identifier "height") (Literal (Numeric 20.0 Pt))
-       , KeyValArg
-           (Identifier "stroke")
-           (Dict
-              [ Reg ( Ident (Identifier "thickness") , Literal (Numeric 5.0 Pt) )
-              , Reg ( Ident (Identifier "join") , Literal (String "round") )
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 rect(height: 20.0pt, 
-                      stroke: rgb(100%,25%,21%,100%), 
-                      width: 20.0pt), 
-                 text(body: [
-]), 
-                 v(amount: 3.0pt), 
-                 text(body: [
-]), 
-                 rect(height: 20.0pt, 
-                      stroke: (rest: rgb(100%,25%,21%,100%),
-                               top: (paint: rgb(0%,45%,85%,100%),
-                                     dash: "dashed")), 
-                      width: 20.0pt), 
-                 text(body: [
-]), 
-                 v(amount: 3.0pt), 
-                 text(body: [
-]), 
-                 rect(height: 20.0pt, 
-                      stroke: (thickness: 5.0pt,
-                               join: "round"), 
-                      width: 20.0pt), 
-                 parbreak() })
diff --git a/test/out/visualize/stroke-03.out b/test/out/visualize/stroke-03.out
deleted file mode 100644
--- a/test/out/visualize/stroke-03.out
+++ /dev/null
@@ -1,228 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/visualize/stroke-03.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/visualize/stroke-03.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/visualize/stroke-03.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/visualize/stroke-03.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "line"))
-       [ KeyValArg (Identifier "length") (Literal (Numeric 60.0 Pt))
-       , KeyValArg
-           (Identifier "stroke")
-           (Dict
-              [ Reg ( Ident (Identifier "paint") , Ident (Identifier "red") )
-              , Reg ( Ident (Identifier "thickness") , Literal (Numeric 1.0 Pt) )
-              , Reg
-                  ( Ident (Identifier "dash")
-                  , Array
-                      [ Reg (Literal (String "dot")) , Reg (Literal (Numeric 1.0 Pt)) ]
-                  )
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/visualize/stroke-03.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 3.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/visualize/stroke-03.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "line"))
-       [ KeyValArg (Identifier "length") (Literal (Numeric 60.0 Pt))
-       , KeyValArg
-           (Identifier "stroke")
-           (Dict
-              [ Reg ( Ident (Identifier "paint") , Ident (Identifier "red") )
-              , Reg ( Ident (Identifier "thickness") , Literal (Numeric 1.0 Pt) )
-              , Reg
-                  ( Ident (Identifier "dash")
-                  , Array
-                      [ Reg (Literal (String "dot"))
-                      , Reg (Literal (Numeric 1.0 Pt))
-                      , Reg (Literal (Numeric 4.0 Pt))
-                      , Reg (Literal (Numeric 2.0 Pt))
-                      ]
-                  )
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/visualize/stroke-03.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 3.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/visualize/stroke-03.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "line"))
-       [ KeyValArg (Identifier "length") (Literal (Numeric 60.0 Pt))
-       , KeyValArg
-           (Identifier "stroke")
-           (Dict
-              [ Reg ( Ident (Identifier "paint") , Ident (Identifier "red") )
-              , Reg ( Ident (Identifier "thickness") , Literal (Numeric 1.0 Pt) )
-              , Reg
-                  ( Ident (Identifier "dash")
-                  , Dict
-                      [ Reg
-                          ( Ident (Identifier "array")
-                          , Array
-                              [ Reg (Literal (String "dot"))
-                              , Reg (Literal (Numeric 1.0 Pt))
-                              , Reg (Literal (Numeric 4.0 Pt))
-                              , Reg (Literal (Numeric 2.0 Pt))
-                              ]
-                          )
-                      , Reg ( Ident (Identifier "phase") , Literal (Numeric 5.0 Pt) )
-                      ]
-                  )
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/visualize/stroke-03.typ"
-    ( line 8 , column 2 )
-    (FuncCall
-       (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 3.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/visualize/stroke-03.typ"
-    ( line 9 , column 2 )
-    (FuncCall
-       (Ident (Identifier "line"))
-       [ KeyValArg (Identifier "length") (Literal (Numeric 60.0 Pt))
-       , KeyValArg
-           (Identifier "stroke")
-           (Dict
-              [ Reg ( Ident (Identifier "paint") , Ident (Identifier "red") )
-              , Reg ( Ident (Identifier "thickness") , Literal (Numeric 1.0 Pt) )
-              , Reg ( Ident (Identifier "dash") , Array [] )
-              ])
-       ])
-, SoftBreak
-, Code
-    "test/typ/visualize/stroke-03.typ"
-    ( line 10 , column 2 )
-    (FuncCall
-       (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 3.0 Pt)) ])
-, SoftBreak
-, Code
-    "test/typ/visualize/stroke-03.typ"
-    ( line 11 , column 2 )
-    (FuncCall
-       (Ident (Identifier "line"))
-       [ KeyValArg (Identifier "length") (Literal (Numeric 60.0 Pt))
-       , KeyValArg
-           (Identifier "stroke")
-           (Dict
-              [ Reg ( Ident (Identifier "paint") , Ident (Identifier "red") )
-              , Reg ( Ident (Identifier "thickness") , Literal (Numeric 1.0 Pt) )
-              , Reg
-                  ( Ident (Identifier "dash")
-                  , Array
-                      [ Reg (Literal (Numeric 1.0 Pt))
-                      , Reg (Literal (Numeric 3.0 Pt))
-                      , Reg (Literal (Numeric 9.0 Pt))
-                      ]
-                  )
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 line(length: 60.0pt, 
-                      stroke: (paint: rgb(100%,25%,21%,100%),
-                               thickness: 1.0pt,
-                               dash: ("dot", 1.0pt))), 
-                 text(body: [
-]), 
-                 v(amount: 3.0pt), 
-                 text(body: [
-]), 
-                 line(length: 60.0pt, 
-                      stroke: (paint: rgb(100%,25%,21%,100%),
-                               thickness: 1.0pt,
-                               dash: ("dot", 
-                                      1.0pt, 
-                                      4.0pt, 
-                                      2.0pt))), 
-                 text(body: [
-]), 
-                 v(amount: 3.0pt), 
-                 text(body: [
-]), 
-                 line(length: 60.0pt, 
-                      stroke: (paint: rgb(100%,25%,21%,100%),
-                               thickness: 1.0pt,
-                               dash: (array: ("dot", 
-                                              1.0pt, 
-                                              4.0pt, 
-                                              2.0pt),
-                                      phase: 5.0pt))), 
-                 text(body: [
-]), 
-                 v(amount: 3.0pt), 
-                 text(body: [
-]), 
-                 line(length: 60.0pt, 
-                      stroke: (paint: rgb(100%,25%,21%,100%),
-                               thickness: 1.0pt,
-                               dash: ())), 
-                 text(body: [
-]), 
-                 v(amount: 3.0pt), 
-                 text(body: [
-]), 
-                 line(length: 60.0pt, 
-                      stroke: (paint: rgb(100%,25%,21%,100%),
-                               thickness: 1.0pt,
-                               dash: (1.0pt, 
-                                      3.0pt, 
-                                      9.0pt))), 
-                 parbreak() })
diff --git a/test/out/visualize/stroke-04.out b/test/out/visualize/stroke-04.out
deleted file mode 100644
--- a/test/out/visualize/stroke-04.out
+++ /dev/null
@@ -1,228 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/visualize/stroke-04.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/visualize/stroke-04.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/visualize/stroke-04.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, Code
-    "test/typ/visualize/stroke-04.typ"
-    ( line 3 , column 2 )
-    (FuncCall
-       (Ident (Identifier "stack"))
-       [ KeyValArg (Identifier "dir") (Ident (Identifier "ltr"))
-       , KeyValArg (Identifier "spacing") (Literal (Numeric 1.0 Em))
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "polygon"))
-              [ KeyValArg
-                  (Identifier "stroke")
-                  (Dict
-                     [ Reg ( Ident (Identifier "thickness") , Literal (Numeric 4.0 Pt) )
-                     , Reg ( Ident (Identifier "paint") , Ident (Identifier "blue") )
-                     , Reg ( Ident (Identifier "join") , Literal (String "round") )
-                     ])
-              , NormalArg
-                  (Array
-                     [ Reg (Literal (Numeric 0.0 Pt))
-                     , Reg (Literal (Numeric 20.0 Pt))
-                     ])
-              , NormalArg
-                  (Array
-                     [ Reg (Literal (Numeric 15.0 Pt))
-                     , Reg (Literal (Numeric 0.0 Pt))
-                     ])
-              , NormalArg
-                  (Array
-                     [ Reg (Literal (Numeric 0.0 Pt))
-                     , Reg (Literal (Numeric 40.0 Pt))
-                     ])
-              , NormalArg
-                  (Array
-                     [ Reg (Literal (Numeric 15.0 Pt))
-                     , Reg (Literal (Numeric 45.0 Pt))
-                     ])
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "polygon"))
-              [ KeyValArg
-                  (Identifier "stroke")
-                  (Dict
-                     [ Reg ( Ident (Identifier "thickness") , Literal (Numeric 4.0 Pt) )
-                     , Reg ( Ident (Identifier "paint") , Ident (Identifier "blue") )
-                     , Reg ( Ident (Identifier "join") , Literal (String "bevel") )
-                     ])
-              , NormalArg
-                  (Array
-                     [ Reg (Literal (Numeric 0.0 Pt))
-                     , Reg (Literal (Numeric 20.0 Pt))
-                     ])
-              , NormalArg
-                  (Array
-                     [ Reg (Literal (Numeric 15.0 Pt))
-                     , Reg (Literal (Numeric 0.0 Pt))
-                     ])
-              , NormalArg
-                  (Array
-                     [ Reg (Literal (Numeric 0.0 Pt))
-                     , Reg (Literal (Numeric 40.0 Pt))
-                     ])
-              , NormalArg
-                  (Array
-                     [ Reg (Literal (Numeric 15.0 Pt))
-                     , Reg (Literal (Numeric 45.0 Pt))
-                     ])
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "polygon"))
-              [ KeyValArg
-                  (Identifier "stroke")
-                  (Dict
-                     [ Reg ( Ident (Identifier "thickness") , Literal (Numeric 4.0 Pt) )
-                     , Reg ( Ident (Identifier "paint") , Ident (Identifier "blue") )
-                     , Reg ( Ident (Identifier "join") , Literal (String "miter") )
-                     ])
-              , NormalArg
-                  (Array
-                     [ Reg (Literal (Numeric 0.0 Pt))
-                     , Reg (Literal (Numeric 20.0 Pt))
-                     ])
-              , NormalArg
-                  (Array
-                     [ Reg (Literal (Numeric 15.0 Pt))
-                     , Reg (Literal (Numeric 0.0 Pt))
-                     ])
-              , NormalArg
-                  (Array
-                     [ Reg (Literal (Numeric 0.0 Pt))
-                     , Reg (Literal (Numeric 40.0 Pt))
-                     ])
-              , NormalArg
-                  (Array
-                     [ Reg (Literal (Numeric 15.0 Pt))
-                     , Reg (Literal (Numeric 45.0 Pt))
-                     ])
-              ])
-       , NormalArg
-           (FuncCall
-              (Ident (Identifier "polygon"))
-              [ KeyValArg
-                  (Identifier "stroke")
-                  (Dict
-                     [ Reg ( Ident (Identifier "thickness") , Literal (Numeric 4.0 Pt) )
-                     , Reg ( Ident (Identifier "paint") , Ident (Identifier "blue") )
-                     , Reg ( Ident (Identifier "join") , Literal (String "miter") )
-                     , Reg ( Ident (Identifier "miter-limit") , Literal (Float 20.0) )
-                     ])
-              , NormalArg
-                  (Array
-                     [ Reg (Literal (Numeric 0.0 Pt))
-                     , Reg (Literal (Numeric 20.0 Pt))
-                     ])
-              , NormalArg
-                  (Array
-                     [ Reg (Literal (Numeric 15.0 Pt))
-                     , Reg (Literal (Numeric 0.0 Pt))
-                     ])
-              , NormalArg
-                  (Array
-                     [ Reg (Literal (Numeric 0.0 Pt))
-                     , Reg (Literal (Numeric 40.0 Pt))
-                     ])
-              , NormalArg
-                  (Array
-                     [ Reg (Literal (Numeric 15.0 Pt))
-                     , Reg (Literal (Numeric 45.0 Pt))
-                     ])
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 stack(children: (polygon(stroke: (thickness: 4.0pt,
-                                                   paint: rgb(0%,45%,85%,100%),
-                                                   join: "round"), 
-                                          vertices: ((0.0pt, 
-                                                      20.0pt), 
-                                                     (15.0pt, 
-                                                      0.0pt), 
-                                                     (0.0pt, 
-                                                      40.0pt), 
-                                                     (15.0pt, 
-                                                      45.0pt))), 
-                                  polygon(stroke: (thickness: 4.0pt,
-                                                   paint: rgb(0%,45%,85%,100%),
-                                                   join: "bevel"), 
-                                          vertices: ((0.0pt, 
-                                                      20.0pt), 
-                                                     (15.0pt, 
-                                                      0.0pt), 
-                                                     (0.0pt, 
-                                                      40.0pt), 
-                                                     (15.0pt, 
-                                                      45.0pt))), 
-                                  polygon(stroke: (thickness: 4.0pt,
-                                                   paint: rgb(0%,45%,85%,100%),
-                                                   join: "miter"), 
-                                          vertices: ((0.0pt, 
-                                                      20.0pt), 
-                                                     (15.0pt, 
-                                                      0.0pt), 
-                                                     (0.0pt, 
-                                                      40.0pt), 
-                                                     (15.0pt, 
-                                                      45.0pt))), 
-                                  polygon(stroke: (thickness: 4.0pt,
-                                                   paint: rgb(0%,45%,85%,100%),
-                                                   join: "miter",
-                                                   miter-limit: 20.0), 
-                                          vertices: ((0.0pt, 
-                                                      20.0pt), 
-                                                     (15.0pt, 
-                                                      0.0pt), 
-                                                     (0.0pt, 
-                                                      40.0pt), 
-                                                     (15.0pt, 
-                                                      45.0pt)))), 
-                       dir: ltr, 
-                       spacing: 1.0em), 
-                 parbreak() })
diff --git a/test/out/visualize/stroke-05.out b/test/out/visualize/stroke-05.out
deleted file mode 100644
--- a/test/out/visualize/stroke-05.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/visualize/stroke-06.out b/test/out/visualize/stroke-06.out
deleted file mode 100644
--- a/test/out/visualize/stroke-06.out
+++ /dev/null
@@ -1,2 +0,0 @@
---- skipped ---
-
diff --git a/test/out/visualize/stroke-07.out b/test/out/visualize/stroke-07.out
deleted file mode 100644
--- a/test/out/visualize/stroke-07.out
+++ /dev/null
@@ -1,327 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/visualize/stroke-07.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/visualize/stroke-07.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/visualize/stroke-07.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Comment
-, SoftBreak
-, Code
-    "test/typ/visualize/stroke-07.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "rect"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 10.0 Pt))
-       , KeyValArg (Identifier "height") (Literal (Numeric 10.0 Pt))
-       , KeyValArg (Identifier "stroke") (Literal None)
-       ])
-, SoftBreak
-, Code
-    "test/typ/visualize/stroke-07.typ"
-    ( line 5 , column 2 )
-    (FuncCall
-       (Ident (Identifier "rect"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 10.0 Pt))
-       , KeyValArg (Identifier "height") (Literal (Numeric 10.0 Pt))
-       , KeyValArg (Identifier "stroke") (Literal (Numeric 0.0 Pt))
-       ])
-, SoftBreak
-, Code
-    "test/typ/visualize/stroke-07.typ"
-    ( line 6 , column 2 )
-    (FuncCall
-       (Ident (Identifier "rect"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 10.0 Pt))
-       , KeyValArg (Identifier "height") (Literal (Numeric 10.0 Pt))
-       , KeyValArg (Identifier "stroke") (Literal None)
-       , KeyValArg (Identifier "fill") (Ident (Identifier "blue"))
-       ])
-, SoftBreak
-, Code
-    "test/typ/visualize/stroke-07.typ"
-    ( line 7 , column 2 )
-    (FuncCall
-       (Ident (Identifier "rect"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 10.0 Pt))
-       , KeyValArg (Identifier "height") (Literal (Numeric 10.0 Pt))
-       , KeyValArg
-           (Identifier "stroke")
-           (Plus (Literal (Numeric 0.0 Pt)) (Ident (Identifier "red")))
-       , KeyValArg (Identifier "fill") (Ident (Identifier "blue"))
-       ])
-, ParBreak
-, Code
-    "test/typ/visualize/stroke-07.typ"
-    ( line 9 , column 2 )
-    (FuncCall
-       (Ident (Identifier "line"))
-       [ KeyValArg (Identifier "length") (Literal (Numeric 30.0 Pt))
-       , KeyValArg (Identifier "stroke") (Literal (Numeric 0.0 Pt))
-       ])
-, SoftBreak
-, Code
-    "test/typ/visualize/stroke-07.typ"
-    ( line 10 , column 2 )
-    (FuncCall
-       (Ident (Identifier "line"))
-       [ KeyValArg (Identifier "length") (Literal (Numeric 30.0 Pt))
-       , KeyValArg
-           (Identifier "stroke")
-           (Dict
-              [ Reg ( Ident (Identifier "paint") , Ident (Identifier "red") )
-              , Reg ( Ident (Identifier "thickness") , Literal (Numeric 0.0 Pt) )
-              , Reg
-                  ( Ident (Identifier "dash")
-                  , Array
-                      [ Reg (Literal (String "dot")) , Reg (Literal (Numeric 1.0 Pt)) ]
-                  )
-              ])
-       ])
-, ParBreak
-, Code
-    "test/typ/visualize/stroke-07.typ"
-    ( line 12 , column 2 )
-    (FuncCall
-       (Ident (Identifier "table"))
-       [ KeyValArg (Identifier "columns") (Literal (Int 2))
-       , KeyValArg (Identifier "stroke") (Literal None)
-       , BlockArg [ Text "A" ]
-       , BlockArg [ Text "B" ]
-       ])
-, SoftBreak
-, Code
-    "test/typ/visualize/stroke-07.typ"
-    ( line 13 , column 2 )
-    (FuncCall
-       (Ident (Identifier "table"))
-       [ KeyValArg (Identifier "columns") (Literal (Int 2))
-       , KeyValArg (Identifier "stroke") (Literal (Numeric 0.0 Pt))
-       , BlockArg [ Text "A" ]
-       , BlockArg [ Text "B" ]
-       ])
-, ParBreak
-, Code
-    "test/typ/visualize/stroke-07.typ"
-    ( line 15 , column 2 )
-    (FuncCall
-       (Ident (Identifier "path"))
-       [ KeyValArg (Identifier "fill") (Ident (Identifier "red"))
-       , KeyValArg (Identifier "stroke") (Literal None)
-       , KeyValArg (Identifier "closed") (Literal (Boolean True))
-       , NormalArg
-           (Array
-              [ Reg
-                  (Array
-                     [ Reg (Literal (Numeric 0.0 Percent))
-                     , Reg (Literal (Numeric 0.0 Percent))
-                     ])
-              , Reg
-                  (Array
-                     [ Reg (Literal (Numeric 4.0 Percent))
-                     , Reg (Negated (Literal (Numeric 4.0 Percent)))
-                     ])
-              ])
-       , NormalArg
-           (Array
-              [ Reg
-                  (Array
-                     [ Reg (Literal (Numeric 50.0 Percent))
-                     , Reg (Literal (Numeric 50.0 Percent))
-                     ])
-              , Reg
-                  (Array
-                     [ Reg (Literal (Numeric 4.0 Percent))
-                     , Reg (Negated (Literal (Numeric 4.0 Percent)))
-                     ])
-              ])
-       , NormalArg
-           (Array
-              [ Reg
-                  (Array
-                     [ Reg (Literal (Numeric 0.0 Percent))
-                     , Reg (Literal (Numeric 50.0 Percent))
-                     ])
-              , Reg
-                  (Array
-                     [ Reg (Literal (Numeric 4.0 Percent))
-                     , Reg (Literal (Numeric 4.0 Percent))
-                     ])
-              ])
-       , NormalArg
-           (Array
-              [ Reg
-                  (Array
-                     [ Reg (Literal (Numeric 50.0 Percent))
-                     , Reg (Literal (Numeric 0.0 Percent))
-                     ])
-              , Reg
-                  (Array
-                     [ Reg (Literal (Numeric 4.0 Percent))
-                     , Reg (Literal (Numeric 4.0 Percent))
-                     ])
-              ])
-       ])
-, ParBreak
-, Code
-    "test/typ/visualize/stroke-07.typ"
-    ( line 25 , column 2 )
-    (FuncCall
-       (Ident (Identifier "path"))
-       [ KeyValArg (Identifier "fill") (Ident (Identifier "red"))
-       , KeyValArg (Identifier "stroke") (Literal (Numeric 0.0 Pt))
-       , KeyValArg (Identifier "closed") (Literal (Boolean True))
-       , NormalArg
-           (Array
-              [ Reg
-                  (Array
-                     [ Reg (Literal (Numeric 0.0 Percent))
-                     , Reg (Literal (Numeric 0.0 Percent))
-                     ])
-              , Reg
-                  (Array
-                     [ Reg (Literal (Numeric 4.0 Percent))
-                     , Reg (Negated (Literal (Numeric 4.0 Percent)))
-                     ])
-              ])
-       , NormalArg
-           (Array
-              [ Reg
-                  (Array
-                     [ Reg (Literal (Numeric 50.0 Percent))
-                     , Reg (Literal (Numeric 50.0 Percent))
-                     ])
-              , Reg
-                  (Array
-                     [ Reg (Literal (Numeric 4.0 Percent))
-                     , Reg (Negated (Literal (Numeric 4.0 Percent)))
-                     ])
-              ])
-       , NormalArg
-           (Array
-              [ Reg
-                  (Array
-                     [ Reg (Literal (Numeric 0.0 Percent))
-                     , Reg (Literal (Numeric 50.0 Percent))
-                     ])
-              , Reg
-                  (Array
-                     [ Reg (Literal (Numeric 4.0 Percent))
-                     , Reg (Literal (Numeric 4.0 Percent))
-                     ])
-              ])
-       , NormalArg
-           (Array
-              [ Reg
-                  (Array
-                     [ Reg (Literal (Numeric 50.0 Percent))
-                     , Reg (Literal (Numeric 0.0 Percent))
-                     ])
-              , Reg
-                  (Array
-                     [ Reg (Literal (Numeric 4.0 Percent))
-                     , Reg (Literal (Numeric 4.0 Percent))
-                     ])
-              ])
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 text(body: [
-]), 
-                 rect(height: 10.0pt, 
-                      stroke: none, 
-                      width: 10.0pt), 
-                 text(body: [
-]), 
-                 rect(height: 10.0pt, 
-                      stroke: 0.0pt, 
-                      width: 10.0pt), 
-                 text(body: [
-]), 
-                 rect(fill: rgb(0%,45%,85%,100%), 
-                      height: 10.0pt, 
-                      stroke: none, 
-                      width: 10.0pt), 
-                 text(body: [
-]), 
-                 rect(fill: rgb(0%,45%,85%,100%), 
-                      height: 10.0pt, 
-                      stroke: (thickness: 0.0pt,
-                               color: rgb(100%,25%,21%,100%)), 
-                      width: 10.0pt), 
-                 parbreak(), 
-                 line(length: 30.0pt, 
-                      stroke: 0.0pt), 
-                 text(body: [
-]), 
-                 line(length: 30.0pt, 
-                      stroke: (paint: rgb(100%,25%,21%,100%),
-                               thickness: 0.0pt,
-                               dash: ("dot", 1.0pt))), 
-                 parbreak(), 
-                 table(children: (text(body: [A]), 
-                                  text(body: [B])), 
-                       columns: 2, 
-                       stroke: none), 
-                 text(body: [
-]), 
-                 table(children: (text(body: [A]), 
-                                  text(body: [B])), 
-                       columns: 2, 
-                       stroke: 0.0pt), 
-                 parbreak(), 
-                 path(closed: true, 
-                      fill: rgb(100%,25%,21%,100%), 
-                      stroke: none, 
-                      vertices: (((0%, 0%), 
-                                  (4%, -4%)), 
-                                 ((50%, 50%), (4%, -4%)), 
-                                 ((0%, 50%), (4%, 4%)), 
-                                 ((50%, 0%), (4%, 4%)))), 
-                 parbreak(), 
-                 path(closed: true, 
-                      fill: rgb(100%,25%,21%,100%), 
-                      stroke: 0.0pt, 
-                      vertices: (((0%, 0%), 
-                                  (4%, -4%)), 
-                                 ((50%, 50%), (4%, -4%)), 
-                                 ((0%, 50%), (4%, 4%)), 
-                                 ((50%, 0%), (4%, 4%)))), 
-                 parbreak() })
diff --git a/test/out/visualize/svg-text-00.out b/test/out/visualize/svg-text-00.out
deleted file mode 100644
--- a/test/out/visualize/svg-text-00.out
+++ /dev/null
@@ -1,72 +0,0 @@
---- parse tree ---
-[ Code
-    "test/typ/visualize/svg-text-00.typ"
-    ( line 1 , column 2 )
-    (Let
-       (BasicBind (Just (Identifier "test")))
-       (FuncExpr
-          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
-          (Block
-             (CodeBlock
-                [ If
-                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
-                      , Block (Content [ Text "\9989" ])
-                      )
-                    , ( Literal (Boolean True)
-                      , Block
-                          (Content
-                             [ Text "\10060"
-                             , Text "("
-                             , Code
-                                 "test/typ/visualize/svg-text-00.typ"
-                                 ( line 1 , column 47 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "x")) ])
-                             , Space
-                             , Text "/"
-                             , Text "="
-                             , Space
-                             , Code
-                                 "test/typ/visualize/svg-text-00.typ"
-                                 ( line 1 , column 59 )
-                                 (FuncCall
-                                    (Ident (Identifier "repr"))
-                                    [ NormalArg (Ident (Identifier "y")) ])
-                             , Text ")"
-                             ])
-                      )
-                    ]
-                ]))))
-, SoftBreak
-, Code
-    "test/typ/visualize/svg-text-00.typ"
-    ( line 2 , column 2 )
-    (Set
-       (Ident (Identifier "page"))
-       [ KeyValArg (Identifier "width") (Literal (Numeric 250.0 Pt)) ])
-, ParBreak
-, Code
-    "test/typ/visualize/svg-text-00.typ"
-    ( line 4 , column 2 )
-    (FuncCall
-       (Ident (Identifier "figure"))
-       [ NormalArg
-           (FuncCall
-              (Ident (Identifier "image"))
-              [ NormalArg (Literal (String "/assets/files/diagram.svg")) ])
-       , KeyValArg
-           (Identifier "caption")
-           (Block
-              (Content
-                 [ Text "A" , Space , Text "textful" , Space , Text "diagram" ]))
-       ])
-, ParBreak
-]
---- evaluated ---
-document(body: { text(body: [
-]), 
-                 parbreak(), 
-                 figure(body: image(path: "/assets/files/diagram.svg"), 
-                        caption: text(body: [A textful diagram])), 
-                 parbreak() })
diff --git a/test/skip/compiler/show-node-05.out b/test/skip/compiler/show-node-05.out
new file mode 100644
--- /dev/null
+++ b/test/skip/compiler/show-node-05.out
@@ -0,0 +1,89 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/show-node-05.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/show-node-05.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/show-node-05.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/show-node-05.typ"
+    ( line 3 , column 2 )
+    (Block
+       (CodeBlock
+          [ Let
+              (BasicBind (Just (Identifier "world")))
+              (Block (Content [ Space , Text "World" , Space ]))
+          , Show (Just (Literal (String "W"))) (Ident (Identifier "strong"))
+          , Ident (Identifier "world")
+          , Block
+              (CodeBlock
+                 [ Set
+                     (Ident (Identifier "text"))
+                     [ NormalArg (Ident (Identifier "blue")) ]
+                 , Show
+                     Nothing
+                     (FuncExpr
+                        [ NormalParam (Identifier "it") ]
+                        (Block
+                           (CodeBlock
+                              [ Show (Just (Literal (String "o"))) (Literal (String "\216"))
+                              , Ident (Identifier "it")
+                              ])))
+                 , Ident (Identifier "world")
+                 ])
+          , Ident (Identifier "world")
+          ]))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: { [ ], 
+                              strong(body: [W]), 
+                              [orld ] }), 
+                 parbreak(), 
+                 text(body: { [ ], 
+                              strong(body: text(body: [W],
+                                                color: rgb(0%,45%,85%,100%))), 
+                              text(body: [Ø],
+                                   color: rgb(0%,45%,85%,100%)), 
+                              text(body: [orld ],
+                                   color: rgb(0%,45%,85%,100%))}), 
+                 text(body: { [ ], 
+                              strong(body: [W]), 
+                              [orld ] }) })
diff --git a/test/skip/compiler/show-node-05.typ b/test/skip/compiler/show-node-05.typ
new file mode 100644
--- /dev/null
+++ b/test/skip/compiler/show-node-05.typ
@@ -0,0 +1,16 @@
+// Test that scoping works as expected.
+#{
+  let world = [ World ]
+  show "W": strong
+  world
+  {
+    set text(blue)
+    show: it => {
+      show "o": "Ø"
+      it
+    }
+    world
+  }
+  world
+}
+
diff --git a/test/skip/compiler/show-text-07.out b/test/skip/compiler/show-text-07.out
new file mode 100644
--- /dev/null
+++ b/test/skip/compiler/show-text-07.out
@@ -0,0 +1,83 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/show-text-07.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/show-text-07.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/show-text-07.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/show-text-07.typ"
+    ( line 3 , column 2 )
+    (Show
+       (Just (Ident (Identifier "list")))
+       (FuncExpr
+          [ NormalParam (Identifier "it") ]
+          (Block
+             (Content
+                [ SoftBreak
+                , Code
+                    "typ/compiler/show-text-07.typ"
+                    ( line 4 , column 4 )
+                    (Show
+                       (Just (Literal (String "World")))
+                       (Block (Content [ Text "\127758" ])))
+                , SoftBreak
+                , Code
+                    "typ/compiler/show-text-07.typ"
+                    ( line 5 , column 4 )
+                    (Ident (Identifier "it"))
+                , ParBreak
+                ]))))
+, ParBreak
+, Text "World"
+, SoftBreak
+, BulletListItem [ Text "World" , ParBreak ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [World
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 list(children: ({ text(body: [🌎]), 
+                                   parbreak() })), 
+                 parbreak() })
diff --git a/test/skip/compiler/show-text-07.typ b/test/skip/compiler/show-text-07.typ
new file mode 100644
--- /dev/null
+++ b/test/skip/compiler/show-text-07.typ
@@ -0,0 +1,9 @@
+// Replace worlds but only in lists.
+#show list: it => [
+  #show "World": [🌎]
+  #it
+]
+
+World
+- World
+
diff --git a/test/typ/bugs/args-sink-00.out b/test/typ/bugs/args-sink-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/bugs/args-sink-00.out
@@ -0,0 +1,79 @@
+--- parse tree ---
+[ Code
+    "typ/bugs/args-sink-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/bugs/args-sink-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/bugs/args-sink-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/bugs/args-sink-00.typ"
+    ( line 2 , column 2 )
+    (LetFunc
+       (Identifier "foo")
+       [ SinkParam (Just (Identifier "body")) ]
+       (FuncCall
+          (Ident (Identifier "repr"))
+          [ NormalArg
+              (FuncCall
+                 (FieldAccess
+                    (Ident (Identifier "pos")) (Ident (Identifier "body")))
+                 [])
+          ]))
+, SoftBreak
+, Code
+    "typ/bugs/args-sink-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "foo"))
+       [ KeyValArg (Identifier "a") (Literal (String "1"))
+       , KeyValArg (Identifier "b") (Literal (String "2"))
+       , NormalArg (Literal (Int 1))
+       , NormalArg (Literal (Int 2))
+       , NormalArg (Literal (Int 3))
+       , NormalArg (Literal (Int 4))
+       , NormalArg (Literal (Int 5))
+       , NormalArg (Literal (Int 6))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [(1, 2, 3, 4, 5, 6)]), 
+                 parbreak() })
diff --git a/test/typ/bugs/args-underscore-00.out b/test/typ/bugs/args-underscore-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/bugs/args-underscore-00.out
@@ -0,0 +1,69 @@
+--- parse tree ---
+[ Code
+    "typ/bugs/args-underscore-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/bugs/args-underscore-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/bugs/args-underscore-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/bugs/args-underscore-00.typ"
+    ( line 2 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "len"))
+                 (FuncCall
+                    (FieldAccess
+                       (Ident (Identifier "map"))
+                       (Array
+                          [ Reg (Literal (Int 1))
+                          , Reg (Literal (Int 2))
+                          , Reg (Literal (Int 3))
+                          ]))
+                    [ NormalArg (FuncExpr [ SkipParam ] (Block (CodeBlock []))) ]))
+              [])
+       , NormalArg (Literal (Int 3))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/bugs/columns-1-00.out b/test/typ/bugs/columns-1-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/bugs/columns-1-00.out
@@ -0,0 +1,86 @@
+--- parse tree ---
+[ Code
+    "typ/bugs/columns-1-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/bugs/columns-1-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/bugs/columns-1-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/bugs/columns-1-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 70.0 Pt)) ])
+, ParBreak
+, Text "Hallo"
+, SoftBreak
+, Code
+    "typ/bugs/columns-1-00.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "columns"))
+       [ NormalArg (Literal (Int 2))
+       , BlockArg
+           [ SoftBreak
+           , Heading 1 [ Text "A" ]
+           , Text "Text"
+           , SoftBreak
+           , Heading 1 [ Text "B" ]
+           , Text "Text"
+           , ParBreak
+           ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [Hallo
+]), 
+                 columns(body: { text(body: [
+]), 
+                                 heading(body: text(body: [A]), 
+                                         level: 1), 
+                                 text(body: [Text
+]), 
+                                 heading(body: text(body: [B]), 
+                                         level: 1), 
+                                 text(body: [Text]), 
+                                 parbreak() }, 
+                         count: 2), 
+                 parbreak() })
diff --git a/test/typ/bugs/flow-1-00.out b/test/typ/bugs/flow-1-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/bugs/flow-1-00.out
@@ -0,0 +1,140 @@
+--- parse tree ---
+[ Code
+    "typ/bugs/flow-1-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/bugs/flow-1-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/bugs/flow-1-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/bugs/flow-1-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 70.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/bugs/flow-1-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "block"))
+       [ BlockArg
+           [ Text "This"
+           , Space
+           , Text "file"
+           , Space
+           , Text "tests"
+           , Space
+           , Text "a"
+           , Space
+           , Text "bug"
+           , Space
+           , Text "where"
+           , Space
+           , Text "an"
+           , Space
+           , Text "almost"
+           , Space
+           , Text "empty"
+           , Space
+           , Text "page"
+           , Space
+           , Text "occurs"
+           , Text "."
+           ]
+       ])
+, SoftBreak
+, Code
+    "typ/bugs/flow-1-00.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "block"))
+       [ BlockArg
+           [ SoftBreak
+           , Text "The"
+           , Space
+           , Text "text"
+           , Space
+           , Text "in"
+           , Space
+           , Text "this"
+           , Space
+           , Text "second"
+           , Space
+           , Text "block"
+           , Space
+           , Text "was"
+           , Space
+           , Text "torn"
+           , Space
+           , Text "apart"
+           , Space
+           , Text "and"
+           , Space
+           , Text "split"
+           , Space
+           , Text "up"
+           , Space
+           , Text "for"
+           , SoftBreak
+           , Text "some"
+           , Space
+           , Text "reason"
+           , Space
+           , Text "beyond"
+           , Space
+           , Text "my"
+           , Space
+           , Text "knowledge"
+           , Text "."
+           , ParBreak
+           ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 block(body: text(body: [This file tests a bug where an almost empty page occurs.])), 
+                 text(body: [
+]), 
+                 block(body: { text(body: [
+The text in this second block was torn apart and split up for
+some reason beyond my knowledge.]), 
+                               parbreak() }), 
+                 parbreak() })
diff --git a/test/typ/bugs/flow-2-00.out b/test/typ/bugs/flow-2-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/bugs/flow-2-00.out
@@ -0,0 +1,113 @@
+--- parse tree ---
+[ Code
+    "typ/bugs/flow-2-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/bugs/flow-2-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/bugs/flow-2-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/bugs/flow-2-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 60.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/bugs/flow-2-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 19.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/bugs/flow-2-00.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "block"))
+       [ BlockArg
+           [ SoftBreak
+           , Text "But,"
+           , Space
+           , Text "soft!"
+           , Space
+           , Text "what"
+           , Space
+           , Text "light"
+           , Space
+           , Text "through"
+           , Space
+           , Text "yonder"
+           , Space
+           , Text "window"
+           , Space
+           , Text "breaks?"
+           , SoftBreak
+           , Text "It"
+           , Space
+           , Text "is"
+           , Space
+           , Text "the"
+           , Space
+           , Text "east,"
+           , Space
+           , Text "and"
+           , Space
+           , Text "Juliet"
+           , Space
+           , Text "is"
+           , Space
+           , Text "the"
+           , Space
+           , Text "sun"
+           , Text "."
+           , ParBreak
+           ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 v(amount: 19.0pt), 
+                 text(body: [
+]), 
+                 block(body: { text(body: [
+But, soft! what light through yonder window breaks?
+It is the east, and Juliet is the sun.]), 
+                               parbreak() }), 
+                 parbreak() })
diff --git a/test/typ/bugs/flow-3-00.out b/test/typ/bugs/flow-3-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/bugs/flow-3-00.out
@@ -0,0 +1,111 @@
+--- parse tree ---
+[ Code
+    "typ/bugs/flow-3-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/bugs/flow-3-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/bugs/flow-3-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/bugs/flow-3-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 60.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/bugs/flow-3-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "rect"))
+       [ KeyValArg (Identifier "inset") (Literal (Numeric 0.0 Pt))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "columns"))
+              [ NormalArg (Literal (Int 2))
+              , BlockArg
+                  [ SoftBreak
+                  , Text "Text"
+                  , SoftBreak
+                  , Code
+                      "typ/bugs/flow-3-00.typ"
+                      ( line 5 , column 4 )
+                      (FuncCall
+                         (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 12.0 Pt)) ])
+                  , SoftBreak
+                  , Text "Hi"
+                  , SoftBreak
+                  , Code
+                      "typ/bugs/flow-3-00.typ"
+                      ( line 7 , column 4 )
+                      (FuncCall
+                         (Ident (Identifier "v"))
+                         [ NormalArg (Literal (Numeric 10.0 Pt))
+                         , KeyValArg (Identifier "weak") (Literal (Boolean True))
+                         ])
+                  , SoftBreak
+                  , Text "At"
+                  , Space
+                  , Text "column"
+                  , Space
+                  , Text "break"
+                  , Text "."
+                  , ParBreak
+                  ]
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 rect(body: columns(body: { text(body: [
+Text
+]), 
+                                            v(amount: 12.0pt), 
+                                            text(body: [
+Hi
+]), 
+                                            v(amount: 10.0pt, 
+                                              weak: true), 
+                                            text(body: [
+At column break.]), 
+                                            parbreak() }, 
+                                    count: 2), 
+                      inset: 0.0pt), 
+                 parbreak() })
diff --git a/test/typ/bugs/flow-4-00.out b/test/typ/bugs/flow-4-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/bugs/flow-4-00.out
@@ -0,0 +1,66 @@
+--- parse tree ---
+[ Code
+    "typ/bugs/flow-4-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/bugs/flow-4-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/bugs/flow-4-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/bugs/flow-4-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 105.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/bugs/flow-4-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "block"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 20)) ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 block(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut]), 
+                 parbreak() })
diff --git a/test/typ/bugs/grid-1-00.out b/test/typ/bugs/grid-1-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/bugs/grid-1-00.out
@@ -0,0 +1,96 @@
+--- parse tree ---
+[ Code
+    "typ/bugs/grid-1-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/bugs/grid-1-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/bugs/grid-1-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/bugs/grid-1-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 150.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/bugs/grid-1-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "table"))
+       [ KeyValArg
+           (Identifier "columns")
+           (Array [ Reg (Literal (Numeric 1.5 Cm)) , Reg (Literal Auto) ])
+       , KeyValArg
+           (Identifier "rows")
+           (Array [ Reg (Literal Auto) , Reg (Literal Auto) ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
+              , KeyValArg (Identifier "fill") (Ident (Identifier "red"))
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
+              , KeyValArg (Identifier "fill") (Ident (Identifier "blue"))
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
+              , KeyValArg (Identifier "height") (Literal (Numeric 50.0 Percent))
+              , KeyValArg (Identifier "fill") (Ident (Identifier "green"))
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 table(children: (rect(fill: rgb(100%,25%,21%,100%), 
+                                       width: 100%), 
+                                  rect(fill: rgb(0%,45%,85%,100%), 
+                                       width: 100%), 
+                                  rect(fill: rgb(18%,80%,25%,100%), 
+                                       height: 50%, 
+                                       width: 100%)), 
+                       columns: (1.5cm, auto), 
+                       rows: (auto, auto)), 
+                 parbreak() })
diff --git a/test/typ/bugs/grid-1-01.out b/test/typ/bugs/grid-1-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/bugs/grid-1-01.out
@@ -0,0 +1,87 @@
+--- parse tree ---
+[ Code
+    "typ/bugs/grid-1-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/bugs/grid-1-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/bugs/grid-1-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/bugs/grid-1-01.typ"
+    ( line 2 , column 2 )
+    (FuncCall
+       (Ident (Identifier "rect"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
+       , KeyValArg (Identifier "height") (Literal (Numeric 1.0 Em))
+       ])
+, SoftBreak
+, BulletListItem
+    [ Code
+        "typ/bugs/grid-1-01.typ"
+        ( line 3 , column 4 )
+        (FuncCall
+           (Ident (Identifier "rect"))
+           [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
+           , KeyValArg (Identifier "height") (Literal (Numeric 1.0 Em))
+           ])
+    , SoftBreak
+    , BulletListItem
+        [ Code
+            "typ/bugs/grid-1-01.typ"
+            ( line 4 , column 6 )
+            (FuncCall
+               (Ident (Identifier "rect"))
+               [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
+               , KeyValArg (Identifier "height") (Literal (Numeric 1.0 Em))
+               ])
+        , ParBreak
+        ]
+    ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 rect(height: 1.0em, 
+                      width: 100%), 
+                 text(body: [
+]), 
+                 list(children: ({ rect(height: 1.0em, 
+                                        width: 100%), 
+                                   text(body: [
+]), 
+                                   list(children: ({ rect(height: 1.0em, 
+                                                          width: 100%), 
+                                                     parbreak() })) })) })
diff --git a/test/typ/bugs/grid-2-00.out b/test/typ/bugs/grid-2-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/bugs/grid-2-00.out
@@ -0,0 +1,167 @@
+--- parse tree ---
+[ Code
+    "typ/bugs/grid-2-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/bugs/grid-2-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/bugs/grid-2-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/bugs/grid-2-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 100.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/bugs/grid-2-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "grid"))
+       [ KeyValArg
+           (Identifier "columns")
+           (Array [ Reg (Literal (Numeric 2.0 Cm)) , Reg (Literal Auto) ])
+       , KeyValArg
+           (Identifier "rows")
+           (Array [ Reg (Literal Auto) , Reg (Literal Auto) ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
+              , KeyValArg (Identifier "fill") (Ident (Identifier "red"))
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
+              , KeyValArg (Identifier "fill") (Ident (Identifier "blue"))
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
+              , KeyValArg (Identifier "height") (Literal (Numeric 80.0 Percent))
+              , KeyValArg (Identifier "fill") (Ident (Identifier "green"))
+              ])
+       , NormalArg
+           (Block
+              (Content
+                 [ Text "hello"
+                 , Space
+                 , HardBreak
+                 , Text "darkness"
+                 , Space
+                 , Code
+                     "typ/bugs/grid-2-00.typ"
+                     ( line 9 , column 22 )
+                     (Ident (Identifier "parbreak"))
+                 , Space
+                 , Text "my"
+                 , Space
+                 , HardBreak
+                 , Text "old"
+                 , Space
+                 , HardBreak
+                 , Text "friend"
+                 , Space
+                 , HardBreak
+                 , Text "I"
+                 ]))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
+              , KeyValArg (Identifier "height") (Literal (Numeric 20.0 Percent))
+              , KeyValArg (Identifier "fill") (Ident (Identifier "blue"))
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "polygon"))
+              [ KeyValArg (Identifier "fill") (Ident (Identifier "red"))
+              , NormalArg
+                  (Array
+                     [ Reg (Literal (Numeric 0.0 Percent))
+                     , Reg (Literal (Numeric 0.0 Percent))
+                     ])
+              , NormalArg
+                  (Array
+                     [ Reg (Literal (Numeric 100.0 Percent))
+                     , Reg (Literal (Numeric 0.0 Percent))
+                     ])
+              , NormalArg
+                  (Array
+                     [ Reg (Literal (Numeric 100.0 Percent))
+                     , Reg (Literal (Numeric 20.0 Percent))
+                     ])
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 grid(children: (rect(fill: rgb(100%,25%,21%,100%), 
+                                      width: 100%), 
+                                 rect(fill: rgb(0%,45%,85%,100%), 
+                                      width: 100%), 
+                                 rect(fill: rgb(18%,80%,25%,100%), 
+                                      height: 80%, 
+                                      width: 100%), 
+                                 { text(body: [hello ]), 
+                                   linebreak(), 
+                                   text(body: [darkness ]), 
+                                   text(body: [ my ]), 
+                                   linebreak(), 
+                                   text(body: [old ]), 
+                                   linebreak(), 
+                                   text(body: [friend ]), 
+                                   linebreak(), 
+                                   text(body: [I]) }, 
+                                 rect(fill: rgb(0%,45%,85%,100%), 
+                                      height: 20%, 
+                                      width: 100%), 
+                                 polygon(fill: rgb(100%,25%,21%,100%), 
+                                         vertices: ((0%, 
+                                                     0%), 
+                                                    (100%, 
+                                                     0%), 
+                                                    (100%, 
+                                                     20%)))), 
+                      columns: (2.0cm, auto), 
+                      rows: (auto, auto)), 
+                 parbreak() })
diff --git a/test/typ/bugs/grid-2-01.out b/test/typ/bugs/grid-2-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/bugs/grid-2-01.out
@@ -0,0 +1,73 @@
+--- parse tree ---
+[ Code
+    "typ/bugs/grid-2-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/bugs/grid-2-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/bugs/grid-2-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/bugs/grid-2-01.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 60.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/bugs/grid-2-01.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 5)) ])
+, SoftBreak
+, BulletListItem
+    [ Code
+        "typ/bugs/grid-2-01.typ"
+        ( line 4 , column 4 )
+        (FuncCall
+           (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 5)) ])
+    , ParBreak
+    ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [Lorem ipsum dolor sit amet,]), 
+                 text(body: [
+]), 
+                 list(children: ({ text(body: [Lorem ipsum dolor sit amet,]), 
+                                   parbreak() })) })
diff --git a/test/typ/bugs/grid-3-00.out b/test/typ/bugs/grid-3-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/bugs/grid-3-00.out
@@ -0,0 +1,75 @@
+--- parse tree ---
+[ Code
+    "typ/bugs/grid-3-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/bugs/grid-3-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/bugs/grid-3-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/bugs/grid-3-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 70.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/bugs/grid-3-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 40.0 Pt)) ])
+, SoftBreak
+, Text "The"
+, Space
+, Text "following"
+, Text ":"
+, SoftBreak
+, EnumListItem Nothing [ Text "A" ]
+, SoftBreak
+, EnumListItem Nothing [ Text "B" , ParBreak ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 v(amount: 40.0pt), 
+                 text(body: [
+The following:
+]), 
+                 enum(children: (text(body: [A]), 
+                                 { text(body: [B]), 
+                                   parbreak() })) })
diff --git a/test/typ/bugs/math-realize-00.out b/test/typ/bugs/math-realize-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/bugs/math-realize-00.out
@@ -0,0 +1,240 @@
+--- parse tree ---
+[ Code
+    "typ/bugs/math-realize-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/bugs/math-realize-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/bugs/math-realize-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/bugs/math-realize-00.typ"
+    ( line 2 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "my")))
+       (Block
+          (Content
+             [ Equation
+                 False
+                 [ Code
+                     "typ/bugs/math-realize-00.typ"
+                     ( line 2 , column 12 )
+                     (Ident (Identifier "pi"))
+                 ]
+             ])))
+, SoftBreak
+, Code
+    "typ/bugs/math-realize-00.typ"
+    ( line 3 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "f1")))
+       (FuncCall
+          (Ident (Identifier "box"))
+          [ KeyValArg (Identifier "baseline") (Literal (Numeric 10.0 Pt))
+          , NormalArg (Block (Content [ Text "f" ]))
+          ]))
+, SoftBreak
+, Code
+    "typ/bugs/math-realize-00.typ"
+    ( line 4 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "f2")))
+       (FuncCall
+          (Ident (Identifier "style"))
+          [ NormalArg
+              (FuncExpr
+                 [ NormalParam (Identifier "sty") ] (Ident (Identifier "f1")))
+          ]))
+, SoftBreak
+, Code
+    "typ/bugs/math-realize-00.typ"
+    ( line 5 , column 2 )
+    (Show
+       (Just
+          (FieldAccess
+             (Ident (Identifier "vec")) (Ident (Identifier "math"))))
+       (Block (Content [ Text "nope" ])))
+, ParBreak
+, Equation
+    True
+    [ Code
+        "typ/bugs/math-realize-00.typ"
+        ( line 7 , column 3 )
+        (Ident (Identifier "pi"))
+    , Text "a"
+    ]
+, SoftBreak
+, Equation
+    True
+    [ Code
+        "typ/bugs/math-realize-00.typ"
+        ( line 8 , column 3 )
+        (Ident (Identifier "my"))
+    , Text "a"
+    ]
+, SoftBreak
+, Equation
+    True
+    [ Text "1"
+    , Text "+"
+    , Code
+        "typ/bugs/math-realize-00.typ"
+        ( line 9 , column 7 )
+        (FuncCall
+           (Ident (Identifier "sqrt"))
+           [ BlockArg [ MFrac (Text "x") (Text "2") ] ])
+    , Text "+"
+    , Code
+        "typ/bugs/math-realize-00.typ"
+        ( line 9 , column 19 )
+        (FuncCall
+           (Ident (Identifier "sqrt"))
+           [ NormalArg
+               (FuncCall
+                  (Ident (Identifier "hide"))
+                  [ NormalArg
+                      (Block
+                         (Content [ Equation False [ MFrac (Text "x") (Text "2") ] ]))
+                  ])
+           ])
+    ]
+, SoftBreak
+, Equation
+    True
+    [ Text "a"
+    , Text "x"
+    , Code
+        "typ/bugs/math-realize-00.typ"
+        ( line 10 , column 8 )
+        (FuncCall
+           (Ident (Identifier "link"))
+           [ NormalArg (Literal (String "url"))
+           , NormalArg
+               (Block (Content [ Equation False [ Text "+" , Text "b" ] ]))
+           ])
+    ]
+, SoftBreak
+, Equation
+    True
+    [ Text "f"
+    , Code
+        "typ/bugs/math-realize-00.typ"
+        ( line 11 , column 5 )
+        (Ident (Identifier "f1"))
+    , Code
+        "typ/bugs/math-realize-00.typ"
+        ( line 11 , column 8 )
+        (Ident (Identifier "f2"))
+    ]
+, SoftBreak
+, Equation
+    True
+    [ Code
+        "typ/bugs/math-realize-00.typ"
+        ( line 12 , column 3 )
+        (FuncCall
+           (Ident (Identifier "vec"))
+           [ BlockArg [ Text "1" ] , BlockArg [ Text "2" ] ])
+    , Code
+        "typ/bugs/math-realize-00.typ"
+        ( line 12 , column 12 )
+        (Ident (Identifier "convolve"))
+    , Text "2"
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 math.equation(block: true, 
+                               body: { text(body: [π]), 
+                                       text(body: [a]) }, 
+                               numbering: none), 
+                 text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { math.equation(block: false, 
+                                                     body: text(body: [π]), 
+                                                     numbering: none), 
+                                       text(body: [a]) }, 
+                               numbering: none), 
+                 text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [1]), 
+                                       text(body: [+]), 
+                                       math.sqrt(radicand: math.frac(denom: text(body: [2]), 
+                                                                     num: text(body: [x]))), 
+                                       text(body: [+]), 
+                                       math.sqrt(radicand: hide(body: math.equation(block: false, 
+                                                                                    body: math.frac(denom: text(body: [2]), 
+                                                                                                    num: text(body: [x])), 
+                                                                                    numbering: none))) }, 
+                               numbering: none), 
+                 text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [a]), 
+                                       text(body: [x]), 
+                                       link(body: math.equation(block: false, 
+                                                                body: { text(body: [+]), 
+                                                                        text(body: [b]) }, 
+                                                                numbering: none), 
+                                            dest: "url") }, 
+                               numbering: none), 
+                 text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [f]), 
+                                       box(baseline: 10.0pt, 
+                                           body: text(body: [f])), 
+                                       box(baseline: 10.0pt, 
+                                           body: text(body: [f])) }, 
+                               numbering: none), 
+                 text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [nope]), 
+                                       text(body: [∗]), 
+                                       text(body: [2]) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/bugs/math-realize-01.out b/test/typ/bugs/math-realize-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/bugs/math-realize-01.out
@@ -0,0 +1,152 @@
+--- parse tree ---
+[ Code
+    "typ/bugs/math-realize-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/bugs/math-realize-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/bugs/math-realize-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Equation
+    True
+    [ MAttach Nothing (Just (Text "2")) (Text "x")
+    , Code
+        "typ/bugs/math-realize-01.typ"
+        ( line 2 , column 8 )
+        (FuncCall
+           (Ident (Identifier "hide"))
+           [ BlockArg
+               [ Equation
+                   False
+                   [ MGroup
+                       (Just "(")
+                       (Just ")")
+                       [ Code
+                           "typ/bugs/math-realize-01.typ"
+                           ( line 2 , column 15 )
+                           (FieldAccess (Ident (Identifier "eq")) (Ident (Identifier "gt")))
+                       , Code
+                           "typ/bugs/math-realize-01.typ"
+                           ( line 2 , column 18 )
+                           (FieldAccess (Ident (Identifier "alt")) (Ident (Identifier "phi")))
+                       ]
+                   , Code
+                       "typ/bugs/math-realize-01.typ"
+                       ( line 2 , column 27 )
+                       (Ident (Identifier "union"))
+                   , MAttach Nothing (Just (Text "2")) (Text "y")
+                   , Text "0"
+                   ]
+               ]
+           ])
+    , MAttach Nothing (Just (Text "2")) (Text "z")
+    ]
+, SoftBreak
+, Text "Hello"
+, Space
+, Code
+    "typ/bugs/math-realize-01.typ"
+    ( line 3 , column 8 )
+    (FuncCall
+       (Ident (Identifier "hide"))
+       [ BlockArg [ Text "there" , Space , Equation False [ Text "x" ] ]
+       ])
+, SoftBreak
+, Text "and"
+, Space
+, Code
+    "typ/bugs/math-realize-01.typ"
+    ( line 4 , column 6 )
+    (FuncCall
+       (Ident (Identifier "hide"))
+       [ BlockArg
+           [ Equation
+               True
+               [ MGroup
+                   Nothing
+                   Nothing
+                   [ Text "f" , MGroup (Just "(") (Just ")") [ Text "x" ] ]
+               , Code
+                   "typ/bugs/math-realize-01.typ"
+                   ( line 4 , column 18 )
+                   (FieldAccess
+                      (Ident (Identifier "eq")) (Ident (Identifier "colon")))
+               , MAttach Nothing (Just (Text "2")) (Text "x")
+               ]
+           ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { math.attach(b: none, 
+                                                   base: text(body: [x]), 
+                                                   t: text(body: [2])), 
+                                       hide(body: math.equation(block: false, 
+                                                                body: { math.lr(body: ({ [(], 
+                                                                                         text(body: [≥]), 
+                                                                                         text(body: [ϕ]), 
+                                                                                         [)] })), 
+                                                                        text(body: [∪]), 
+                                                                        math.attach(b: none, 
+                                                                                    base: text(body: [y]), 
+                                                                                    t: text(body: [2])), 
+                                                                        text(body: [0]) }, 
+                                                                numbering: none)), 
+                                       math.attach(b: none, 
+                                                   base: text(body: [z]), 
+                                                   t: text(body: [2])) }, 
+                               numbering: none), 
+                 text(body: [
+Hello ]), 
+                 hide(body: { text(body: [there ]), 
+                              math.equation(block: false, 
+                                            body: text(body: [x]), 
+                                            numbering: none) }), 
+                 text(body: [
+and ]), 
+                 hide(body: math.equation(block: true, 
+                                          body: { text(body: [f]), 
+                                                  math.lr(body: ({ [(], 
+                                                                   text(body: [x]), 
+                                                                   [)] })), 
+                                                  text(body: [≔]), 
+                                                  math.attach(b: none, 
+                                                              base: text(body: [x]), 
+                                                              t: text(body: [2])) }, 
+                                          numbering: none)), 
+                 parbreak() })
diff --git a/test/typ/bugs/math-realize-02.out b/test/typ/bugs/math-realize-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/bugs/math-realize-02.out
@@ -0,0 +1,455 @@
+--- parse tree ---
+[ Code
+    "typ/bugs/math-realize-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/bugs/math-realize-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/bugs/math-realize-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/bugs/math-realize-02.typ"
+    ( line 3 , column 2 )
+    (LetFunc
+       (Identifier "foo")
+       [ NormalParam (Identifier "v1") , NormalParam (Identifier "v2") ]
+       (Block
+          (CodeBlock
+             [ Block
+                 (Content
+                    [ Equation
+                        False
+                        [ Code
+                            "typ/bugs/math-realize-02.typ"
+                            ( line 6 , column 4 )
+                            (Ident (Identifier "v1"))
+                        , MAttach
+                            Nothing
+                            (Just (Text "2"))
+                            (Code
+                               "typ/bugs/math-realize-02.typ"
+                               ( line 6 , column 7 )
+                               (Ident (Identifier "v2")))
+                        ]
+                    ])
+             ])))
+, SoftBreak
+, Code
+    "typ/bugs/math-realize-02.typ"
+    ( line 8 , column 2 )
+    (LetFunc
+       (Identifier "bar")
+       [ NormalParam (Identifier "v1") , NormalParam (Identifier "v2") ]
+       (Block
+          (CodeBlock
+             [ Block
+                 (Content
+                    [ Equation
+                        True
+                        [ Code
+                            "typ/bugs/math-realize-02.typ"
+                            ( line 11 , column 5 )
+                            (Ident (Identifier "v1"))
+                        , MAttach
+                            Nothing
+                            (Just (Text "2"))
+                            (Code
+                               "typ/bugs/math-realize-02.typ"
+                               ( line 11 , column 8 )
+                               (Ident (Identifier "v2")))
+                        ]
+                    ])
+             ])))
+, SoftBreak
+, Code
+    "typ/bugs/math-realize-02.typ"
+    ( line 13 , column 2 )
+    (LetFunc
+       (Identifier "baz")
+       [ SinkParam (Just (Identifier "sink")) ]
+       (Block
+          (CodeBlock
+             [ FuncCall
+                 (FieldAccess
+                    (Ident (Identifier "join"))
+                    (FuncCall
+                       (FieldAccess
+                          (Ident (Identifier "map"))
+                          (FuncCall
+                             (FieldAccess
+                                (Ident (Identifier "pos")) (Ident (Identifier "sink")))
+                             []))
+                       [ NormalArg
+                           (FuncExpr
+                              [ NormalParam (Identifier "x") ]
+                              (Block
+                                 (Content
+                                    [ Equation
+                                        False
+                                        [ Code
+                                            "typ/bugs/math-realize-02.typ"
+                                            ( line 15 , column 24 )
+                                            (FuncCall
+                                               (Ident (Identifier "hat"))
+                                               [ NormalArg (Ident (Identifier "x")) ])
+                                        ]
+                                    ])))
+                       ]))
+                 [ NormalArg
+                     (FieldAccess (Ident (Identifier "and")) (Ident (Identifier "sym")))
+                 ]
+             ])))
+, ParBreak
+, Text "Inline"
+, Space
+, Equation
+    False
+    [ Text "2"
+    , Code
+        "typ/bugs/math-realize-02.typ"
+        ( line 18 , column 11 )
+        (FuncCall
+           (Ident (Identifier "foo"))
+           [ BlockArg
+               [ Code
+                   "typ/bugs/math-realize-02.typ"
+                   ( line 18 , column 15 )
+                   (Ident (Identifier "alpha"))
+               ]
+           , BlockArg
+               [ MGroup
+                   (Just "(")
+                   (Just ")")
+                   [ Text "M"
+                   , Text "+"
+                   , Code
+                       "typ/bugs/math-realize-02.typ"
+                       ( line 18 , column 25 )
+                       (FuncCall
+                          (Ident (Identifier "foo"))
+                          [ BlockArg [ Text "a" ] , BlockArg [ Text "b" ] ])
+                   ]
+               ]
+           ])
+    ]
+, Text "."
+, ParBreak
+, Text "Inline"
+, Space
+, Equation
+    False
+    [ Text "2"
+    , Code
+        "typ/bugs/math-realize-02.typ"
+        ( line 20 , column 11 )
+        (FuncCall
+           (Ident (Identifier "bar"))
+           [ BlockArg
+               [ Code
+                   "typ/bugs/math-realize-02.typ"
+                   ( line 20 , column 15 )
+                   (Ident (Identifier "alpha"))
+               ]
+           , BlockArg
+               [ MGroup
+                   (Just "(")
+                   (Just ")")
+                   [ Text "M"
+                   , Text "+"
+                   , Code
+                       "typ/bugs/math-realize-02.typ"
+                       ( line 20 , column 25 )
+                       (FuncCall
+                          (Ident (Identifier "foo"))
+                          [ BlockArg [ Text "a" ] , BlockArg [ Text "b" ] ])
+                   ]
+               ]
+           ])
+    ]
+, Text "."
+, ParBreak
+, Text "Inline"
+, Space
+, Equation
+    False
+    [ Text "2"
+    , Code
+        "typ/bugs/math-realize-02.typ"
+        ( line 22 , column 11 )
+        (FuncCall
+           (Ident (Identifier "baz"))
+           [ BlockArg [ Text "x" ]
+           , BlockArg [ Text "y" ]
+           , BlockArg
+               [ Code
+                   "typ/bugs/math-realize-02.typ"
+                   ( line 22 , column 19 )
+                   (FuncCall
+                      (Ident (Identifier "baz"))
+                      [ BlockArg [ Text "u" ] , BlockArg [ Text "v" ] ])
+               ]
+           ])
+    ]
+, Text "."
+, ParBreak
+, Equation
+    True
+    [ Text "2"
+    , Code
+        "typ/bugs/math-realize-02.typ"
+        ( line 24 , column 5 )
+        (FuncCall
+           (Ident (Identifier "foo"))
+           [ BlockArg
+               [ Code
+                   "typ/bugs/math-realize-02.typ"
+                   ( line 24 , column 9 )
+                   (Ident (Identifier "alpha"))
+               ]
+           , BlockArg
+               [ MGroup
+                   (Just "(")
+                   (Just ")")
+                   [ Text "M"
+                   , Text "+"
+                   , Code
+                       "typ/bugs/math-realize-02.typ"
+                       ( line 24 , column 19 )
+                       (FuncCall
+                          (Ident (Identifier "foo"))
+                          [ BlockArg [ Text "a" ] , BlockArg [ Text "b" ] ])
+                   ]
+               ]
+           ])
+    ]
+, SoftBreak
+, Equation
+    True
+    [ Text "2"
+    , Code
+        "typ/bugs/math-realize-02.typ"
+        ( line 25 , column 5 )
+        (FuncCall
+           (Ident (Identifier "bar"))
+           [ BlockArg
+               [ Code
+                   "typ/bugs/math-realize-02.typ"
+                   ( line 25 , column 9 )
+                   (Ident (Identifier "alpha"))
+               ]
+           , BlockArg
+               [ MGroup
+                   (Just "(")
+                   (Just ")")
+                   [ Text "M"
+                   , Text "+"
+                   , Code
+                       "typ/bugs/math-realize-02.typ"
+                       ( line 25 , column 19 )
+                       (FuncCall
+                          (Ident (Identifier "foo"))
+                          [ BlockArg [ Text "a" ] , BlockArg [ Text "b" ] ])
+                   ]
+               ]
+           ])
+    ]
+, SoftBreak
+, Equation
+    True
+    [ Text "2"
+    , Code
+        "typ/bugs/math-realize-02.typ"
+        ( line 26 , column 5 )
+        (FuncCall
+           (Ident (Identifier "baz"))
+           [ BlockArg [ Text "x" ]
+           , BlockArg [ Text "y" ]
+           , BlockArg
+               [ Code
+                   "typ/bugs/math-realize-02.typ"
+                   ( line 26 , column 13 )
+                   (FuncCall
+                      (Ident (Identifier "baz"))
+                      [ BlockArg [ Text "u" ] , BlockArg [ Text "v" ] ])
+               ]
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [Inline ]), 
+                 math.equation(block: false, 
+                               body: { text(body: [2]), 
+                                       math.equation(block: false, 
+                                                     body: { text(body: [α]), 
+                                                             math.attach(b: none, 
+                                                                         base: math.lr(body: ({ [(], 
+                                                                                                text(body: [M]), 
+                                                                                                text(body: [+]), 
+                                                                                                math.equation(block: false, 
+                                                                                                              body: { text(body: [a]), 
+                                                                                                                      math.attach(b: none, 
+                                                                                                                                  base: text(body: [b]), 
+                                                                                                                                  t: text(body: [2])) }, 
+                                                                                                              numbering: none), 
+                                                                                                [)] })), 
+                                                                         t: text(body: [2])) }, 
+                                                     numbering: none) }, 
+                               numbering: none), 
+                 text(body: [.]), 
+                 parbreak(), 
+                 text(body: [Inline ]), 
+                 math.equation(block: false, 
+                               body: { text(body: [2]), 
+                                       math.equation(block: true, 
+                                                     body: { text(body: [α]), 
+                                                             math.attach(b: none, 
+                                                                         base: math.lr(body: ({ [(], 
+                                                                                                text(body: [M]), 
+                                                                                                text(body: [+]), 
+                                                                                                math.equation(block: false, 
+                                                                                                              body: { text(body: [a]), 
+                                                                                                                      math.attach(b: none, 
+                                                                                                                                  base: text(body: [b]), 
+                                                                                                                                  t: text(body: [2])) }, 
+                                                                                                              numbering: none), 
+                                                                                                [)] })), 
+                                                                         t: text(body: [2])) }, 
+                                                     numbering: none) }, 
+                               numbering: none), 
+                 text(body: [.]), 
+                 parbreak(), 
+                 text(body: [Inline ]), 
+                 math.equation(block: false, 
+                               body: { text(body: [2]), 
+                                       math.equation(block: false, 
+                                                     body: math.accent(accent: ^, 
+                                                                       base: text(body: [x])), 
+                                                     numbering: none), 
+                                       text(body: [∧]), 
+                                       math.equation(block: false, 
+                                                     body: math.accent(accent: ^, 
+                                                                       base: text(body: [y])), 
+                                                     numbering: none), 
+                                       text(body: [∧]), 
+                                       math.equation(block: false, 
+                                                     body: math.accent(accent: ^, 
+                                                                       base: { math.equation(block: false, 
+                                                                                             body: math.accent(accent: ^, 
+                                                                                                               base: text(body: [u])), 
+                                                                                             numbering: none), 
+                                                                               text(body: [∧]), 
+                                                                               math.equation(block: false, 
+                                                                                             body: math.accent(accent: ^, 
+                                                                                                               base: text(body: [v])), 
+                                                                                             numbering: none) }), 
+                                                     numbering: none) }, 
+                               numbering: none), 
+                 text(body: [.]), 
+                 parbreak(), 
+                 math.equation(block: true, 
+                               body: { text(body: [2]), 
+                                       math.equation(block: false, 
+                                                     body: { text(body: [α]), 
+                                                             math.attach(b: none, 
+                                                                         base: math.lr(body: ({ [(], 
+                                                                                                text(body: [M]), 
+                                                                                                text(body: [+]), 
+                                                                                                math.equation(block: false, 
+                                                                                                              body: { text(body: [a]), 
+                                                                                                                      math.attach(b: none, 
+                                                                                                                                  base: text(body: [b]), 
+                                                                                                                                  t: text(body: [2])) }, 
+                                                                                                              numbering: none), 
+                                                                                                [)] })), 
+                                                                         t: text(body: [2])) }, 
+                                                     numbering: none) }, 
+                               numbering: none), 
+                 text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [2]), 
+                                       math.equation(block: true, 
+                                                     body: { text(body: [α]), 
+                                                             math.attach(b: none, 
+                                                                         base: math.lr(body: ({ [(], 
+                                                                                                text(body: [M]), 
+                                                                                                text(body: [+]), 
+                                                                                                math.equation(block: false, 
+                                                                                                              body: { text(body: [a]), 
+                                                                                                                      math.attach(b: none, 
+                                                                                                                                  base: text(body: [b]), 
+                                                                                                                                  t: text(body: [2])) }, 
+                                                                                                              numbering: none), 
+                                                                                                [)] })), 
+                                                                         t: text(body: [2])) }, 
+                                                     numbering: none) }, 
+                               numbering: none), 
+                 text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [2]), 
+                                       math.equation(block: false, 
+                                                     body: math.accent(accent: ^, 
+                                                                       base: text(body: [x])), 
+                                                     numbering: none), 
+                                       text(body: [∧]), 
+                                       math.equation(block: false, 
+                                                     body: math.accent(accent: ^, 
+                                                                       base: text(body: [y])), 
+                                                     numbering: none), 
+                                       text(body: [∧]), 
+                                       math.equation(block: false, 
+                                                     body: math.accent(accent: ^, 
+                                                                       base: { math.equation(block: false, 
+                                                                                             body: math.accent(accent: ^, 
+                                                                                                               base: text(body: [u])), 
+                                                                                             numbering: none), 
+                                                                               text(body: [∧]), 
+                                                                               math.equation(block: false, 
+                                                                                             body: math.accent(accent: ^, 
+                                                                                                               base: text(body: [v])), 
+                                                                                             numbering: none) }), 
+                                                     numbering: none) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/bugs/parameter-pattern-00.out b/test/typ/bugs/parameter-pattern-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/bugs/parameter-pattern-00.out
@@ -0,0 +1,86 @@
+--- parse tree ---
+[ Code
+    "typ/bugs/parameter-pattern-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/bugs/parameter-pattern-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/bugs/parameter-pattern-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/bugs/parameter-pattern-00.typ"
+    ( line 2 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "map"))
+                 (FuncCall
+                    (FieldAccess
+                       (Ident (Identifier "zip"))
+                       (Array
+                          [ Reg (Literal (Int 1))
+                          , Reg (Literal (Int 2))
+                          , Reg (Literal (Int 3))
+                          ]))
+                    [ NormalArg
+                        (Array
+                           [ Reg (Literal (Int 1))
+                           , Reg (Literal (Int 2))
+                           , Reg (Literal (Int 3))
+                           ])
+                    ]))
+              [ NormalArg
+                  (FuncExpr
+                     [ DestructuringParam
+                         [ Simple Nothing , Simple (Just (Identifier "x")) ]
+                     ]
+                     (Ident (Identifier "x")))
+              ])
+       , NormalArg
+           (Array
+              [ Reg (Literal (Int 1))
+              , Reg (Literal (Int 2))
+              , Reg (Literal (Int 3))
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/bugs/place-base-00.out b/test/typ/bugs/place-base-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/bugs/place-base-00.out
@@ -0,0 +1,108 @@
+--- parse tree ---
+[ Code
+    "typ/bugs/place-base-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/bugs/place-base-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/bugs/place-base-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/bugs/place-base-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 80.0 Pt))
+       , KeyValArg (Identifier "margin") (Literal (Numeric 0.0 Pt))
+       ])
+, SoftBreak
+, Code
+    "typ/bugs/place-base-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "place"))
+       [ NormalArg (Ident (Identifier "right"))
+       , KeyValArg
+           (Identifier "dx") (Negated (Literal (Numeric 70.0 Percent)))
+       , KeyValArg (Identifier "dy") (Literal (Numeric 20.0 Percent))
+       , NormalArg (Block (Content [ Text "First" ]))
+       ])
+, SoftBreak
+, Code
+    "typ/bugs/place-base-00.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "place"))
+       [ NormalArg (Ident (Identifier "left"))
+       , KeyValArg (Identifier "dx") (Literal (Numeric 20.0 Percent))
+       , KeyValArg (Identifier "dy") (Literal (Numeric 60.0 Percent))
+       , NormalArg (Block (Content [ Text "Second" ]))
+       ])
+, SoftBreak
+, Code
+    "typ/bugs/place-base-00.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "place"))
+       [ NormalArg
+           (Plus (Ident (Identifier "center")) (Ident (Identifier "horizon")))
+       , KeyValArg (Identifier "dx") (Literal (Numeric 25.0 Percent))
+       , KeyValArg (Identifier "dy") (Literal (Numeric 25.0 Percent))
+       , NormalArg (Block (Content [ Text "Third" ]))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 place(alignment: right, 
+                       body: text(body: [First]), 
+                       dx: -70%, 
+                       dy: 20%), 
+                 text(body: [
+]), 
+                 place(alignment: left, 
+                       body: text(body: [Second]), 
+                       dx: 20%, 
+                       dy: 60%), 
+                 text(body: [
+]), 
+                 place(alignment: Axes(center, horizon), 
+                       body: text(body: [Third]), 
+                       dx: 25%, 
+                       dy: 25%), 
+                 parbreak() })
diff --git a/test/typ/bugs/smartquotes-in-outline-00.out b/test/typ/bugs/smartquotes-in-outline-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/bugs/smartquotes-in-outline-00.out
@@ -0,0 +1,81 @@
+--- parse tree ---
+[ Code
+    "typ/bugs/smartquotes-in-outline-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/bugs/smartquotes-in-outline-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/bugs/smartquotes-in-outline-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/bugs/smartquotes-in-outline-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 15.0 Em)) ])
+, SoftBreak
+, Code
+    "typ/bugs/smartquotes-in-outline-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall (Ident (Identifier "outline")) [])
+, ParBreak
+, Heading
+    1
+    [ Quote '"'
+    , Text "This"
+    , Quote '"'
+    , Space
+    , Quote '"'
+    , Text "is"
+    , Quote '"'
+    , Space
+    , Quote '"'
+    , Text "a"
+    , Quote '"'
+    , Space
+    , Quote '"'
+    , Text "test"
+    , Quote '"'
+    ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 outline(), 
+                 parbreak(), 
+                 heading(body: text(body: [“This” “is” “a” “test”]), 
+                         level: 1) })
diff --git a/test/typ/bugs/square-base-00.out b/test/typ/bugs/square-base-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/bugs/square-base-00.out
@@ -0,0 +1,72 @@
+--- parse tree ---
+[ Code
+    "typ/bugs/square-base-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/bugs/square-base-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/bugs/square-base-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/bugs/square-base-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 80.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/bugs/square-base-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "square"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 40.0 Percent))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg (Identifier "width") (Literal (Numeric 60.0 Percent))
+              , KeyValArg (Identifier "height") (Literal (Numeric 80.0 Percent))
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 square(body: rect(height: 80%, 
+                                   width: 60%), 
+                        width: 40%), 
+                 parbreak() })
diff --git a/test/typ/coma-00.out b/test/typ/coma-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/coma-00.out
@@ -0,0 +1,414 @@
+--- parse tree ---
+[ Code
+    "typ/coma-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/coma-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/coma-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/coma-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 450.0 Pt))
+       , KeyValArg (Identifier "margin") (Literal (Numeric 1.0 Cm))
+       ])
+, ParBreak
+, Strong
+    [ Text "Technische"
+    , Space
+    , Text "Universit\228t"
+    , Space
+    , Text "Berlin"
+    ]
+, Space
+, Code
+    "typ/coma-00.typ"
+    ( line 4 , column 34 )
+    (FuncCall
+       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 1.0 Fr)) ])
+, Space
+, Strong
+    [ Text "WiSe" , Space , Text "2019" , Text "/" , Text "2020" ]
+, Space
+, HardBreak
+, Strong
+    [ Text "Fakult\228t"
+    , Space
+    , Text "II,"
+    , Space
+    , Text "Institut"
+    , Space
+    , Text "for"
+    , Space
+    , Text "Mathematik"
+    ]
+, Space
+, Code
+    "typ/coma-00.typ"
+    ( line 5 , column 41 )
+    (FuncCall
+       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 1.0 Fr)) ])
+, Space
+, Text "Woche"
+, Space
+, Text "3"
+, Space
+, HardBreak
+, Text "Sekretariat"
+, Space
+, Text "MA"
+, Space
+, HardBreak
+, Text "Dr"
+, Text "."
+, Space
+, Text "Max"
+, Space
+, Text "Mustermann"
+, Space
+, HardBreak
+, Text "Ola"
+, Space
+, Text "Nordmann,"
+, Space
+, Text "John"
+, Space
+, Text "Doe"
+, ParBreak
+, Code
+    "typ/coma-00.typ"
+    ( line 10 , column 2 )
+    (FuncCall
+       (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 3.0 Mm)) ])
+, SoftBreak
+, Code
+    "typ/coma-00.typ"
+    ( line 11 , column 2 )
+    (FuncCall
+       (Ident (Identifier "align"))
+       [ NormalArg (Ident (Identifier "center"))
+       , BlockArg
+           [ SoftBreak
+           , Code
+               "typ/coma-00.typ"
+               ( line 12 , column 4 )
+               (Set
+                  (Ident (Identifier "par"))
+                  [ KeyValArg (Identifier "leading") (Literal (Numeric 3.0 Mm)) ])
+           , SoftBreak
+           , Code
+               "typ/coma-00.typ"
+               ( line 13 , column 4 )
+               (FuncCall
+                  (Ident (Identifier "text"))
+                  [ NormalArg (Literal (Numeric 1.2 Em))
+                  , BlockArg
+                      [ Strong
+                          [ Text "3"
+                          , Text "."
+                          , Space
+                          , Text "\220bungsblatt"
+                          , Space
+                          , Text "Computerorientierte"
+                          , Space
+                          , Text "Mathematik"
+                          , Space
+                          , Text "II"
+                          ]
+                      ]
+                  ])
+           , Space
+           , HardBreak
+           , Strong
+               [ Text "Abgabe"
+               , Text ":"
+               , Space
+               , Text "03"
+               , Text "."
+               , Text "05"
+               , Text "."
+               , Text "2019"
+               ]
+           , Space
+           , Text "("
+           , Text "bis"
+           , Space
+           , Text "10"
+           , Text ":"
+           , Text "10"
+           , Space
+           , Text "Uhr"
+           , Space
+           , Text "in"
+           , Space
+           , Text "MA"
+           , Space
+           , Text "001)"
+           , Space
+           , HardBreak
+           , Strong
+               [ Text "Alle"
+               , Space
+               , Text "Antworten"
+               , Space
+               , Text "sind"
+               , Space
+               , Text "zu"
+               , Space
+               , Text "beweisen"
+               , Text "."
+               ]
+           , ParBreak
+           ]
+       ])
+, ParBreak
+, Strong [ Text "1" , Text "." , Space , Text "Aufgabe" ]
+, Space
+, Code
+    "typ/coma-00.typ"
+    ( line 18 , column 15 )
+    (FuncCall
+       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 1.0 Fr)) ])
+, Space
+, Text "("
+, Text "1"
+, Space
+, Text "+"
+, Space
+, Text "1"
+, Space
+, Text "+"
+, Space
+, Text "2"
+, Space
+, Text "Punkte)"
+, ParBreak
+, Text "Ein"
+, Space
+, Emph [ Text "Bin\228rbaum" ]
+, Space
+, Text "ist"
+, Space
+, Text "ein"
+, Space
+, Text "Wurzelbaum,"
+, Space
+, Text "in"
+, Space
+, Text "dem"
+, Space
+, Text "jeder"
+, Space
+, Text "Knoten"
+, Space
+, Text "\8804"
+, Space
+, Text "2"
+, Space
+, Text "Kinder"
+, Space
+, Text "hat"
+, Text "."
+, SoftBreak
+, Text "Die"
+, Space
+, Text "Tiefe"
+, Space
+, Text "eines"
+, Space
+, Text "Knotens"
+, Space
+, Emph [ Text "v" ]
+, Space
+, Text "ist"
+, Space
+, Text "die"
+, Space
+, Text "L\228nge"
+, Space
+, Text "des"
+, Space
+, Text "eindeutigen"
+, Space
+, Text "Weges"
+, Space
+, Text "von"
+, Space
+, Text "der"
+, Space
+, Text "Wurzel"
+, SoftBreak
+, Text "zu"
+, Space
+, Emph [ Text "v" ]
+, Text ","
+, Space
+, Text "und"
+, Space
+, Text "die"
+, Space
+, Text "H\246he"
+, Space
+, Text "von"
+, Space
+, Emph [ Text "v" ]
+, Space
+, Text "ist"
+, Space
+, Text "die"
+, Space
+, Text "L\228nge"
+, Space
+, Text "eines"
+, Space
+, Text "l\228ngsten"
+, Space
+, Text "("
+, Text "absteigenden)"
+, Space
+, Text "Weges"
+, SoftBreak
+, Text "von"
+, Space
+, Emph [ Text "v" ]
+, Space
+, Text "zu"
+, Space
+, Text "einem"
+, Space
+, Text "Blatt"
+, Text "."
+, Space
+, Text "Die"
+, Space
+, Text "H\246he"
+, Space
+, Text "des"
+, Space
+, Text "Baumes"
+, Space
+, Text "ist"
+, Space
+, Text "die"
+, Space
+, Text "H\246he"
+, Space
+, Text "der"
+, Space
+, Text "Wurzel"
+, Text "."
+, ParBreak
+, Code
+    "typ/coma-00.typ"
+    ( line 25 , column 2 )
+    (FuncCall
+       (Ident (Identifier "align"))
+       [ NormalArg (Ident (Identifier "center"))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "image"))
+              [ NormalArg (Literal (String "/graph.png"))
+              , KeyValArg (Identifier "width") (Literal (Numeric 75.0 Percent))
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 strong(body: text(body: [Technische Universität Berlin])), 
+                 text(body: [ ]), 
+                 h(amount: 1.0fr), 
+                 text(body: [ ]), 
+                 strong(body: text(body: [WiSe 2019/2020])), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 strong(body: text(body: [Fakultät II, Institut for Mathematik])), 
+                 text(body: [ ]), 
+                 h(amount: 1.0fr), 
+                 text(body: [ Woche 3 ]), 
+                 linebreak(), 
+                 text(body: [Sekretariat MA ]), 
+                 linebreak(), 
+                 text(body: [Dr. Max Mustermann ]), 
+                 linebreak(), 
+                 text(body: [Ola Nordmann, John Doe]), 
+                 parbreak(), 
+                 v(amount: 3.0mm), 
+                 text(body: [
+]), 
+                 align(alignment: center, 
+                       body: { text(body: [
+]), 
+                               text(body: [
+]), 
+                               text(body: strong(body: text(body: [3. Übungsblatt Computerorientierte Mathematik II])), 
+                                    size: 1.2em), 
+                               text(body: [ ]), 
+                               linebreak(), 
+                               strong(body: text(body: [Abgabe: 03.05.2019])), 
+                               text(body: [ (bis 10:10 Uhr in MA 001) ]), 
+                               linebreak(), 
+                               strong(body: text(body: [Alle Antworten sind zu beweisen.])), 
+                               parbreak() }), 
+                 parbreak(), 
+                 strong(body: text(body: [1. Aufgabe])), 
+                 text(body: [ ]), 
+                 h(amount: 1.0fr), 
+                 text(body: [ (1 + 1 + 2 Punkte)]), 
+                 parbreak(), 
+                 text(body: [Ein ]), 
+                 emph(body: text(body: [Binärbaum])), 
+                 text(body: [ ist ein Wurzelbaum, in dem jeder Knoten ≤ 2 Kinder hat.
+Die Tiefe eines Knotens ]), 
+                 emph(body: text(body: [v])), 
+                 text(body: [ ist die Länge des eindeutigen Weges von der Wurzel
+zu ]), 
+                 emph(body: text(body: [v])), 
+                 text(body: [, und die Höhe von ]), 
+                 emph(body: text(body: [v])), 
+                 text(body: [ ist die Länge eines längsten (absteigenden) Weges
+von ]), 
+                 emph(body: text(body: [v])), 
+                 text(body: [ zu einem Blatt. Die Höhe des Baumes ist die Höhe der Wurzel.]), 
+                 parbreak(), 
+                 align(alignment: center, 
+                       body: image(path: "/graph.png", 
+                                   width: 75%)), 
+                 parbreak() })
diff --git a/test/typ/compiler/array-00.out b/test/typ/compiler/array-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/array-00.out
@@ -0,0 +1,100 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/array-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/array-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/array-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, SoftBreak
+, Code
+    "typ/compiler/array-00.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 150.0 Pt)) ])
+, ParBreak
+, Comment
+, Code "typ/compiler/array-00.typ" ( line 7 , column 2 ) (Array [])
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/array-00.typ"
+    ( line 10 , column 2 )
+    (Literal (Int 1))
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/array-00.typ"
+    ( line 13 , column 2 )
+    (Array [ Reg (Negated (Literal (Int 1))) ])
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/array-00.typ"
+    ( line 16 , column 2 )
+    (Array
+       [ Reg (Literal (Boolean True)) , Reg (Literal (Boolean False)) ])
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/array-00.typ"
+    ( line 19 , column 2 )
+    (Array
+       [ Reg (Literal (String "1"))
+       , Reg
+           (FuncCall
+              (Ident (Identifier "rgb")) [ NormalArg (Literal (String "002")) ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [()]), 
+                 parbreak(), 
+                 text(body: [1]), 
+                 parbreak(), 
+                 text(body: [(-1)]), 
+                 parbreak(), 
+                 text(body: [(true, false)]), 
+                 parbreak(), 
+                 text(body: [("1", rgb(0%,0%,0%,100%))]), 
+                 parbreak() })
diff --git a/test/typ/compiler/array-01.out b/test/typ/compiler/array-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/array-01.out
@@ -0,0 +1,79 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/array-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/array-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/array-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/array-01.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall (FieldAccess (Ident (Identifier "len")) (Array [])) [])
+       , NormalArg (Literal (Int 0))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/array-01.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "len"))
+                 (Array
+                    [ Reg (Literal (String "A"))
+                    , Reg (Literal (String "B"))
+                    , Reg (Literal (String "C"))
+                    ]))
+              [])
+       , NormalArg (Literal (Int 3))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/array-02.out b/test/typ/compiler/array-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/array-02.out
@@ -0,0 +1,80 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/array-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/array-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/array-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/array-02.typ"
+    ( line 3 , column 2 )
+    (Block
+       (CodeBlock
+          [ Let
+              (BasicBind (Just (Identifier "array")))
+              (Array [ Reg (Literal (Int 1)) , Reg (Literal (Int 2)) ])
+          , Assign
+              (FuncCall
+                 (FieldAccess
+                    (Ident (Identifier "at")) (Ident (Identifier "array")))
+                 [ NormalArg (Literal (Int 1)) ])
+              (Plus
+                 (FuncCall
+                    (FieldAccess
+                       (Ident (Identifier "at")) (Ident (Identifier "array")))
+                    [ NormalArg (Literal (Int 1)) ])
+                 (Plus
+                    (Literal (Int 5))
+                    (FuncCall
+                       (FieldAccess
+                          (Ident (Identifier "at")) (Ident (Identifier "array")))
+                       [ NormalArg (Literal (Int 0)) ])))
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg (Ident (Identifier "array"))
+              , NormalArg
+                  (Array [ Reg (Literal (Int 1)) , Reg (Literal (Int 8)) ])
+              ]
+          ]))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/array-03.out b/test/typ/compiler/array-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/array-03.out
@@ -0,0 +1,89 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/array-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/array-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/array-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/array-03.typ"
+    ( line 3 , column 2 )
+    (Block
+       (CodeBlock
+          [ Let
+              (BasicBind (Just (Identifier "array")))
+              (Array
+                 [ Reg (Literal (Int 1))
+                 , Reg (Literal (Int 2))
+                 , Reg (Literal (Int 3))
+                 ])
+          , Assign
+              (FuncCall
+                 (FieldAccess
+                    (Ident (Identifier "first")) (Ident (Identifier "array")))
+                 [])
+              (Literal (Int 7))
+          , Assign
+              (FuncCall
+                 (FieldAccess
+                    (Ident (Identifier "at")) (Ident (Identifier "array")))
+                 [ NormalArg (Literal (Int 1)) ])
+              (Times
+                 (FuncCall
+                    (FieldAccess
+                       (Ident (Identifier "at")) (Ident (Identifier "array")))
+                    [ NormalArg (Literal (Int 1)) ])
+                 (Literal (Int 8)))
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg (Ident (Identifier "array"))
+              , NormalArg
+                  (Array
+                     [ Reg (Literal (Int 7))
+                     , Reg (Literal (Int 16))
+                     , Reg (Literal (Int 3))
+                     ])
+              ]
+          ]))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/array-04.out b/test/typ/compiler/array-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/array-04.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/array-05.out b/test/typ/compiler/array-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/array-05.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/array-06.out b/test/typ/compiler/array-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/array-06.out
@@ -0,0 +1,91 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/array-06.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/array-06.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/array-06.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/array-06.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "at"))
+                 (Array
+                    [ Reg (Literal (Int 1))
+                    , Reg (Literal (Int 2))
+                    , Reg (Literal (Int 3))
+                    ]))
+              [ NormalArg (Literal (Int 2))
+              , KeyValArg (Identifier "default") (Literal (Int 5))
+              ])
+       , NormalArg (Literal (Int 3))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/array-06.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "at"))
+                 (Array
+                    [ Reg (Literal (Int 1))
+                    , Reg (Literal (Int 2))
+                    , Reg (Literal (Int 3))
+                    ]))
+              [ NormalArg (Literal (Int 3))
+              , KeyValArg (Identifier "default") (Literal (Int 5))
+              ])
+       , NormalArg (Literal (Int 5))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/array-07.out b/test/typ/compiler/array-07.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/array-07.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/array-08.out b/test/typ/compiler/array-08.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/array-08.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/array-09.out b/test/typ/compiler/array-09.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/array-09.out
@@ -0,0 +1,112 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/array-09.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/array-09.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/array-09.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/array-09.typ"
+    ( line 3 , column 2 )
+    (Block
+       (CodeBlock
+          [ Let
+              (BasicBind (Just (Identifier "array")))
+              (Array
+                 [ Reg (Literal (Int 1))
+                 , Reg (Literal (Int 2))
+                 , Reg (Literal (Int 3))
+                 , Reg (Literal (Int 4))
+                 ])
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg
+                  (FuncCall
+                     (FieldAccess
+                        (Ident (Identifier "at")) (Ident (Identifier "array")))
+                     [ NormalArg (Literal (Int 0)) ])
+              , NormalArg (Literal (Int 1))
+              ]
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg
+                  (FuncCall
+                     (FieldAccess
+                        (Ident (Identifier "at")) (Ident (Identifier "array")))
+                     [ NormalArg (Negated (Literal (Int 1))) ])
+              , NormalArg (Literal (Int 4))
+              ]
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg
+                  (FuncCall
+                     (FieldAccess
+                        (Ident (Identifier "at")) (Ident (Identifier "array")))
+                     [ NormalArg (Negated (Literal (Int 2))) ])
+              , NormalArg (Literal (Int 3))
+              ]
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg
+                  (FuncCall
+                     (FieldAccess
+                        (Ident (Identifier "at")) (Ident (Identifier "array")))
+                     [ NormalArg (Negated (Literal (Int 3))) ])
+              , NormalArg (Literal (Int 2))
+              ]
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg
+                  (FuncCall
+                     (FieldAccess
+                        (Ident (Identifier "at")) (Ident (Identifier "array")))
+                     [ NormalArg (Negated (Literal (Int 4))) ])
+              , NormalArg (Literal (Int 1))
+              ]
+          ]))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/array-10.out b/test/typ/compiler/array-10.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/array-10.out
@@ -0,0 +1,119 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/array-10.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/array-10.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/array-10.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/array-10.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "first")) (Array [ Reg (Literal (Int 1)) ]))
+              [])
+       , NormalArg (Literal (Int 1))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/array-10.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "last")) (Array [ Reg (Literal (Int 2)) ]))
+              [])
+       , NormalArg (Literal (Int 2))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/array-10.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "first"))
+                 (Array
+                    [ Reg (Literal (Int 1))
+                    , Reg (Literal (Int 2))
+                    , Reg (Literal (Int 3))
+                    ]))
+              [])
+       , NormalArg (Literal (Int 1))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/array-10.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "last"))
+                 (Array
+                    [ Reg (Literal (Int 1))
+                    , Reg (Literal (Int 2))
+                    , Reg (Literal (Int 3))
+                    ]))
+              [])
+       , NormalArg (Literal (Int 3))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/array-11.out b/test/typ/compiler/array-11.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/array-11.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/array-12.out b/test/typ/compiler/array-12.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/array-12.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/array-13.out b/test/typ/compiler/array-13.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/array-13.out
@@ -0,0 +1,118 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/array-13.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/array-13.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/array-13.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/array-13.typ"
+    ( line 3 , column 2 )
+    (Block
+       (CodeBlock
+          [ Let
+              (BasicBind (Just (Identifier "tasks")))
+              (Dict
+                 [ Reg
+                     ( Ident (Identifier "a")
+                     , Array
+                         [ Reg (Literal (Int 1))
+                         , Reg (Literal (Int 2))
+                         , Reg (Literal (Int 3))
+                         ]
+                     )
+                 , Reg
+                     ( Ident (Identifier "b")
+                     , Array
+                         [ Reg (Literal (Int 4))
+                         , Reg (Literal (Int 5))
+                         , Reg (Literal (Int 6))
+                         ]
+                     )
+                 ])
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg
+                  (FuncCall
+                     (FieldAccess
+                        (Ident (Identifier "pop"))
+                        (FuncCall
+                           (FieldAccess
+                              (Ident (Identifier "at")) (Ident (Identifier "tasks")))
+                           [ NormalArg (Literal (String "a")) ]))
+                     [])
+              , NormalArg (Literal (Int 3))
+              ]
+          , FuncCall
+              (FieldAccess
+                 (Ident (Identifier "push"))
+                 (FieldAccess
+                    (Ident (Identifier "b")) (Ident (Identifier "tasks"))))
+              [ NormalArg (Literal (Int 7)) ]
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg
+                  (FieldAccess (Ident (Identifier "a")) (Ident (Identifier "tasks")))
+              , NormalArg
+                  (Array [ Reg (Literal (Int 1)) , Reg (Literal (Int 2)) ])
+              ]
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg
+                  (FuncCall
+                     (FieldAccess
+                        (Ident (Identifier "at")) (Ident (Identifier "tasks")))
+                     [ NormalArg (Literal (String "b")) ])
+              , NormalArg
+                  (Array
+                     [ Reg (Literal (Int 4))
+                     , Reg (Literal (Int 5))
+                     , Reg (Literal (Int 6))
+                     , Reg (Literal (Int 7))
+                     ])
+              ]
+          ]))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/array-14.out b/test/typ/compiler/array-14.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/array-14.out
@@ -0,0 +1,93 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/array-14.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/array-14.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/array-14.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/array-14.typ"
+    ( line 3 , column 2 )
+    (Block
+       (CodeBlock
+          [ Let
+              (BasicBind (Just (Identifier "array")))
+              (Array
+                 [ Reg (Literal (Int 0))
+                 , Reg (Literal (Int 1))
+                 , Reg (Literal (Int 2))
+                 , Reg (Literal (Int 4))
+                 , Reg (Literal (Int 5))
+                 ])
+          , FuncCall
+              (FieldAccess
+                 (Ident (Identifier "insert")) (Ident (Identifier "array")))
+              [ NormalArg (Literal (Int 3)) , NormalArg (Literal (Int 3)) ]
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg (Ident (Identifier "array"))
+              , NormalArg
+                  (FuncCall
+                     (Ident (Identifier "range")) [ NormalArg (Literal (Int 6)) ])
+              ]
+          , FuncCall
+              (FieldAccess
+                 (Ident (Identifier "remove")) (Ident (Identifier "array")))
+              [ NormalArg (Literal (Int 1)) ]
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg (Ident (Identifier "array"))
+              , NormalArg
+                  (Array
+                     [ Reg (Literal (Int 0))
+                     , Reg (Literal (Int 2))
+                     , Reg (Literal (Int 3))
+                     , Reg (Literal (Int 4))
+                     , Reg (Literal (Int 5))
+                     ])
+              ]
+          ]))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [1]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/array-15.out b/test/typ/compiler/array-15.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/array-15.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/array-16.out b/test/typ/compiler/array-16.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/array-16.out
@@ -0,0 +1,234 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/array-16.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/array-16.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/array-16.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/array-16.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "slice"))
+                 (Array
+                    [ Reg (Literal (Int 1))
+                    , Reg (Literal (Int 2))
+                    , Reg (Literal (Int 3))
+                    , Reg (Literal (Int 4))
+                    ]))
+              [ NormalArg (Literal (Int 2)) ])
+       , NormalArg
+           (Array [ Reg (Literal (Int 3)) , Reg (Literal (Int 4)) ])
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/array-16.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "slice"))
+                 (FuncCall
+                    (Ident (Identifier "range")) [ NormalArg (Literal (Int 10)) ]))
+              [ NormalArg (Literal (Int 2)) , NormalArg (Literal (Int 6)) ])
+       , NormalArg
+           (Array
+              [ Reg (Literal (Int 2))
+              , Reg (Literal (Int 3))
+              , Reg (Literal (Int 4))
+              , Reg (Literal (Int 5))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/array-16.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "slice"))
+                 (FuncCall
+                    (Ident (Identifier "range")) [ NormalArg (Literal (Int 10)) ]))
+              [ NormalArg (Literal (Int 4))
+              , KeyValArg (Identifier "count") (Literal (Int 3))
+              ])
+       , NormalArg
+           (Array
+              [ Reg (Literal (Int 4))
+              , Reg (Literal (Int 5))
+              , Reg (Literal (Int 6))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/array-16.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "slice"))
+                 (FuncCall
+                    (Ident (Identifier "range")) [ NormalArg (Literal (Int 10)) ]))
+              [ NormalArg (Negated (Literal (Int 5)))
+              , KeyValArg (Identifier "count") (Literal (Int 2))
+              ])
+       , NormalArg
+           (Array [ Reg (Literal (Int 5)) , Reg (Literal (Int 6)) ])
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/array-16.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "slice"))
+                 (Array
+                    [ Reg (Literal (Int 1))
+                    , Reg (Literal (Int 2))
+                    , Reg (Literal (Int 3))
+                    ]))
+              [ NormalArg (Literal (Int 2))
+              , NormalArg (Negated (Literal (Int 2)))
+              ])
+       , NormalArg (Array [])
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/array-16.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "slice"))
+                 (Array
+                    [ Reg (Literal (Int 1))
+                    , Reg (Literal (Int 2))
+                    , Reg (Literal (Int 3))
+                    ]))
+              [ NormalArg (Negated (Literal (Int 2)))
+              , NormalArg (Literal (Int 2))
+              ])
+       , NormalArg (Array [ Reg (Literal (Int 2)) ])
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/array-16.typ"
+    ( line 9 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "slice"))
+                 (Array
+                    [ Reg (Literal (Int 1))
+                    , Reg (Literal (Int 2))
+                    , Reg (Literal (Int 3))
+                    ]))
+              [ NormalArg (Negated (Literal (Int 3)))
+              , NormalArg (Literal (Int 2))
+              ])
+       , NormalArg
+           (Array [ Reg (Literal (Int 1)) , Reg (Literal (Int 2)) ])
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/array-16.typ"
+    ( line 10 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "join"))
+                 (FuncCall
+                    (FieldAccess
+                       (Ident (Identifier "slice"))
+                       (FuncCall
+                          (FieldAccess
+                             (Ident (Identifier "split")) (Literal (String "ABCD")))
+                          [ NormalArg (Literal (String "")) ]))
+                    [ NormalArg (Literal (Int 1))
+                    , NormalArg (Negated (Literal (Int 1)))
+                    ]))
+              [ NormalArg (Literal (String "-")) ])
+       , NormalArg (Literal (String "A-B-C-D"))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/array-17.out b/test/typ/compiler/array-17.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/array-17.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/array-18.out b/test/typ/compiler/array-18.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/array-18.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/array-19.out b/test/typ/compiler/array-19.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/array-19.out
@@ -0,0 +1,127 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/array-19.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/array-19.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/array-19.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/array-19.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "position"))
+                 (Array
+                    [ Reg (Literal (String "Hi"))
+                    , Reg (Literal (String "\10084\65039"))
+                    , Reg (Literal (String "Love"))
+                    ]))
+              [ NormalArg
+                  (FuncExpr
+                     [ NormalParam (Identifier "s") ]
+                     (Equals
+                        (Ident (Identifier "s")) (Literal (String "\10084\65039"))))
+              ])
+       , NormalArg (Literal (Int 1))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/array-19.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "position"))
+                 (Array
+                    [ Reg (Literal (String "Bye"))
+                    , Reg (Literal (String "\128152"))
+                    , Reg (Literal (String "Apart"))
+                    ]))
+              [ NormalArg
+                  (FuncExpr
+                     [ NormalParam (Identifier "s") ]
+                     (Equals
+                        (Ident (Identifier "s")) (Literal (String "\10084\65039"))))
+              ])
+       , NormalArg (Literal None)
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/array-19.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "position"))
+                 (Array
+                    [ Reg (Literal (String "A"))
+                    , Reg (Literal (String "B"))
+                    , Reg (Literal (String "CDEF"))
+                    , Reg (Literal (String "G"))
+                    ]))
+              [ NormalArg
+                  (FuncExpr
+                     [ NormalParam (Identifier "v") ]
+                     (GreaterThan
+                        (FuncCall
+                           (FieldAccess (Ident (Identifier "len")) (Ident (Identifier "v")))
+                           [])
+                        (Literal (Int 2))))
+              ])
+       , NormalArg (Literal (Int 2))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/array-20.out b/test/typ/compiler/array-20.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/array-20.out
@@ -0,0 +1,121 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/array-20.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/array-20.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/array-20.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/array-20.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess (Ident (Identifier "filter")) (Array []))
+              [ NormalArg
+                  (FieldAccess
+                     (Ident (Identifier "even")) (Ident (Identifier "calc")))
+              ])
+       , NormalArg (Array [])
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/array-20.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "filter"))
+                 (Array
+                    [ Reg (Literal (Int 1))
+                    , Reg (Literal (Int 2))
+                    , Reg (Literal (Int 3))
+                    , Reg (Literal (Int 4))
+                    ]))
+              [ NormalArg
+                  (FieldAccess
+                     (Ident (Identifier "even")) (Ident (Identifier "calc")))
+              ])
+       , NormalArg
+           (Array [ Reg (Literal (Int 2)) , Reg (Literal (Int 4)) ])
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/array-20.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "filter"))
+                 (Array
+                    [ Reg (Literal (Int 7))
+                    , Reg (Literal (Int 3))
+                    , Reg (Literal (Int 2))
+                    , Reg (Literal (Int 5))
+                    , Reg (Literal (Int 1))
+                    ]))
+              [ NormalArg
+                  (FuncExpr
+                     [ NormalParam (Identifier "x") ]
+                     (LessThan (Ident (Identifier "x")) (Literal (Int 5))))
+              ])
+       , NormalArg
+           (Array
+              [ Reg (Literal (Int 3))
+              , Reg (Literal (Int 2))
+              , Reg (Literal (Int 1))
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/array-21.out b/test/typ/compiler/array-21.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/array-21.out
@@ -0,0 +1,86 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/array-21.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/array-21.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/array-21.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/array-21.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess (Ident (Identifier "map")) (Array []))
+              [ NormalArg
+                  (FuncExpr
+                     [ NormalParam (Identifier "x") ]
+                     (Times (Ident (Identifier "x")) (Literal (Int 2))))
+              ])
+       , NormalArg (Array [])
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/array-21.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "map"))
+                 (Array [ Reg (Literal (Int 2)) , Reg (Literal (Int 3)) ]))
+              [ NormalArg
+                  (FuncExpr
+                     [ NormalParam (Identifier "x") ]
+                     (Times (Ident (Identifier "x")) (Literal (Int 2))))
+              ])
+       , NormalArg
+           (Array [ Reg (Literal (Int 4)) , Reg (Literal (Int 6)) ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/array-22.out b/test/typ/compiler/array-22.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/array-22.out
@@ -0,0 +1,89 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/array-22.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/array-22.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/array-22.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/array-22.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess (Ident (Identifier "fold")) (Array []))
+              [ NormalArg (Literal (String "hi"))
+              , NormalArg (Ident (Identifier "grid"))
+              ])
+       , NormalArg (Literal (String "hi"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/array-22.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "fold"))
+                 (Array
+                    [ Reg (Literal (Int 1))
+                    , Reg (Literal (Int 2))
+                    , Reg (Literal (Int 3))
+                    , Reg (Literal (Int 4))
+                    ]))
+              [ NormalArg (Literal (Int 0))
+              , NormalArg
+                  (FuncExpr
+                     [ NormalParam (Identifier "s") , NormalParam (Identifier "x") ]
+                     (Plus (Ident (Identifier "s")) (Ident (Identifier "x"))))
+              ])
+       , NormalArg (Literal (Int 10))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/array-23.out b/test/typ/compiler/array-23.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/array-23.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/array-24.out b/test/typ/compiler/array-24.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/array-24.out
@@ -0,0 +1,96 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/array-24.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/array-24.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/array-24.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/array-24.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess (Ident (Identifier "sum")) (Array []))
+              [ KeyValArg (Identifier "default") (Literal (Int 0)) ])
+       , NormalArg (Literal (Int 0))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/array-24.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess (Ident (Identifier "sum")) (Array []))
+              [ KeyValArg (Identifier "default") (Block (Content [])) ])
+       , NormalArg (Block (Content []))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/array-24.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "sum"))
+                 (Array
+                    [ Reg (Literal (Int 1))
+                    , Reg (Literal (Int 2))
+                    , Reg (Literal (Int 3))
+                    ]))
+              [])
+       , NormalArg (Literal (Int 6))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/array-25.out b/test/typ/compiler/array-25.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/array-25.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/array-26.out b/test/typ/compiler/array-26.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/array-26.out
@@ -0,0 +1,115 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/array-26.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/array-26.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/array-26.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/array-26.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess (Ident (Identifier "product")) (Array []))
+              [ KeyValArg (Identifier "default") (Literal (Int 0)) ])
+       , NormalArg (Literal (Int 0))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/array-26.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess (Ident (Identifier "product")) (Array []))
+              [ KeyValArg (Identifier "default") (Block (Content [])) ])
+       , NormalArg (Block (Content []))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/array-26.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "product"))
+                 (Array
+                    [ Reg (Block (Content [ Text "ab" ])) , Reg (Literal (Int 3)) ]))
+              [])
+       , NormalArg
+           (Times (Block (Content [ Text "ab" ])) (Literal (Int 3)))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/array-26.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "product"))
+                 (Array
+                    [ Reg (Literal (Int 1))
+                    , Reg (Literal (Int 2))
+                    , Reg (Literal (Int 3))
+                    ]))
+              [])
+       , NormalArg (Literal (Int 6))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/array-27.out b/test/typ/compiler/array-27.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/array-27.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/array-28.out b/test/typ/compiler/array-28.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/array-28.out
@@ -0,0 +1,68 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/array-28.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/array-28.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/array-28.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/array-28.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "rev"))
+                 (FuncCall
+                    (Ident (Identifier "range")) [ NormalArg (Literal (Int 3)) ]))
+              [])
+       , NormalArg
+           (Array
+              [ Reg (Literal (Int 2))
+              , Reg (Literal (Int 1))
+              , Reg (Literal (Int 0))
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/array-29.out b/test/typ/compiler/array-29.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/array-29.out
@@ -0,0 +1,120 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/array-29.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/array-29.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/array-29.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/array-29.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall (FieldAccess (Ident (Identifier "join")) (Array [])) [])
+       , NormalArg (Literal None)
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/array-29.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "join")) (Array [ Reg (Literal (Int 1)) ]))
+              [])
+       , NormalArg (Literal (Int 1))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/array-29.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "join"))
+                 (Array
+                    [ Reg (Literal (String "a"))
+                    , Reg (Literal (String "b"))
+                    , Reg (Literal (String "c"))
+                    ]))
+              [])
+       , NormalArg (Literal (String "abc"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/array-29.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (Plus
+              (Plus
+                 (Literal (String "("))
+                 (FuncCall
+                    (FieldAccess
+                       (Ident (Identifier "join"))
+                       (Array
+                          [ Reg (Literal (String "a"))
+                          , Reg (Literal (String "b"))
+                          , Reg (Literal (String "c"))
+                          ]))
+                    [ NormalArg (Literal (String ", ")) ]))
+              (Literal (String ")")))
+       , NormalArg (Literal (String "(a, b, c)"))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/array-30.out b/test/typ/compiler/array-30.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/array-30.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/array-31.out b/test/typ/compiler/array-31.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/array-31.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/array-32.out b/test/typ/compiler/array-32.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/array-32.out
@@ -0,0 +1,72 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/array-32.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/array-32.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/array-32.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/compiler/array-32.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (FieldAccess
+          (Ident (Identifier "join"))
+          (Array
+             [ Reg (Block (Content [ Text "One" ]))
+             , Reg (Block (Content [ Text "Two" ]))
+             , Reg (Block (Content [ Text "Three" ]))
+             ]))
+       [ NormalArg (Block (Content [ Text "," , Space ]))
+       , KeyValArg
+           (Identifier "last")
+           (Block (Content [ Space , Text "and" , Space ]))
+       ])
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [One]), 
+                 text(body: [, ]), 
+                 text(body: [Two]), 
+                 text(body: [ and ]), 
+                 text(body: [Three]), 
+                 text(body: [.]), 
+                 parbreak() })
diff --git a/test/typ/compiler/array-33.out b/test/typ/compiler/array-33.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/array-33.out
@@ -0,0 +1,321 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/array-33.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/array-33.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/array-33.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/array-33.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess (Ident (Identifier "sorted")) (Array [])) [])
+       , NormalArg (Array [])
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/array-33.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess (Ident (Identifier "sorted")) (Array []))
+              [ KeyValArg
+                  (Identifier "key")
+                  (FuncExpr
+                     [ NormalParam (Identifier "x") ] (Ident (Identifier "x")))
+              ])
+       , NormalArg (Array [])
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/array-33.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "sorted"))
+                 (Times
+                    (Array
+                       [ Reg (Literal (Boolean True)) , Reg (Literal (Boolean False)) ])
+                    (Literal (Int 10))))
+              [])
+       , NormalArg
+           (Plus
+              (Times
+                 (Array [ Reg (Literal (Boolean False)) ]) (Literal (Int 10)))
+              (Times
+                 (Array [ Reg (Literal (Boolean True)) ]) (Literal (Int 10))))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/array-33.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "sorted"))
+                 (Array
+                    [ Reg (Literal (String "it"))
+                    , Reg (Literal (String "the"))
+                    , Reg (Literal (String "hi"))
+                    , Reg (Literal (String "text"))
+                    ]))
+              [])
+       , NormalArg
+           (Array
+              [ Reg (Literal (String "hi"))
+              , Reg (Literal (String "it"))
+              , Reg (Literal (String "text"))
+              , Reg (Literal (String "the"))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/array-33.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "sorted"))
+                 (Array
+                    [ Reg (Literal (String "I"))
+                    , Reg (Literal (String "the"))
+                    , Reg (Literal (String "hi"))
+                    , Reg (Literal (String "text"))
+                    ]))
+              [ KeyValArg
+                  (Identifier "key")
+                  (FuncExpr
+                     [ NormalParam (Identifier "x") ] (Ident (Identifier "x")))
+              ])
+       , NormalArg
+           (Array
+              [ Reg (Literal (String "I"))
+              , Reg (Literal (String "hi"))
+              , Reg (Literal (String "text"))
+              , Reg (Literal (String "the"))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/array-33.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "sorted"))
+                 (Array
+                    [ Reg (Literal (String "I"))
+                    , Reg (Literal (String "the"))
+                    , Reg (Literal (String "hi"))
+                    , Reg (Literal (String "text"))
+                    ]))
+              [ KeyValArg
+                  (Identifier "key")
+                  (FuncExpr
+                     [ NormalParam (Identifier "x") ]
+                     (FuncCall
+                        (FieldAccess (Ident (Identifier "len")) (Ident (Identifier "x")))
+                        []))
+              ])
+       , NormalArg
+           (Array
+              [ Reg (Literal (String "I"))
+              , Reg (Literal (String "hi"))
+              , Reg (Literal (String "the"))
+              , Reg (Literal (String "text"))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/array-33.typ"
+    ( line 9 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "sorted"))
+                 (Array
+                    [ Reg (Literal (Int 2))
+                    , Reg (Literal (Int 1))
+                    , Reg (Literal (Int 3))
+                    , Reg (Literal (Int 10))
+                    , Reg (Literal (Int 5))
+                    , Reg (Literal (Int 8))
+                    , Reg (Literal (Int 6))
+                    , Reg (Negated (Literal (Int 7)))
+                    , Reg (Literal (Int 2))
+                    ]))
+              [])
+       , NormalArg
+           (Array
+              [ Reg (Negated (Literal (Int 7)))
+              , Reg (Literal (Int 1))
+              , Reg (Literal (Int 2))
+              , Reg (Literal (Int 2))
+              , Reg (Literal (Int 3))
+              , Reg (Literal (Int 5))
+              , Reg (Literal (Int 6))
+              , Reg (Literal (Int 8))
+              , Reg (Literal (Int 10))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/array-33.typ"
+    ( line 10 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "sorted"))
+                 (Array
+                    [ Reg (Literal (Int 2))
+                    , Reg (Literal (Int 1))
+                    , Reg (Literal (Int 3))
+                    , Reg (Negated (Literal (Int 10)))
+                    , Reg (Negated (Literal (Int 5)))
+                    , Reg (Literal (Int 8))
+                    , Reg (Literal (Int 6))
+                    , Reg (Negated (Literal (Int 7)))
+                    , Reg (Literal (Int 2))
+                    ]))
+              [ KeyValArg
+                  (Identifier "key")
+                  (FuncExpr
+                     [ NormalParam (Identifier "x") ] (Ident (Identifier "x")))
+              ])
+       , NormalArg
+           (Array
+              [ Reg (Negated (Literal (Int 10)))
+              , Reg (Negated (Literal (Int 7)))
+              , Reg (Negated (Literal (Int 5)))
+              , Reg (Literal (Int 1))
+              , Reg (Literal (Int 2))
+              , Reg (Literal (Int 2))
+              , Reg (Literal (Int 3))
+              , Reg (Literal (Int 6))
+              , Reg (Literal (Int 8))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/array-33.typ"
+    ( line 11 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "sorted"))
+                 (Array
+                    [ Reg (Literal (Int 2))
+                    , Reg (Literal (Int 1))
+                    , Reg (Literal (Int 3))
+                    , Reg (Negated (Literal (Int 10)))
+                    , Reg (Negated (Literal (Int 5)))
+                    , Reg (Literal (Int 8))
+                    , Reg (Literal (Int 6))
+                    , Reg (Negated (Literal (Int 7)))
+                    , Reg (Literal (Int 2))
+                    ]))
+              [ KeyValArg
+                  (Identifier "key")
+                  (FuncExpr
+                     [ NormalParam (Identifier "x") ]
+                     (Times (Ident (Identifier "x")) (Ident (Identifier "x"))))
+              ])
+       , NormalArg
+           (Array
+              [ Reg (Literal (Int 1))
+              , Reg (Literal (Int 2))
+              , Reg (Literal (Int 2))
+              , Reg (Literal (Int 3))
+              , Reg (Negated (Literal (Int 5)))
+              , Reg (Literal (Int 6))
+              , Reg (Negated (Literal (Int 7)))
+              , Reg (Literal (Int 8))
+              , Reg (Negated (Literal (Int 10)))
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/array-34.out b/test/typ/compiler/array-34.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/array-34.out
@@ -0,0 +1,202 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/array-34.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/array-34.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/array-34.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/array-34.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess (Ident (Identifier "zip")) (Array []))
+              [ NormalArg (Array []) ])
+       , NormalArg (Array [])
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/array-34.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "zip")) (Array [ Reg (Literal (Int 1)) ]))
+              [ NormalArg (Array []) ])
+       , NormalArg (Array [])
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/array-34.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "zip")) (Array [ Reg (Literal (Int 1)) ]))
+              [ NormalArg (Array [ Reg (Literal (Int 2)) ]) ])
+       , NormalArg
+           (Array
+              [ Reg (Array [ Reg (Literal (Int 1)) , Reg (Literal (Int 2)) ]) ])
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/array-34.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "zip"))
+                 (Array [ Reg (Literal (Int 1)) , Reg (Literal (Int 2)) ]))
+              [ NormalArg
+                  (Array [ Reg (Literal (Int 3)) , Reg (Literal (Int 4)) ])
+              ])
+       , NormalArg
+           (Array
+              [ Reg (Array [ Reg (Literal (Int 1)) , Reg (Literal (Int 3)) ])
+              , Reg (Array [ Reg (Literal (Int 2)) , Reg (Literal (Int 4)) ])
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/array-34.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "zip"))
+                 (Array
+                    [ Reg (Literal (Int 1))
+                    , Reg (Literal (Int 2))
+                    , Reg (Literal (Int 3))
+                    , Reg (Literal (Int 4))
+                    ]))
+              [ NormalArg
+                  (Array [ Reg (Literal (Int 5)) , Reg (Literal (Int 6)) ])
+              ])
+       , NormalArg
+           (Array
+              [ Reg (Array [ Reg (Literal (Int 1)) , Reg (Literal (Int 5)) ])
+              , Reg (Array [ Reg (Literal (Int 2)) , Reg (Literal (Int 6)) ])
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/array-34.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "zip"))
+                 (Array
+                    [ Reg (Array [ Reg (Literal (Int 1)) , Reg (Literal (Int 2)) ])
+                    , Reg (Literal (Int 3))
+                    ]))
+              [ NormalArg
+                  (Array [ Reg (Literal (Int 4)) , Reg (Literal (Int 5)) ])
+              ])
+       , NormalArg
+           (Array
+              [ Reg
+                  (Array
+                     [ Reg (Array [ Reg (Literal (Int 1)) , Reg (Literal (Int 2)) ])
+                     , Reg (Literal (Int 4))
+                     ])
+              , Reg (Array [ Reg (Literal (Int 3)) , Reg (Literal (Int 5)) ])
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/array-34.typ"
+    ( line 9 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "zip"))
+                 (Array [ Reg (Literal (Int 1)) , Reg (Literal (String "hi")) ]))
+              [ NormalArg
+                  (Array
+                     [ Reg (Literal (Boolean True)) , Reg (Literal (Boolean False)) ])
+              ])
+       , NormalArg
+           (Array
+              [ Reg
+                  (Array [ Reg (Literal (Int 1)) , Reg (Literal (Boolean True)) ])
+              , Reg
+                  (Array
+                     [ Reg (Literal (String "hi")) , Reg (Literal (Boolean False)) ])
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/array-35.out b/test/typ/compiler/array-35.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/array-35.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/array-36.out b/test/typ/compiler/array-36.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/array-36.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/array-37.out b/test/typ/compiler/array-37.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/array-37.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/array-38.out b/test/typ/compiler/array-38.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/array-38.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/bench-00.out b/test/typ/compiler/bench-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/bench-00.out
@@ -0,0 +1,476 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/bench-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/bench-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/bench-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/bench-00.typ"
+    ( line 5 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 450.0 Pt))
+       , KeyValArg (Identifier "margin") (Literal (Numeric 1.0 Cm))
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/bench-00.typ"
+    ( line 8 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "city"))) (Literal (String "Berlin")))
+, ParBreak
+, Comment
+, Comment
+, Comment
+, Code
+    "typ/compiler/bench-00.typ"
+    ( line 13 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "university")))
+       (Block
+          (Content
+             [ Strong
+                 [ Text "Technische"
+                 , Space
+                 , Text "Universit\228t"
+                 , Space
+                 , Code
+                     "typ/compiler/bench-00.typ"
+                     ( line 13 , column 45 )
+                     (Ident (Identifier "city"))
+                 ]
+             ])))
+, SoftBreak
+, Code
+    "typ/compiler/bench-00.typ"
+    ( line 14 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "faculty")))
+       (Block
+          (Content
+             [ Strong
+                 [ Text "Fakult\228t"
+                 , Space
+                 , Text "II,"
+                 , Space
+                 , Text "Institut"
+                 , Space
+                 , Text "for"
+                 , Space
+                 , Text "Mathematik"
+                 ]
+             ])))
+, ParBreak
+, Comment
+, Comment
+, Comment
+, Code
+    "typ/compiler/bench-00.typ"
+    ( line 19 , column 2 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ BlockArg
+           [ SoftBreak
+           , Comment
+           , Space
+           , Code
+               "typ/compiler/bench-00.typ"
+               ( line 21 , column 4 )
+               (Ident (Identifier "university"))
+           , Space
+           , HardBreak
+           , Code
+               "typ/compiler/bench-00.typ"
+               ( line 22 , column 4 )
+               (Ident (Identifier "faculty"))
+           , Space
+           , HardBreak
+           , Text "Sekretariat"
+           , Space
+           , Text "MA"
+           , Space
+           , HardBreak
+           , Text "Dr"
+           , Text "."
+           , Space
+           , Text "Max"
+           , Space
+           , Text "Mustermann"
+           , Space
+           , HardBreak
+           , Text "Ola"
+           , Space
+           , Text "Nordmann,"
+           , Space
+           , Text "John"
+           , Space
+           , Text "Doe"
+           , ParBreak
+           ]
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/bench-00.typ"
+    ( line 27 , column 2 )
+    (FuncCall
+       (Ident (Identifier "align"))
+       [ NormalArg (Ident (Identifier "right"))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "box"))
+              [ BlockArg
+                  [ Strong
+                      [ Text "WiSe" , Space , Text "2019" , Text "/" , Text "2020" ]
+                  , Space
+                  , HardBreak
+                  , Text "Woche"
+                  , Space
+                  , Text "3"
+                  ]
+              ])
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/bench-00.typ"
+    ( line 30 , column 2 )
+    (FuncCall
+       (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 6.0 Mm)) ])
+, ParBreak
+, Comment
+, Comment
+, Code
+    "typ/compiler/bench-00.typ"
+    ( line 34 , column 2 )
+    (FuncCall
+       (Ident (Identifier "align"))
+       [ NormalArg (Ident (Identifier "center"))
+       , BlockArg
+           [ SoftBreak
+           , Comment
+           , Space
+           , Heading
+               4
+               [ Text "3"
+               , Text "."
+               , Space
+               , Text "\220bungsblatt"
+               , Space
+               , Text "Computerorientierte"
+               , Space
+               , Text "Mathematik"
+               , Space
+               , Text "II"
+               , Space
+               , Code
+                   "typ/compiler/bench-00.typ"
+                   ( line 36 , column 58 )
+                   (FuncCall
+                      (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 4.0 Mm)) ])
+               ]
+           , Strong
+               [ Text "Abgabe"
+               , Text ":"
+               , Space
+               , Text "03"
+               , Text "."
+               , Text "05"
+               , Text "."
+               , Text "2019"
+               ]
+           , Space
+           , Text "("
+           , Text "bis"
+           , Space
+           , Text "10"
+           , Text ":"
+           , Text "10"
+           , Space
+           , Text "Uhr"
+           , Space
+           , Text "in"
+           , Space
+           , Text "MA"
+           , Space
+           , Text "001)"
+           , Space
+           , Code
+               "typ/compiler/bench-00.typ"
+               ( line 37 , column 51 )
+               (FuncCall
+                  (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 4.0 Mm)) ])
+           , SoftBreak
+           , Strong
+               [ Text "Alle"
+               , Space
+               , Text "Antworten"
+               , Space
+               , Text "sind"
+               , Space
+               , Text "zu"
+               , Space
+               , Text "beweisen"
+               , Text "."
+               ]
+           , ParBreak
+           ]
+       ])
+, ParBreak
+, Strong [ Text "1" , Text "." , Space , Text "Aufgabe" ]
+, Space
+, Code
+    "typ/compiler/bench-00.typ"
+    ( line 41 , column 15 )
+    (FuncCall
+       (Ident (Identifier "align"))
+       [ NormalArg (Ident (Identifier "right"))
+       , BlockArg
+           [ Text "("
+           , Text "1"
+           , Space
+           , Text "+"
+           , Space
+           , Text "1"
+           , Space
+           , Text "+"
+           , Space
+           , Text "2"
+           , Space
+           , Text "Punkte)"
+           ]
+       ])
+, ParBreak
+, Text "Ein"
+, Space
+, Emph [ Text "Bin\228rbaum" ]
+, Space
+, Text "ist"
+, Space
+, Text "ein"
+, Space
+, Text "Wurzelbaum,"
+, Space
+, Text "in"
+, Space
+, Text "dem"
+, Space
+, Text "jeder"
+, Space
+, Text "Knoten"
+, Space
+, Text "\8804"
+, Space
+, Text "2"
+, Space
+, Text "Kinder"
+, Space
+, Text "hat"
+, Text "."
+, SoftBreak
+, Text "Die"
+, Space
+, Text "Tiefe"
+, Space
+, Text "eines"
+, Space
+, Text "Knotens"
+, Space
+, Emph [ Text "v" ]
+, Space
+, Text "ist"
+, Space
+, Text "die"
+, Space
+, Text "L\228nge"
+, Space
+, Text "des"
+, Space
+, Text "eindeutigen"
+, Space
+, Text "Weges"
+, Space
+, Text "von"
+, Space
+, Text "der"
+, Space
+, Text "Wurzel"
+, SoftBreak
+, Text "zu"
+, Space
+, Emph [ Text "v" ]
+, Text ","
+, Space
+, Text "und"
+, Space
+, Text "die"
+, Space
+, Text "H\246he"
+, Space
+, Text "von"
+, Space
+, Emph [ Text "v" ]
+, Space
+, Text "ist"
+, Space
+, Text "die"
+, Space
+, Text "L\228nge"
+, Space
+, Text "eines"
+, Space
+, Text "l\228ngsten"
+, Space
+, Text "("
+, Text "absteigenden)"
+, Space
+, Text "Weges"
+, SoftBreak
+, Text "von"
+, Space
+, Emph [ Text "v" ]
+, Space
+, Text "zu"
+, Space
+, Text "einem"
+, Space
+, Text "Blatt"
+, Text "."
+, Space
+, Text "Die"
+, Space
+, Text "H\246he"
+, Space
+, Text "des"
+, Space
+, Text "Baumes"
+, Space
+, Text "ist"
+, Space
+, Text "die"
+, Space
+, Text "H\246he"
+, Space
+, Text "der"
+, Space
+, Text "Wurzel"
+, Text "."
+, ParBreak
+, Code
+    "typ/compiler/bench-00.typ"
+    ( line 48 , column 2 )
+    (FuncCall
+       (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 6.0 Mm)) ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 box(body: { text(body: [
+]), 
+                             text(body: [ ]), 
+                             strong(body: { text(body: [Technische Universität ]), 
+                                            text(body: [Berlin]) }), 
+                             text(body: [ ]), 
+                             linebreak(), 
+                             strong(body: text(body: [Fakultät II, Institut for Mathematik])), 
+                             text(body: [ ]), 
+                             linebreak(), 
+                             text(body: [Sekretariat MA ]), 
+                             linebreak(), 
+                             text(body: [Dr. Max Mustermann ]), 
+                             linebreak(), 
+                             text(body: [Ola Nordmann, John Doe]), 
+                             parbreak() }), 
+                 text(body: [
+]), 
+                 align(alignment: right, 
+                       body: box(body: { strong(body: text(body: [WiSe 2019/2020])), 
+                                         text(body: [ ]), 
+                                         linebreak(), 
+                                         text(body: [Woche 3]) })), 
+                 parbreak(), 
+                 v(amount: 6.0mm), 
+                 parbreak(), 
+                 align(alignment: center, 
+                       body: { text(body: [
+]), 
+                               text(body: [ ]), 
+                               heading(body: { text(body: [3. Übungsblatt Computerorientierte Mathematik II ]), 
+                                               v(amount: 4.0mm) }, 
+                                       level: 4), 
+                               strong(body: text(body: [Abgabe: 03.05.2019])), 
+                               text(body: [ (bis 10:10 Uhr in MA 001) ]), 
+                               v(amount: 4.0mm), 
+                               text(body: [
+]), 
+                               strong(body: text(body: [Alle Antworten sind zu beweisen.])), 
+                               parbreak() }), 
+                 parbreak(), 
+                 strong(body: text(body: [1. Aufgabe])), 
+                 text(body: [ ]), 
+                 align(alignment: right, 
+                       body: text(body: [(1 + 1 + 2 Punkte)])), 
+                 parbreak(), 
+                 text(body: [Ein ]), 
+                 emph(body: text(body: [Binärbaum])), 
+                 text(body: [ ist ein Wurzelbaum, in dem jeder Knoten ≤ 2 Kinder hat.
+Die Tiefe eines Knotens ]), 
+                 emph(body: text(body: [v])), 
+                 text(body: [ ist die Länge des eindeutigen Weges von der Wurzel
+zu ]), 
+                 emph(body: text(body: [v])), 
+                 text(body: [, und die Höhe von ]), 
+                 emph(body: text(body: [v])), 
+                 text(body: [ ist die Länge eines längsten (absteigenden) Weges
+von ]), 
+                 emph(body: text(body: [v])), 
+                 text(body: [ zu einem Blatt. Die Höhe des Baumes ist die Höhe der Wurzel.]), 
+                 parbreak(), 
+                 v(amount: 6.0mm), 
+                 parbreak() })
diff --git a/test/typ/compiler/block-00.out b/test/typ/compiler/block-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/block-00.out
@@ -0,0 +1,102 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/block-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/block-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/block-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/block-00.typ"
+    ( line 5 , column 2 )
+    (Block
+       (CodeBlock
+          [ Let
+              (BasicBind (Just (Identifier "parts")))
+              (Array
+                 [ Reg (Literal (String "my fri"))
+                 , Reg (Literal (String "end."))
+                 ])
+          , Block (Content [ Text "Hello," , Space ])
+          , For
+              (BasicBind (Just (Identifier "s")))
+              (Ident (Identifier "parts"))
+              (Block
+                 (Content
+                    [ Code
+                        "typ/compiler/block-00.typ"
+                        ( line 8 , column 20 )
+                        (Ident (Identifier "s"))
+                    ]))
+          ]))
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/block-00.typ"
+    ( line 12 , column 2 )
+    (Block
+       (CodeBlock
+          [ Block (Content [ Text "How" ])
+          , If
+              [ ( Literal (Boolean True)
+                , Block (CodeBlock [ Literal (String " are") ])
+                )
+              ]
+          , Block (Content [ Space ])
+          , If
+              [ ( Literal (Boolean False) , Block (Content [ Text "Nope" ]) ) ]
+          , Plus (Block (Content [ Text "you" ])) (Literal (String "?"))
+          ]))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [Hello, ]), 
+                 text(body: [my fri]), 
+                 text(body: [end.]), 
+                 parbreak(), 
+                 text(body: [How]), 
+                 text(body: [ are]), 
+                 text(body: [ ]), 
+                 text(body: [you]), 
+                 text(body: [?]), 
+                 parbreak() })
diff --git a/test/typ/compiler/block-01.out b/test/typ/compiler/block-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/block-01.out
@@ -0,0 +1,135 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/block-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/block-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/block-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/block-01.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Block (CodeBlock [])) , NormalArg (Literal None) ])
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/block-01.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (Block
+              (CodeBlock
+                 [ Let (BasicBind (Just (Identifier "v"))) (Literal (Int 0)) ]))
+       , NormalArg (Literal None)
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/block-01.typ"
+    ( line 9 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Block (CodeBlock [ Literal (String "hello") ]))
+       , NormalArg (Literal (String "hello"))
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/block-01.typ"
+    ( line 12 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (Block
+              (CodeBlock
+                 [ Let (BasicBind (Just (Identifier "x"))) (Literal (String "m"))
+                 , Plus (Ident (Identifier "x")) (Literal (String "y"))
+                 ]))
+       , NormalArg (Literal (String "my"))
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/block-01.typ"
+    ( line 15 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (Block
+              (CodeBlock
+                 [ Let (BasicBind (Just (Identifier "x"))) (Literal (Int 1))
+                 , Let (BasicBind (Just (Identifier "y"))) (Literal (Int 2))
+                 , Plus (Ident (Identifier "x")) (Ident (Identifier "y"))
+                 ]))
+       , NormalArg (Literal (Int 3))
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/block-01.typ"
+    ( line 22 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (Block
+              (CodeBlock
+                 [ FuncCall
+                     (Ident (Identifier "type")) [ NormalArg (Literal (String "")) ]
+                 , Literal None
+                 ]))
+       , NormalArg (Literal (String "string"))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak(), 
+                 text(body: [✅]), 
+                 parbreak(), 
+                 text(body: [✅]), 
+                 parbreak(), 
+                 text(body: [✅]), 
+                 parbreak(), 
+                 text(body: [✅]), 
+                 parbreak(), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/block-02.out b/test/typ/compiler/block-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/block-02.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/block-03.out b/test/typ/compiler/block-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/block-03.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/block-04.out b/test/typ/compiler/block-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/block-04.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/block-05.out b/test/typ/compiler/block-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/block-05.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/block-06.out b/test/typ/compiler/block-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/block-06.out
@@ -0,0 +1,87 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/block-06.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/block-06.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/block-06.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/block-06.typ"
+    ( line 3 , column 2 )
+    (Block
+       (CodeBlock
+          [ Let (BasicBind (Just (Identifier "a"))) (Literal (String "a1"))
+          , Block
+              (CodeBlock
+                 [ Let (BasicBind (Just (Identifier "a"))) (Literal (String "a2"))
+                 , Block
+                     (CodeBlock
+                        [ FuncCall
+                            (Ident (Identifier "test"))
+                            [ NormalArg (Ident (Identifier "a"))
+                            , NormalArg (Literal (String "a2"))
+                            ]
+                        , Let (BasicBind (Just (Identifier "a"))) (Literal (String "a3"))
+                        , FuncCall
+                            (Ident (Identifier "test"))
+                            [ NormalArg (Ident (Identifier "a"))
+                            , NormalArg (Literal (String "a3"))
+                            ]
+                        ])
+                 , FuncCall
+                     (Ident (Identifier "test"))
+                     [ NormalArg (Ident (Identifier "a"))
+                     , NormalArg (Literal (String "a2"))
+                     ]
+                 ])
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg (Ident (Identifier "a"))
+              , NormalArg (Literal (String "a1"))
+              ]
+          ]))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/block-07.out b/test/typ/compiler/block-07.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/block-07.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/block-08.out b/test/typ/compiler/block-08.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/block-08.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/block-09.out b/test/typ/compiler/block-09.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/block-09.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/block-10.out b/test/typ/compiler/block-10.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/block-10.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/break-continue-00.out b/test/typ/compiler/break-continue-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/break-continue-00.out
@@ -0,0 +1,110 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/break-continue-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/break-continue-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/break-continue-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, SoftBreak
+, Code
+    "typ/compiler/break-continue-00.typ"
+    ( line 4 , column 2 )
+    (Let (BasicBind (Just (Identifier "var"))) (Literal (Int 0)))
+, SoftBreak
+, Code
+    "typ/compiler/break-continue-00.typ"
+    ( line 5 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "error"))) (Literal (Boolean False)))
+, ParBreak
+, Code
+    "typ/compiler/break-continue-00.typ"
+    ( line 7 , column 2 )
+    (For
+       (BasicBind (Just (Identifier "i")))
+       (FuncCall
+          (Ident (Identifier "range")) [ NormalArg (Literal (Int 10)) ])
+       (Block
+          (CodeBlock
+             [ Assign
+                 (Ident (Identifier "var"))
+                 (Plus (Ident (Identifier "var")) (Ident (Identifier "i")))
+             , If
+                 [ ( GreaterThan (Ident (Identifier "i")) (Literal (Int 5))
+                   , Block
+                       (CodeBlock
+                          [ Break
+                          , Assign (Ident (Identifier "error")) (Literal (Boolean True))
+                          ])
+                   )
+                 ]
+             ])))
+, ParBreak
+, Code
+    "typ/compiler/break-continue-00.typ"
+    ( line 15 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "var"))
+       , NormalArg (Literal (Int 21))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/break-continue-00.typ"
+    ( line 16 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "error"))
+       , NormalArg (Literal (Boolean False))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 parbreak(), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/break-continue-01.out b/test/typ/compiler/break-continue-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/break-continue-01.out
@@ -0,0 +1,89 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/break-continue-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/break-continue-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/break-continue-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, SoftBreak
+, Code
+    "typ/compiler/break-continue-01.typ"
+    ( line 4 , column 2 )
+    (Let (BasicBind (Just (Identifier "i"))) (Literal (Int 0)))
+, SoftBreak
+, Code
+    "typ/compiler/break-continue-01.typ"
+    ( line 5 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "x")))
+       (While
+          (Literal (Boolean True))
+          (Block
+             (CodeBlock
+                [ Assign
+                    (Ident (Identifier "i"))
+                    (Plus (Ident (Identifier "i")) (Literal (Int 1)))
+                , FuncCall
+                    (Ident (Identifier "str")) [ NormalArg (Ident (Identifier "i")) ]
+                , If
+                    [ ( GreaterThanOrEqual (Ident (Identifier "i")) (Literal (Int 5))
+                      , Block (CodeBlock [ Literal (String ".") , Break ])
+                      )
+                    ]
+                ]))))
+, ParBreak
+, Code
+    "typ/compiler/break-continue-01.typ"
+    ( line 14 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "x"))
+       , NormalArg (Literal (String "12345."))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/break-continue-02.out b/test/typ/compiler/break-continue-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/break-continue-02.out
@@ -0,0 +1,102 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/break-continue-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/break-continue-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/break-continue-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, SoftBreak
+, Code
+    "typ/compiler/break-continue-02.typ"
+    ( line 4 , column 2 )
+    (Let (BasicBind (Just (Identifier "i"))) (Literal (Int 0)))
+, SoftBreak
+, Code
+    "typ/compiler/break-continue-02.typ"
+    ( line 5 , column 2 )
+    (Let (BasicBind (Just (Identifier "x"))) (Literal (Int 0)))
+, ParBreak
+, Code
+    "typ/compiler/break-continue-02.typ"
+    ( line 7 , column 2 )
+    (While
+       (LessThan (Ident (Identifier "x")) (Literal (Int 8)))
+       (Block
+          (CodeBlock
+             [ Assign
+                 (Ident (Identifier "i"))
+                 (Plus (Ident (Identifier "i")) (Literal (Int 1)))
+             , If
+                 [ ( Equals
+                       (FuncCall
+                          (FieldAccess
+                             (Ident (Identifier "rem")) (Ident (Identifier "calc")))
+                          [ NormalArg (Ident (Identifier "i"))
+                          , NormalArg (Literal (Int 3))
+                          ])
+                       (Literal (Int 0))
+                   , Block (CodeBlock [ Continue ])
+                   )
+                 ]
+             , Assign
+                 (Ident (Identifier "x"))
+                 (Plus (Ident (Identifier "x")) (Ident (Identifier "i")))
+             ])))
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/break-continue-02.typ"
+    ( line 16 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "x"))
+       , NormalArg (Literal (Int 12))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 parbreak(), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/break-continue-03.out b/test/typ/compiler/break-continue-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/break-continue-03.out
@@ -0,0 +1,89 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/break-continue-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/break-continue-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/break-continue-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, SoftBreak
+, Code
+    "typ/compiler/break-continue-03.typ"
+    ( line 4 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "x")))
+       (For
+          (BasicBind (Just (Identifier "i")))
+          (FuncCall
+             (Ident (Identifier "range")) [ NormalArg (Literal (Int 5)) ])
+          (Block
+             (CodeBlock
+                [ Literal (String "a")
+                , If
+                    [ ( Equals
+                          (FuncCall
+                             (FieldAccess
+                                (Ident (Identifier "rem")) (Ident (Identifier "calc")))
+                             [ NormalArg (Ident (Identifier "i"))
+                             , NormalArg (Literal (Int 3))
+                             ])
+                          (Literal (Int 0))
+                      , Block (CodeBlock [ Literal (String "_") , Continue ])
+                      )
+                    ]
+                , FuncCall
+                    (Ident (Identifier "str")) [ NormalArg (Ident (Identifier "i")) ]
+                ]))))
+, ParBreak
+, Code
+    "typ/compiler/break-continue-03.typ"
+    ( line 13 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "x"))
+       , NormalArg (Literal (String "a_a1a2a_a4"))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/break-continue-04.out b/test/typ/compiler/break-continue-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/break-continue-04.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/break-continue-05.out b/test/typ/compiler/break-continue-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/break-continue-05.out
@@ -0,0 +1,86 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/break-continue-05.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/break-continue-05.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/break-continue-05.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/break-continue-05.typ"
+    ( line 3 , column 2 )
+    (LetFunc
+       (Identifier "identity")
+       [ NormalParam (Identifier "x") ]
+       (Ident (Identifier "x")))
+, SoftBreak
+, Code
+    "typ/compiler/break-continue-05.typ"
+    ( line 4 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "out")))
+       (For
+          (BasicBind (Just (Identifier "i")))
+          (FuncCall
+             (Ident (Identifier "range")) [ NormalArg (Literal (Int 5)) ])
+          (Block
+             (CodeBlock
+                [ Literal (String "A")
+                , FuncCall
+                    (Ident (Identifier "identity"))
+                    [ NormalArg (Block (CodeBlock [ Literal (String "B") , Break ])) ]
+                , Literal (String "C")
+                ]))))
+, ParBreak
+, Code
+    "typ/compiler/break-continue-05.typ"
+    ( line 13 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "out"))
+       , NormalArg (Literal (String "AB"))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/break-continue-06.out b/test/typ/compiler/break-continue-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/break-continue-06.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/break-continue-07.out b/test/typ/compiler/break-continue-07.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/break-continue-07.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/break-continue-08.out b/test/typ/compiler/break-continue-08.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/break-continue-08.out
@@ -0,0 +1,72 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/break-continue-08.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/break-continue-08.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/break-continue-08.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/compiler/break-continue-08.typ"
+    ( line 4 , column 2 )
+    (For
+       (BasicBind Nothing)
+       (FuncCall
+          (Ident (Identifier "range")) [ NormalArg (Literal (Int 10)) ])
+       (Block
+          (CodeBlock
+             [ Block (Content [ Text "Hello" , Space ])
+             , Block
+                 (Content
+                    [ Text "World"
+                    , Space
+                    , Code
+                        "typ/compiler/break-continue-08.typ"
+                        ( line 6 , column 11 )
+                        (Block (CodeBlock [ Block (Content [ Text "\127758" ]) , Break ]))
+                    ])
+             ])))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [Hello ]), 
+                 text(body: [World ]), 
+                 text(body: [🌎]), 
+                 parbreak() })
diff --git a/test/typ/compiler/break-continue-09.out b/test/typ/compiler/break-continue-09.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/break-continue-09.out
@@ -0,0 +1,160 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/break-continue-09.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/break-continue-09.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/break-continue-09.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Comment
+, Code
+    "typ/compiler/break-continue-09.typ"
+    ( line 5 , column 2 )
+    (For
+       (BasicBind (Just (Identifier "color")))
+       (Array
+          [ Reg (Ident (Identifier "red"))
+          , Reg (Ident (Identifier "blue"))
+          , Reg (Ident (Identifier "green"))
+          , Reg (Ident (Identifier "yellow"))
+          ])
+       (Block
+          (Content
+             [ SoftBreak
+             , Code
+                 "typ/compiler/break-continue-09.typ"
+                 ( line 6 , column 4 )
+                 (Set
+                    (Ident (Identifier "text"))
+                    [ KeyValArg (Identifier "font") (Literal (String "Roboto")) ])
+             , SoftBreak
+             , Code
+                 "typ/compiler/break-continue-09.typ"
+                 ( line 7 , column 4 )
+                 (Show
+                    Nothing
+                    (FuncExpr
+                       [ NormalParam (Identifier "it") ]
+                       (FuncCall
+                          (Ident (Identifier "text"))
+                          [ KeyValArg (Identifier "fill") (Ident (Identifier "color"))
+                          , NormalArg (Ident (Identifier "it"))
+                          ])))
+             , SoftBreak
+             , Code
+                 "typ/compiler/break-continue-09.typ"
+                 ( line 8 , column 4 )
+                 (FuncCall
+                    (Ident (Identifier "smallcaps"))
+                    [ NormalArg
+                        (If
+                           [ ( Not
+                                 (Equals (Ident (Identifier "color")) (Ident (Identifier "green")))
+                             , Block (Content [ SoftBreak , Text "Some" , ParBreak ])
+                             )
+                           , ( Literal (Boolean True)
+                             , Block
+                                 (Content
+                                    [ SoftBreak
+                                    , Text "Last"
+                                    , SoftBreak
+                                    , Code
+                                        "typ/compiler/break-continue-09.typ"
+                                        ( line 12 , column 6 )
+                                        Break
+                                    , ParBreak
+                                    ])
+                             )
+                           ])
+                    ])
+             , ParBreak
+             ])))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+], 
+                      font: "Roboto"), 
+                 text(body: { text(body: [
+], 
+                                   font: "Roboto"), 
+                              smallcaps(body: { text(body: [
+Some], 
+                                                     font: "Roboto"), 
+                                                parbreak() }), 
+                              parbreak() }, 
+                      fill: rgb(100%,25%,21%,100%), 
+                      font: "Roboto"), 
+                 text(body: [
+], 
+                      font: "Roboto"), 
+                 text(body: [
+], 
+                      font: "Roboto"), 
+                 text(body: { text(body: [
+], 
+                                   font: "Roboto"), 
+                              smallcaps(body: { text(body: [
+Some], 
+                                                     font: "Roboto"), 
+                                                parbreak() }), 
+                              parbreak() }, 
+                      fill: rgb(0%,45%,85%,100%), 
+                      font: "Roboto"), 
+                 text(body: [
+], 
+                      font: "Roboto"), 
+                 text(body: [
+], 
+                      font: "Roboto"), 
+                 text(body: { text(body: [
+], 
+                                   font: "Roboto"), 
+                              smallcaps(body: { text(body: [
+Last
+], 
+                                                     font: "Roboto"), 
+                                                parbreak() }), 
+                              parbreak() }, 
+                      fill: rgb(18%,80%,25%,100%), 
+                      font: "Roboto"), 
+                 parbreak() })
diff --git a/test/typ/compiler/break-continue-10.out b/test/typ/compiler/break-continue-10.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/break-continue-10.out
@@ -0,0 +1,66 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/break-continue-10.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/break-continue-10.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/break-continue-10.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Comment
+, Code
+    "typ/compiler/break-continue-10.typ"
+    ( line 5 , column 2 )
+    (For
+       (BasicBind (Just (Identifier "i")))
+       (FuncCall
+          (Ident (Identifier "range")) [ NormalArg (Literal (Int 10)) ])
+       (Block
+          (CodeBlock
+             [ Block (Content [ Text "Hello" ])
+             , Set
+                 (Ident (Identifier "text"))
+                 [ NormalArg (Ident (Identifier "blue")) , SpreadArg Break ]
+             , Block (Content [ Text "Not" , Space , Text "happening" ])
+             ])))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [Hello]), 
+                 parbreak() })
diff --git a/test/typ/compiler/break-continue-11.out b/test/typ/compiler/break-continue-11.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/break-continue-11.out
@@ -0,0 +1,113 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/break-continue-11.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/break-continue-11.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/break-continue-11.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, SoftBreak
+, Code
+    "typ/compiler/break-continue-11.typ"
+    ( line 5 , column 2 )
+    (For
+       (BasicBind (Just (Identifier "i")))
+       (FuncCall
+          (Ident (Identifier "range")) [ NormalArg (Literal (Int 10)) ])
+       (Block
+          (CodeBlock
+             [ FuncCall
+                 (Ident (Identifier "table"))
+                 [ NormalArg
+                     (Block (CodeBlock [ Block (Content [ Text "A" ]) , Break ]))
+                 , NormalArg
+                     (For
+                        (BasicBind Nothing)
+                        (FuncCall
+                           (Ident (Identifier "range")) [ NormalArg (Literal (Int 3)) ])
+                        (Block (Content [ Text "B" ])))
+                 ]
+             ])))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 table(children: (text(body: [A]), 
+                                  { text(body: [B]), 
+                                    text(body: [B]), 
+                                    text(body: [B]) })), 
+                 table(children: (text(body: [A]), 
+                                  { text(body: [B]), 
+                                    text(body: [B]), 
+                                    text(body: [B]) })), 
+                 table(children: (text(body: [A]), 
+                                  { text(body: [B]), 
+                                    text(body: [B]), 
+                                    text(body: [B]) })), 
+                 table(children: (text(body: [A]), 
+                                  { text(body: [B]), 
+                                    text(body: [B]), 
+                                    text(body: [B]) })), 
+                 table(children: (text(body: [A]), 
+                                  { text(body: [B]), 
+                                    text(body: [B]), 
+                                    text(body: [B]) })), 
+                 table(children: (text(body: [A]), 
+                                  { text(body: [B]), 
+                                    text(body: [B]), 
+                                    text(body: [B]) })), 
+                 table(children: (text(body: [A]), 
+                                  { text(body: [B]), 
+                                    text(body: [B]), 
+                                    text(body: [B]) })), 
+                 table(children: (text(body: [A]), 
+                                  { text(body: [B]), 
+                                    text(body: [B]), 
+                                    text(body: [B]) })), 
+                 table(children: (text(body: [A]), 
+                                  { text(body: [B]), 
+                                    text(body: [B]), 
+                                    text(body: [B]) })), 
+                 table(children: (text(body: [A]), 
+                                  { text(body: [B]), 
+                                    text(body: [B]), 
+                                    text(body: [B]) })), 
+                 parbreak() })
diff --git a/test/typ/compiler/call-00.out b/test/typ/compiler/call-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/call-00.out
@@ -0,0 +1,203 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/call-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/call-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/call-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/call-00.typ"
+    ( line 5 , column 2 )
+    (LetFunc (Identifier "f") [] (Block (CodeBlock [])))
+, SoftBreak
+, Code
+    "typ/compiler/call-00.typ"
+    ( line 6 , column 2 )
+    (Block
+       (Content
+          [ Code
+              "typ/compiler/call-00.typ"
+              ( line 6 , column 4 )
+              (FuncCall (Ident (Identifier "f")) [])
+          , Strong [ Text "Bold" ]
+          ]))
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/call-00.typ"
+    ( line 9 , column 2 )
+    (LetFunc
+       (Identifier "f")
+       [ NormalParam (Identifier "x") , NormalParam (Identifier "body") ]
+       (FuncExpr
+          [ NormalParam (Identifier "y") ]
+          (Plus
+             (Plus
+                (Block
+                   (Content
+                      [ Code
+                          "typ/compiler/call-00.typ"
+                          ( line 9 , column 28 )
+                          (Ident (Identifier "x"))
+                      ]))
+                (Ident (Identifier "body")))
+             (Block
+                (Content
+                   [ Code
+                       "typ/compiler/call-00.typ"
+                       ( line 9 , column 42 )
+                       (Ident (Identifier "y"))
+                   ])))))
+, SoftBreak
+, Code
+    "typ/compiler/call-00.typ"
+    ( line 10 , column 2 )
+    (FuncCall
+       (FuncCall
+          (Ident (Identifier "f"))
+          [ NormalArg (Literal (Int 1)) , BlockArg [ Text "2" ] ])
+       [ NormalArg (Literal (Int 3)) ])
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/call-00.typ"
+    ( line 13 , column 2 )
+    (Ident (Identifier "test"))
+, Space
+, Text "("
+, Text "it)"
+, ParBreak
+, Code
+    "typ/compiler/call-00.typ"
+    ( line 15 , column 2 )
+    (LetFunc
+       (Identifier "f")
+       [ NormalParam (Identifier "body") ]
+       (Ident (Identifier "body")))
+, SoftBreak
+, Code
+    "typ/compiler/call-00.typ"
+    ( line 16 , column 2 )
+    (FuncCall (Ident (Identifier "f")) [ BlockArg [ Text "A" ] ])
+, SoftBreak
+, Code
+    "typ/compiler/call-00.typ"
+    ( line 17 , column 2 )
+    (FuncCall (Ident (Identifier "f")) [ BlockArg [ Text "A" ] ])
+, SoftBreak
+, Code
+    "typ/compiler/call-00.typ"
+    ( line 18 , column 2 )
+    (FuncCall
+       (Ident (Identifier "f"))
+       [ NormalArg (Block (Content [ Text "A" ])) ])
+, ParBreak
+, Code
+    "typ/compiler/call-00.typ"
+    ( line 20 , column 2 )
+    (LetFunc
+       (Identifier "g")
+       [ NormalParam (Identifier "a") , NormalParam (Identifier "b") ]
+       (Plus (Ident (Identifier "a")) (Ident (Identifier "b"))))
+, SoftBreak
+, Code
+    "typ/compiler/call-00.typ"
+    ( line 21 , column 2 )
+    (FuncCall
+       (Ident (Identifier "g"))
+       [ BlockArg [ Text "A" ] , BlockArg [ Text "B" ] ])
+, SoftBreak
+, Code
+    "typ/compiler/call-00.typ"
+    ( line 22 , column 2 )
+    (FuncCall
+       (Ident (Identifier "g"))
+       [ NormalArg (Block (Content [ Text "A" ]))
+       , NormalArg (Block (Content [ Text "B" ]))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/call-00.typ"
+    ( line 23 , column 2 )
+    (FuncCall
+       (Ident (Identifier "g"))
+       [ BlockArg [ Text "A" ] , BlockArg [ Text "B" ] ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 strong(body: text(body: [Bold])), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 text(body: [1]), 
+                 text(body: [2]), 
+                 text(body: [3]), 
+                 parbreak(), 
+                 text(body: [ (it)]), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 text(body: [A]), 
+                 text(body: [
+]), 
+                 text(body: [A]), 
+                 text(body: [
+]), 
+                 text(body: [A]), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 text(body: [A]), 
+                 text(body: [B]), 
+                 text(body: [
+]), 
+                 text(body: [A]), 
+                 text(body: [B]), 
+                 text(body: [
+]), 
+                 text(body: [A]), 
+                 text(body: [B]), 
+                 parbreak() })
diff --git a/test/typ/compiler/call-01.out b/test/typ/compiler/call-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/call-01.out
@@ -0,0 +1,114 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/call-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/call-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/call-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/call-01.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Plus (Literal (Int 1)) (Literal (Int 1)))
+       , NormalArg (Literal (Int 2))
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/call-01.typ"
+    ( line 6 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "alias")))
+       (Ident (Identifier "type")))
+, SoftBreak
+, Code
+    "typ/compiler/call-01.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "alias"))
+              [ NormalArg (Ident (Identifier "alias")) ])
+       , NormalArg (Literal (String "function"))
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/call-01.typ"
+    ( line 10 , column 2 )
+    (Block
+       (CodeBlock
+          [ FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "type")) [ NormalArg (Literal (String "hi")) ])
+              , NormalArg (Literal (String "string"))
+              ]
+          , LetFunc
+              (Identifier "adder")
+              [ NormalParam (Identifier "dx") ]
+              (FuncExpr
+                 [ NormalParam (Identifier "x") ]
+                 (Plus (Ident (Identifier "x")) (Ident (Identifier "dx"))))
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg
+                  (FuncCall
+                     (FuncCall
+                        (Ident (Identifier "adder")) [ NormalArg (Literal (Int 2)) ])
+                     [ NormalArg (Literal (Int 5)) ])
+              , NormalArg (Literal (Int 7))
+              ]
+          ]))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak(), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/call-02.out b/test/typ/compiler/call-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/call-02.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/call-03.out b/test/typ/compiler/call-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/call-03.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/call-04.out b/test/typ/compiler/call-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/call-04.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/call-05.out b/test/typ/compiler/call-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/call-05.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/call-06.out b/test/typ/compiler/call-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/call-06.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/call-07.out b/test/typ/compiler/call-07.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/call-07.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/call-08.out b/test/typ/compiler/call-08.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/call-08.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/call-09.out b/test/typ/compiler/call-09.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/call-09.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/call-10.out b/test/typ/compiler/call-10.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/call-10.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/closure-00.out b/test/typ/compiler/closure-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/closure-00.out
@@ -0,0 +1,64 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/closure-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/closure-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/closure-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, SoftBreak
+, Code
+    "typ/compiler/closure-00.typ"
+    ( line 5 , column 2 )
+    (Let (BasicBind (Just (Identifier "x"))) (Literal (String "x")))
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/closure-00.typ"
+    ( line 8 , column 2 )
+    (FuncExpr
+       [ NormalParam (Identifier "x") ] (Ident (Identifier "y")))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 parbreak() })
diff --git a/test/typ/compiler/closure-01.out b/test/typ/compiler/closure-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/closure-01.out
@@ -0,0 +1,68 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/closure-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/closure-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/closure-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/closure-01.typ"
+    ( line 3 , column 2 )
+    (Block
+       (CodeBlock
+          [ Let
+              (BasicBind (Just (Identifier "adder")))
+              (FuncExpr
+                 [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+                 (Plus (Ident (Identifier "x")) (Ident (Identifier "y"))))
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "adder"))
+                     [ NormalArg (Literal (Int 2)) , NormalArg (Literal (Int 3)) ])
+              , NormalArg (Literal (Int 5))
+              ]
+          ]))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/closure-02.out b/test/typ/compiler/closure-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/closure-02.out
@@ -0,0 +1,91 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/closure-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/closure-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/closure-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/compiler/closure-02.typ"
+    ( line 4 , column 2 )
+    (Block
+       (CodeBlock
+          [ Let
+              (BasicBind (Just (Identifier "chain")))
+              (FuncExpr
+                 [ NormalParam (Identifier "f") , NormalParam (Identifier "g") ]
+                 (FuncExpr
+                    [ NormalParam (Identifier "x") ]
+                    (FuncCall
+                       (Ident (Identifier "f"))
+                       [ NormalArg
+                           (FuncCall
+                              (Ident (Identifier "g")) [ NormalArg (Ident (Identifier "x")) ])
+                       ])))
+          , Let
+              (BasicBind (Just (Identifier "f")))
+              (FuncExpr
+                 [ NormalParam (Identifier "x") ]
+                 (Plus (Ident (Identifier "x")) (Literal (Int 1))))
+          , Let
+              (BasicBind (Just (Identifier "g")))
+              (FuncExpr
+                 [ NormalParam (Identifier "x") ]
+                 (Times (Literal (Int 2)) (Ident (Identifier "x"))))
+          , Let
+              (BasicBind (Just (Identifier "h")))
+              (FuncCall
+                 (Ident (Identifier "chain"))
+                 [ NormalArg (Ident (Identifier "f"))
+                 , NormalArg (Ident (Identifier "g"))
+                 ])
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg
+                  (FuncCall (Ident (Identifier "h")) [ NormalArg (Literal (Int 2)) ])
+              , NormalArg (Literal (Int 5))
+              ]
+          ]))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/closure-03.out b/test/typ/compiler/closure-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/closure-03.out
@@ -0,0 +1,90 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/closure-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/closure-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/closure-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/closure-03.typ"
+    ( line 3 , column 2 )
+    (Block
+       (CodeBlock
+          [ Let (BasicBind (Just (Identifier "mark"))) (Literal (String "!"))
+          , Let
+              (BasicBind (Just (Identifier "greet")))
+              (Block
+                 (CodeBlock
+                    [ Let (BasicBind (Just (Identifier "hi"))) (Literal (String "Hi"))
+                    , FuncExpr
+                        [ NormalParam (Identifier "name") ]
+                        (Block
+                           (CodeBlock
+                              [ Plus
+                                  (Plus
+                                     (Plus (Ident (Identifier "hi")) (Literal (String ", ")))
+                                     (Ident (Identifier "name")))
+                                  (Ident (Identifier "mark"))
+                              ]))
+                    ]))
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "greet"))
+                     [ NormalArg (Literal (String "Typst")) ])
+              , NormalArg (Literal (String "Hi, Typst!"))
+              ]
+          , Assign (Ident (Identifier "mark")) (Literal (String "?"))
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "greet"))
+                     [ NormalArg (Literal (String "Typst")) ])
+              , NormalArg (Literal (String "Hi, Typst!"))
+              ]
+          ]))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/closure-04.out b/test/typ/compiler/closure-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/closure-04.out
@@ -0,0 +1,71 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/closure-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/closure-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/closure-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/closure-04.typ"
+    ( line 3 , column 2 )
+    (Block
+       (CodeBlock
+          [ Let (BasicBind (Just (Identifier "x"))) (Literal (Int 1))
+          , LetFunc
+              (Identifier "f")
+              []
+              (Block
+                 (CodeBlock
+                    [ Let
+                        (BasicBind (Just (Identifier "x")))
+                        (Plus (Ident (Identifier "x")) (Literal (Int 2)))
+                    , Ident (Identifier "x")
+                    ]))
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg (FuncCall (Ident (Identifier "f")) [])
+              , NormalArg (Literal (Int 3))
+              ]
+          ]))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/closure-05.out b/test/typ/compiler/closure-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/closure-05.out
@@ -0,0 +1,72 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/closure-05.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/closure-05.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/closure-05.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/closure-05.typ"
+    ( line 3 , column 2 )
+    (Block
+       (CodeBlock
+          [ Let
+              (BasicBind (Just (Identifier "b"))) (Literal (String "module.typ"))
+          , LetFunc
+              (Identifier "f")
+              []
+              (Block
+                 (CodeBlock
+                    [ Import
+                        (Ident (Identifier "b"))
+                        (SomeIdentifiers [ ( Identifier "b" , Nothing ) ])
+                    , Ident (Identifier "b")
+                    ]))
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg (FuncCall (Ident (Identifier "f")) [])
+              , NormalArg (Literal (Int 1))
+              ]
+          ]))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/closure-06.out b/test/typ/compiler/closure-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/closure-06.out
@@ -0,0 +1,84 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/closure-06.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/closure-06.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/closure-06.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/closure-06.typ"
+    ( line 3 , column 2 )
+    (Block
+       (CodeBlock
+          [ Let
+              (BasicBind (Just (Identifier "v")))
+              (Array
+                 [ Reg (Literal (Int 1))
+                 , Reg (Literal (Int 2))
+                 , Reg (Literal (Int 3))
+                 ])
+          , LetFunc
+              (Identifier "f")
+              []
+              (Block
+                 (CodeBlock
+                    [ Let (BasicBind (Just (Identifier "s"))) (Literal (Int 0))
+                    , For
+                        (BasicBind (Just (Identifier "v")))
+                        (Ident (Identifier "v"))
+                        (Block
+                           (CodeBlock
+                              [ Assign
+                                  (Ident (Identifier "s"))
+                                  (Plus (Ident (Identifier "s")) (Ident (Identifier "v")))
+                              ]))
+                    , Ident (Identifier "s")
+                    ]))
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg (FuncCall (Ident (Identifier "f")) [])
+              , NormalArg (Literal (Int 6))
+              ]
+          ]))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/closure-07.out b/test/typ/compiler/closure-07.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/closure-07.out
@@ -0,0 +1,69 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/closure-07.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/closure-07.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/closure-07.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/closure-07.typ"
+    ( line 3 , column 2 )
+    (Block
+       (CodeBlock
+          [ Let (BasicBind (Just (Identifier "g"))) (Literal (String "hi"))
+          , LetFunc
+              (Identifier "f")
+              []
+              (Block
+                 (CodeBlock
+                    [ LetFunc (Identifier "g") [] (Literal (String "bye"))
+                    , FuncCall (Ident (Identifier "g")) []
+                    ]))
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg (FuncCall (Ident (Identifier "f")) [])
+              , NormalArg (Literal (String "bye"))
+              ]
+          ]))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/closure-08.out b/test/typ/compiler/closure-08.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/closure-08.out
@@ -0,0 +1,81 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/closure-08.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/closure-08.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/closure-08.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/closure-08.typ"
+    ( line 3 , column 2 )
+    (Block
+       (CodeBlock
+          [ Let (BasicBind (Just (Identifier "x"))) (Literal (Int 5))
+          , LetFunc
+              (Identifier "g")
+              []
+              (Block
+                 (CodeBlock
+                    [ LetFunc
+                        (Identifier "f")
+                        [ NormalParam (Identifier "x")
+                        , DefaultParam (Identifier "y") (Ident (Identifier "x"))
+                        ]
+                        (Plus (Ident (Identifier "x")) (Ident (Identifier "y")))
+                    , Ident (Identifier "f")
+                    ]))
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg
+                  (FuncCall
+                     (FuncCall (Ident (Identifier "g")) [])
+                     [ NormalArg (Literal (Int 8)) ])
+              , NormalArg (Literal (Int 13))
+              ]
+          ]))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [❌(]), 
+                 text(body: [16]), 
+                 text(body: [ /= ]), 
+                 text(body: [13]), 
+                 text(body: [)]), 
+                 parbreak() })
diff --git a/test/typ/compiler/closure-09.out b/test/typ/compiler/closure-09.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/closure-09.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/closure-10.out b/test/typ/compiler/closure-10.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/closure-10.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/closure-11.out b/test/typ/compiler/closure-11.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/closure-11.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/closure-12.out b/test/typ/compiler/closure-12.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/closure-12.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/closure-13.out b/test/typ/compiler/closure-13.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/closure-13.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/closure-14.out b/test/typ/compiler/closure-14.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/closure-14.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/closure-15.out b/test/typ/compiler/closure-15.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/closure-15.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/closure-16.out b/test/typ/compiler/closure-16.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/closure-16.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/closure-17.out b/test/typ/compiler/closure-17.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/closure-17.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/closure-18.out b/test/typ/compiler/closure-18.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/closure-18.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/closure-19.out b/test/typ/compiler/closure-19.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/closure-19.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/closure-20.out b/test/typ/compiler/closure-20.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/closure-20.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/color-00.out b/test/typ/compiler/color-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/color-00.out
@@ -0,0 +1,213 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/color-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/color-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/color-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/color-00.typ"
+    ( line 3 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "c")))
+       (FuncCall
+          (Ident (Identifier "cmyk"))
+          [ NormalArg (Literal (Numeric 50.0 Percent))
+          , NormalArg (Literal (Numeric 64.0 Percent))
+          , NormalArg (Literal (Numeric 16.0 Percent))
+          , NormalArg (Literal (Numeric 17.0 Percent))
+          ]))
+, SoftBreak
+, Code
+    "typ/compiler/color-00.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "stack"))
+       [ KeyValArg (Identifier "dir") (Ident (Identifier "ltr"))
+       , KeyValArg (Identifier "spacing") (Literal (Numeric 1.0 Fr))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg (Identifier "width") (Literal (Numeric 1.0 Cm))
+              , KeyValArg
+                  (Identifier "fill")
+                  (FuncCall
+                     (Ident (Identifier "cmyk"))
+                     [ NormalArg (Literal (Numeric 69.0 Percent))
+                     , NormalArg (Literal (Numeric 11.0 Percent))
+                     , NormalArg (Literal (Numeric 69.0 Percent))
+                     , NormalArg (Literal (Numeric 41.0 Percent))
+                     ])
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg (Identifier "width") (Literal (Numeric 1.0 Cm))
+              , KeyValArg (Identifier "fill") (Ident (Identifier "c"))
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg (Identifier "width") (Literal (Numeric 1.0 Cm))
+              , KeyValArg
+                  (Identifier "fill")
+                  (FuncCall
+                     (FieldAccess
+                        (Ident (Identifier "negate")) (Ident (Identifier "c")))
+                     [])
+              ])
+       ])
+, ParBreak
+, Code
+    "typ/compiler/color-00.typ"
+    ( line 12 , column 2 )
+    (For
+       (BasicBind (Just (Identifier "x")))
+       (FuncCall
+          (Ident (Identifier "range"))
+          [ NormalArg (Literal (Int 0)) , NormalArg (Literal (Int 11)) ])
+       (Block
+          (CodeBlock
+             [ FuncCall
+                 (Ident (Identifier "box"))
+                 [ NormalArg
+                     (FuncCall
+                        (Ident (Identifier "square"))
+                        [ KeyValArg (Identifier "size") (Literal (Numeric 9.0 Pt))
+                        , KeyValArg
+                            (Identifier "fill")
+                            (FuncCall
+                               (FieldAccess
+                                  (Ident (Identifier "lighten")) (Ident (Identifier "c")))
+                               [ NormalArg
+                                   (Times (Ident (Identifier "x")) (Literal (Numeric 10.0 Percent)))
+                               ])
+                        ])
+                 ]
+             ])))
+, SoftBreak
+, Code
+    "typ/compiler/color-00.typ"
+    ( line 15 , column 2 )
+    (For
+       (BasicBind (Just (Identifier "x")))
+       (FuncCall
+          (Ident (Identifier "range"))
+          [ NormalArg (Literal (Int 0)) , NormalArg (Literal (Int 11)) ])
+       (Block
+          (CodeBlock
+             [ FuncCall
+                 (Ident (Identifier "box"))
+                 [ NormalArg
+                     (FuncCall
+                        (Ident (Identifier "square"))
+                        [ KeyValArg (Identifier "size") (Literal (Numeric 9.0 Pt))
+                        , KeyValArg
+                            (Identifier "fill")
+                            (FuncCall
+                               (FieldAccess
+                                  (Ident (Identifier "darken")) (Ident (Identifier "c")))
+                               [ NormalArg
+                                   (Times (Ident (Identifier "x")) (Literal (Numeric 10.0 Percent)))
+                               ])
+                        ])
+                 ]
+             ])))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 stack(children: (rect(fill: cmyk(69%,11%,69%,41%), 
+                                       width: 1.0cm), 
+                                  rect(fill: cmyk(50%,64%,16%,17%), 
+                                       width: 1.0cm), 
+                                  rect(fill: cmyk(50%,36%,84%,17%), 
+                                       width: 1.0cm)), 
+                       dir: ltr, 
+                       spacing: 1.0fr), 
+                 parbreak(), 
+                 box(body: square(fill: cmyk(50%,64%,16%,17%), 
+                                  size: 9.0pt)), 
+                 box(body: square(fill: cmyk(55%,67%,24%,25%), 
+                                  size: 9.0pt)), 
+                 box(body: square(fill: cmyk(60%,71%,32%,33%), 
+                                  size: 9.0pt)), 
+                 box(body: square(fill: cmyk(65%,74%,41%,41%), 
+                                  size: 9.0pt)), 
+                 box(body: square(fill: cmyk(70%,78%,49%,50%), 
+                                  size: 9.0pt)), 
+                 box(body: square(fill: cmyk(75%,82%,58%,58%), 
+                                  size: 9.0pt)), 
+                 box(body: square(fill: cmyk(80%,85%,66%,66%), 
+                                  size: 9.0pt)), 
+                 box(body: square(fill: cmyk(85%,89%,74%,75%), 
+                                  size: 9.0pt)), 
+                 box(body: square(fill: cmyk(90%,92%,83%,83%), 
+                                  size: 9.0pt)), 
+                 box(body: square(fill: cmyk(95%,96%,91%,91%), 
+                                  size: 9.0pt)), 
+                 box(body: square(fill: cmyk(100%,100%,100%,100%), 
+                                  size: 9.0pt)), 
+                 text(body: [
+]), 
+                 box(body: square(fill: cmyk(50%,64%,16%,17%), 
+                                  size: 9.0pt)), 
+                 box(body: square(fill: cmyk(45%,57%,14%,15%), 
+                                  size: 9.0pt)), 
+                 box(body: square(fill: cmyk(40%,51%,12%,13%), 
+                                  size: 9.0pt)), 
+                 box(body: square(fill: cmyk(35%,44%,11%,11%), 
+                                  size: 9.0pt)), 
+                 box(body: square(fill: cmyk(30%,38%,9%,10%), 
+                                  size: 9.0pt)), 
+                 box(body: square(fill: cmyk(25%,32%,8%,8%), 
+                                  size: 9.0pt)), 
+                 box(body: square(fill: cmyk(20%,25%,6%,6%), 
+                                  size: 9.0pt)), 
+                 box(body: square(fill: cmyk(15%,19%,4%,5%), 
+                                  size: 9.0pt)), 
+                 box(body: square(fill: cmyk(10%,12%,3%,3%), 
+                                  size: 9.0pt)), 
+                 box(body: square(fill: cmyk(5%,6%,1%,1%), 
+                                  size: 9.0pt)), 
+                 box(body: square(fill: cmyk(0%,0%,0%,0%), 
+                                  size: 9.0pt)), 
+                 parbreak() })
diff --git a/test/typ/compiler/color-01.out b/test/typ/compiler/color-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/color-01.out
@@ -0,0 +1,116 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/color-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/color-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/color-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/compiler/color-01.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "lighten"))
+                 (FuncCall
+                    (Ident (Identifier "luma"))
+                    [ NormalArg (Literal (Numeric 20.0 Percent)) ]))
+              [ NormalArg (Literal (Numeric 50.0 Percent)) ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "luma"))
+              [ NormalArg (Literal (Numeric 60.0 Percent)) ])
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/color-01.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "darken"))
+                 (FuncCall
+                    (Ident (Identifier "luma"))
+                    [ NormalArg (Literal (Numeric 80.0 Percent)) ]))
+              [ NormalArg (Literal (Numeric 20.0 Percent)) ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "luma"))
+              [ NormalArg (Literal (Numeric 63.9 Percent)) ])
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/color-01.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "negate"))
+                 (FuncCall
+                    (Ident (Identifier "luma"))
+                    [ NormalArg (Literal (Numeric 80.0 Percent)) ]))
+              [])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "luma"))
+              [ NormalArg (Literal (Numeric 20.0 Percent)) ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [❌(]), 
+                 text(body: [luma(64%)]), 
+                 text(body: [ /= ]), 
+                 text(body: [luma(63%)]), 
+                 text(body: [)]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/comment-00.out b/test/typ/compiler/comment-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/comment-00.out
@@ -0,0 +1,88 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/comment-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/comment-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/comment-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "A"
+, Comment
+, Text "B"
+, ParBreak
+, Comment
+, Text "C"
+, Comment
+, Text "D"
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/comment-00.typ"
+    ( line 12 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "type")) [ NormalArg (Literal (Int 1)) ])
+       , NormalArg (Literal (String "integer"))
+       ])
+, ParBreak
+, Comment
+, Comment
+, SoftBreak
+, Comment
+, Comment
+, ParBreak
+, Text "E"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [A]), 
+                 text(body: [B]), 
+                 parbreak(), 
+                 text(body: [C]), 
+                 text(body: [D]), 
+                 parbreak(), 
+                 text(body: [✅]), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [E]), 
+                 parbreak() })
diff --git a/test/typ/compiler/comment-01.out b/test/typ/compiler/comment-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/comment-01.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/construct-00.out b/test/typ/compiler/construct-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/construct-00.out
@@ -0,0 +1,74 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/construct-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/construct-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/construct-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/compiler/construct-00.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "par"))
+       [ KeyValArg (Identifier "leading") (Literal (Numeric 2.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/compiler/construct-00.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "list"))
+       [ KeyValArg (Identifier "body-indent") (Literal (Numeric 20.0 Pt))
+       , NormalArg (Block (Content [ Text "First" ]))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "list"))
+              [ BlockArg [ Text "A" ] , BlockArg [ Text "B" ] ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 list(body-indent: 20.0pt, 
+                      children: (text(body: [First]), 
+                                 list(children: (text(body: [A]), 
+                                                 text(body: [B]))))), 
+                 parbreak() })
diff --git a/test/typ/compiler/construct-01.out b/test/typ/compiler/construct-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/construct-01.out
@@ -0,0 +1,90 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/construct-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/construct-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/construct-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Comment
+, Code
+    "typ/compiler/construct-01.typ"
+    ( line 5 , column 2 )
+    (Set
+       (Ident (Identifier "list"))
+       [ KeyValArg (Identifier "marker") (Block (Content [ Text ">" ])) ])
+, SoftBreak
+, Code
+    "typ/compiler/construct-01.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "list"))
+       [ KeyValArg (Identifier "marker") (Block (Content [ EnDash ]))
+       , BlockArg
+           [ SoftBreak
+           , Code
+               "typ/compiler/construct-01.typ"
+               ( line 7 , column 4 )
+               (FuncCall
+                  (Ident (Identifier "rect"))
+                  [ KeyValArg (Identifier "width") (Literal (Numeric 2.0 Cm))
+                  , KeyValArg (Identifier "fill") (Ident (Identifier "green"))
+                  , KeyValArg (Identifier "inset") (Literal (Numeric 4.0 Pt))
+                  , NormalArg
+                      (FuncCall (Ident (Identifier "list")) [ BlockArg [ Text "A" ] ])
+                  ])
+           , ParBreak
+           ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 list(children: ({ text(body: [
+]), 
+                                   rect(body: list(children: (text(body: [A])), 
+                                                   marker: text(body: [>])), 
+                                        fill: rgb(18%,80%,25%,100%), 
+                                        inset: 4.0pt, 
+                                        width: 2.0cm), 
+                                   parbreak() }), 
+                      marker: text(body: [–])), 
+                 parbreak() })
diff --git a/test/typ/compiler/construct-02.out b/test/typ/compiler/construct-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/construct-02.out
@@ -0,0 +1,78 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/construct-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/construct-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/construct-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/compiler/construct-02.typ"
+    ( line 4 , column 2 )
+    (Block
+       (Content
+          [ Code
+              "typ/compiler/construct-02.typ"
+              ( line 4 , column 4 )
+              (Set
+                 (Ident (Identifier "rect"))
+                 [ KeyValArg (Identifier "fill") (Ident (Identifier "yellow")) ])
+          , Code
+              "typ/compiler/construct-02.typ"
+              ( line 4 , column 28 )
+              (FuncCall
+                 (Ident (Identifier "text"))
+                 [ NormalArg (Literal (Numeric 1.0 Em))
+                 , NormalArg
+                     (FuncCall
+                        (Ident (Identifier "rect"))
+                        [ KeyValArg (Identifier "inset") (Literal (Numeric 5.0 Pt))
+                        , NormalArg (FuncCall (Ident (Identifier "rect")) [])
+                        ])
+                 ])
+          ]))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: rect(body: rect(fill: rgb(100%,86%,0%,100%)), 
+                                 fill: rgb(100%,86%,0%,100%), 
+                                 inset: 5.0pt), 
+                      size: 1.0em), 
+                 parbreak() })
diff --git a/test/typ/compiler/construct-03.out b/test/typ/compiler/construct-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/construct-03.out
@@ -0,0 +1,70 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/construct-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/construct-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/construct-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "A"
+, Space
+, Code
+    "typ/compiler/construct-03.typ"
+    ( line 3 , column 4 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg (Identifier "fill") (Ident (Identifier "yellow"))
+              , KeyValArg (Identifier "inset") (Literal (Numeric 5.0 Pt))
+              , NormalArg (FuncCall (Ident (Identifier "rect")) [])
+              ])
+       ])
+, Space
+, Text "B"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [A ]), 
+                 box(body: rect(body: rect(), 
+                                fill: rgb(100%,86%,0%,100%), 
+                                inset: 5.0pt)), 
+                 text(body: [ B]), 
+                 parbreak() })
diff --git a/test/typ/compiler/construct-04.out b/test/typ/compiler/construct-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/construct-04.out
@@ -0,0 +1,73 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/construct-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/construct-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/construct-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/compiler/construct-04.typ"
+    ( line 4 , column 2 )
+    (Show
+       (Just (Ident (Identifier "enum")))
+       (Set
+          (Ident (Identifier "text"))
+          [ NormalArg (Ident (Identifier "blue")) ]))
+, SoftBreak
+, Code
+    "typ/compiler/construct-04.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "enum"))
+       [ KeyValArg (Identifier "numbering") (Literal (String "(a)"))
+       , NormalArg (Block (Content [ Text "A" ]))
+       , NormalArg
+           (FuncCall (Ident (Identifier "enum")) [ BlockArg [ Text "B" ] ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 enum(children: (text(body: [A]), 
+                                 enum(children: (text(body: [B])))), 
+                      numbering: "(a)"), 
+                 parbreak() })
diff --git a/test/typ/compiler/content-field-00.typ b/test/typ/compiler/content-field-00.typ
deleted file mode 100644
--- a/test/typ/compiler/content-field-00.typ
+++ /dev/null
@@ -1,41 +0,0 @@
-// Integrated test for content fields.
-
-#let compute(equation, ..vars) = {
-  let vars = vars.named()
-  let f(elem) = {
-    let func = elem.func()
-    if func == text {
-      let text = elem.text
-      if regex("^\d+$") in text {
-        int(text)
-      } else if text in vars {
-        int(vars.at(text))
-      } else {
-        panic("unknown math variable: " + text)
-      }
-    } else if func == math.attach {
-      let value = f(elem.base)
-      if elem.has("t") {
-        value = calc.pow(value, f(elem.t))
-      }
-      value
-    } else if elem.has("children") {
-      elem
-        .children
-        .filter(v => v != [ ])
-        .split[+]
-        .map(xs => xs.fold(1, (prod, v) => prod * f(v)))
-        .fold(0, (sum, v) => sum + v)
-    }
-  }
-  let result = f(equation.body)
-  [With ]
-  vars
-    .pairs()
-    .map(p => $#p.first() = #p.last()$)
-    .join(", ", last: " and ")
-  [ we have:]
-  $ equation = result $
-}
-
-#compute($x y + y^2$, x: 2, y: 3)
diff --git a/test/typ/compiler/dict-00.out b/test/typ/compiler/dict-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/dict-00.out
@@ -0,0 +1,102 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/dict-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/dict-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/dict-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, SoftBreak
+, Comment
+, Code "typ/compiler/dict-00.typ" ( line 5 , column 2 ) (Dict [])
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/dict-00.typ"
+    ( line 8 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "dict")))
+       (Dict
+          [ Reg ( Ident (Identifier "normal") , Literal (Int 1) )
+          , Reg ( Literal (String "spacy key") , Literal (Int 2) )
+          ]))
+, SoftBreak
+, Code
+    "typ/compiler/dict-00.typ"
+    ( line 9 , column 2 )
+    (Ident (Identifier "dict"))
+, ParBreak
+, Code
+    "typ/compiler/dict-00.typ"
+    ( line 11 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FieldAccess
+              (Ident (Identifier "normal")) (Ident (Identifier "dict")))
+       , NormalArg (Literal (Int 1))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/dict-00.typ"
+    ( line 12 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess (Ident (Identifier "at")) (Ident (Identifier "dict")))
+              [ NormalArg (Literal (String "spacy key")) ])
+       , NormalArg (Literal (Int 2))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [()]), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 text(body: [(normal: 1, spacy key: 2)]), 
+                 parbreak(), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/dict-01.out b/test/typ/compiler/dict-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/dict-01.out
@@ -0,0 +1,130 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/dict-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/dict-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/dict-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/dict-01.typ"
+    ( line 3 , column 2 )
+    (Block
+       (CodeBlock
+          [ Let
+              (BasicBind (Just (Identifier "dict")))
+              (Dict
+                 [ Reg ( Ident (Identifier "a") , Literal (Int 1) )
+                 , Reg ( Literal (String "b b") , Literal (Int 1) )
+                 ])
+          , Assign
+              (FuncCall
+                 (FieldAccess (Ident (Identifier "at")) (Ident (Identifier "dict")))
+                 [ NormalArg (Literal (String "b b")) ])
+              (Plus
+                 (FuncCall
+                    (FieldAccess (Ident (Identifier "at")) (Ident (Identifier "dict")))
+                    [ NormalArg (Literal (String "b b")) ])
+                 (Literal (Int 1)))
+          , Assign
+              (FieldAccess
+                 (Ident (Identifier "state")) (Ident (Identifier "dict")))
+              (Dict
+                 [ Reg ( Ident (Identifier "ok") , Literal (Boolean True) )
+                 , Reg ( Ident (Identifier "err") , Literal (Boolean False) )
+                 ])
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg (Ident (Identifier "dict"))
+              , NormalArg
+                  (Dict
+                     [ Reg ( Ident (Identifier "a") , Literal (Int 1) )
+                     , Reg ( Literal (String "b b") , Literal (Int 2) )
+                     , Reg
+                         ( Ident (Identifier "state")
+                         , Dict
+                             [ Reg ( Ident (Identifier "ok") , Literal (Boolean True) )
+                             , Reg ( Ident (Identifier "err") , Literal (Boolean False) )
+                             ]
+                         )
+                     ])
+              ]
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg
+                  (FieldAccess
+                     (Ident (Identifier "ok"))
+                     (FieldAccess
+                        (Ident (Identifier "state")) (Ident (Identifier "dict"))))
+              , NormalArg (Literal (Boolean True))
+              ]
+          , Assign
+              (FieldAccess
+                 (Ident (Identifier "ok"))
+                 (FuncCall
+                    (FieldAccess (Ident (Identifier "at")) (Ident (Identifier "dict")))
+                    [ NormalArg (Literal (String "state")) ]))
+              (Literal (Boolean False))
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg
+                  (FieldAccess
+                     (Ident (Identifier "ok"))
+                     (FieldAccess
+                        (Ident (Identifier "state")) (Ident (Identifier "dict"))))
+              , NormalArg (Literal (Boolean False))
+              ]
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg
+                  (FieldAccess
+                     (Ident (Identifier "err"))
+                     (FieldAccess
+                        (Ident (Identifier "state")) (Ident (Identifier "dict"))))
+              , NormalArg (Literal (Boolean False))
+              ]
+          ]))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/dict-02.out b/test/typ/compiler/dict-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/dict-02.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/dict-03.out b/test/typ/compiler/dict-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/dict-03.out
@@ -0,0 +1,89 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/dict-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/dict-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/dict-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/dict-03.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "at"))
+                 (Dict
+                    [ Reg ( Ident (Identifier "a") , Literal (Int 1) )
+                    , Reg ( Ident (Identifier "b") , Literal (Int 2) )
+                    ]))
+              [ NormalArg (Literal (String "b"))
+              , KeyValArg (Identifier "default") (Literal (Int 3))
+              ])
+       , NormalArg (Literal (Int 2))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/dict-03.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "at"))
+                 (Dict
+                    [ Reg ( Ident (Identifier "a") , Literal (Int 1) )
+                    , Reg ( Ident (Identifier "b") , Literal (Int 2) )
+                    ]))
+              [ NormalArg (Literal (String "c"))
+              , KeyValArg (Identifier "default") (Literal (Int 3))
+              ])
+       , NormalArg (Literal (Int 3))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/dict-04.out b/test/typ/compiler/dict-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/dict-04.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/dict-05.out b/test/typ/compiler/dict-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/dict-05.out
@@ -0,0 +1,186 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/dict-05.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/dict-05.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/dict-05.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/dict-05.typ"
+    ( line 3 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "dict")))
+       (Dict
+          [ Reg ( Ident (Identifier "a") , Literal (Int 3) )
+          , Reg ( Ident (Identifier "c") , Literal (Int 2) )
+          , Reg ( Ident (Identifier "b") , Literal (Int 1) )
+          ]))
+, SoftBreak
+, Code
+    "typ/compiler/dict-05.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (InCollection (Literal (String "c")) (Ident (Identifier "dict")))
+       , NormalArg (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/dict-05.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "len")) (Ident (Identifier "dict")))
+              [])
+       , NormalArg (Literal (Int 3))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/dict-05.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "values")) (Ident (Identifier "dict")))
+              [])
+       , NormalArg
+           (Array
+              [ Reg (Literal (Int 3))
+              , Reg (Literal (Int 2))
+              , Reg (Literal (Int 1))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/dict-05.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "join"))
+                 (FuncCall
+                    (FieldAccess
+                       (Ident (Identifier "map"))
+                       (FuncCall
+                          (FieldAccess
+                             (Ident (Identifier "pairs")) (Ident (Identifier "dict")))
+                          []))
+                    [ NormalArg
+                        (FuncExpr
+                           [ NormalParam (Identifier "p") ]
+                           (Plus
+                              (FuncCall
+                                 (FieldAccess (Ident (Identifier "first")) (Ident (Identifier "p")))
+                                 [])
+                              (FuncCall
+                                 (Ident (Identifier "str"))
+                                 [ NormalArg
+                                     (FuncCall
+                                        (FieldAccess
+                                           (Ident (Identifier "last")) (Ident (Identifier "p")))
+                                        [])
+                                 ])))
+                    ]))
+              [])
+       , NormalArg (Literal (String "a3c2b1"))
+       ])
+, ParBreak
+, Code
+    "typ/compiler/dict-05.typ"
+    ( line 9 , column 2 )
+    (FuncCall
+       (FieldAccess
+          (Ident (Identifier "remove")) (Ident (Identifier "dict")))
+       [ NormalArg (Literal (String "c")) ])
+, SoftBreak
+, Code
+    "typ/compiler/dict-05.typ"
+    ( line 10 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (InCollection (Literal (String "c")) (Ident (Identifier "dict")))
+       , NormalArg (Literal (Boolean False))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/dict-05.typ"
+    ( line 11 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "dict"))
+       , NormalArg
+           (Dict
+              [ Reg ( Ident (Identifier "a") , Literal (Int 3) )
+              , Reg ( Ident (Identifier "b") , Literal (Int 1) )
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak(), 
+                 text(body: [2]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/dict-06.out b/test/typ/compiler/dict-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/dict-06.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/dict-07.out b/test/typ/compiler/dict-07.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/dict-07.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/dict-08.out b/test/typ/compiler/dict-08.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/dict-08.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/dict-09.out b/test/typ/compiler/dict-09.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/dict-09.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/dict-10.out b/test/typ/compiler/dict-10.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/dict-10.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/field-00.out b/test/typ/compiler/field-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/field-00.out
@@ -0,0 +1,90 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/field-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/field-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/field-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/field-00.typ"
+    ( line 3 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "dict")))
+       (Dict
+          [ Reg ( Ident (Identifier "nothing") , Literal (String "ness") )
+          , Reg ( Ident (Identifier "hello") , Literal (String "world") )
+          ]))
+, SoftBreak
+, Code
+    "typ/compiler/field-00.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FieldAccess
+              (Ident (Identifier "nothing")) (Ident (Identifier "dict")))
+       , NormalArg (Literal (String "ness"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/field-00.typ"
+    ( line 5 , column 2 )
+    (Block
+       (CodeBlock
+          [ Let
+              (BasicBind (Just (Identifier "world")))
+              (FieldAccess
+                 (Ident (Identifier "hello")) (Ident (Identifier "dict")))
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg (Ident (Identifier "world"))
+              , NormalArg (Literal (String "world"))
+              ]
+          ]))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/field-01.out b/test/typ/compiler/field-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/field-01.out
@@ -0,0 +1,75 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/field-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/field-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/field-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/field-01.typ"
+    ( line 3 , column 2 )
+    (Show
+       (Just (Ident (Identifier "list")))
+       (FuncExpr
+          [ NormalParam (Identifier "it") ]
+          (Block
+             (CodeBlock
+                [ FuncCall
+                    (Ident (Identifier "test"))
+                    [ NormalArg
+                        (FuncCall
+                           (FieldAccess
+                              (Ident (Identifier "len"))
+                              (FieldAccess
+                                 (Ident (Identifier "children")) (Ident (Identifier "it"))))
+                           [])
+                    , NormalArg (Literal (Int 3))
+                    ]
+                ]))))
+, ParBreak
+, BulletListItem [ Text "A" ]
+, SoftBreak
+, BulletListItem [ Text "B" ]
+, SoftBreak
+, BulletListItem [ Text "C" , ParBreak ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [✅]) })
diff --git a/test/typ/compiler/field-02.out b/test/typ/compiler/field-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/field-02.out
@@ -0,0 +1,69 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/field-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/field-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/field-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/field-02.typ"
+    ( line 3 , column 2 )
+    (FieldAccess
+       (Ident (Identifier "item")) (Ident (Identifier "enum")))
+, SoftBreak
+, Code
+    "typ/compiler/field-02.typ"
+    ( line 4 , column 2 )
+    (FieldAccess
+       (Ident (Identifier "eq")) (Ident (Identifier "assert")))
+, SoftBreak
+, Code
+    "typ/compiler/field-02.typ"
+    ( line 5 , column 2 )
+    (FieldAccess
+       (Ident (Identifier "ne")) (Ident (Identifier "assert")))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak() })
diff --git a/test/typ/compiler/field-03.out b/test/typ/compiler/field-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/field-03.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/field-04.out b/test/typ/compiler/field-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/field-04.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/field-05.out b/test/typ/compiler/field-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/field-05.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/field-06.out b/test/typ/compiler/field-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/field-06.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/field-07.out b/test/typ/compiler/field-07.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/field-07.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/field-08.out b/test/typ/compiler/field-08.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/field-08.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/field-09.out b/test/typ/compiler/field-09.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/field-09.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/field-10.out b/test/typ/compiler/field-10.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/field-10.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/for-00.out b/test/typ/compiler/for-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/for-00.out
@@ -0,0 +1,302 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/for-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/for-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/for-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/for-00.typ"
+    ( line 5 , column 2 )
+    (For
+       (BasicBind (Just (Identifier "x")))
+       (Array [])
+       (Block (Content [ Text "Nope" ])))
+, ParBreak
+, Comment
+, Comment
+, Code
+    "typ/compiler/for-00.typ"
+    ( line 9 , column 2 )
+    (For
+       (DestructuringBind
+          [ Simple (Just (Identifier "k"))
+          , Simple (Just (Identifier "v"))
+          ])
+       (Dict
+          [ Reg ( Ident (Identifier "Name") , Literal (String "Typst") )
+          , Reg ( Ident (Identifier "Age") , Literal (Int 2) )
+          ])
+       (Block
+          (Content
+             [ SoftBreak
+             , Code
+                 "typ/compiler/for-00.typ"
+                 ( line 10 , column 4 )
+                 (Ident (Identifier "k"))
+             , Text ":"
+             , Space
+             , Code
+                 "typ/compiler/for-00.typ"
+                 ( line 10 , column 8 )
+                 (Ident (Identifier "v"))
+             , Text "."
+             , ParBreak
+             ])))
+, ParBreak
+, Comment
+, Comment
+, Code
+    "typ/compiler/for-00.typ"
+    ( line 15 , column 2 )
+    (Block
+       (CodeBlock
+          [ Literal (String "[")
+          , For
+              (BasicBind (Just (Identifier "v")))
+              (Array
+                 [ Reg (Literal (Int 1))
+                 , Reg (Literal (Int 2))
+                 , Reg (Literal (Int 3))
+                 , Reg (Literal (Int 4))
+                 ])
+              (Block
+                 (CodeBlock
+                    [ If
+                        [ ( GreaterThan (Ident (Identifier "v")) (Literal (Int 1))
+                          , Block (Content [ Text "," , Space ])
+                          )
+                        ]
+                    , Block
+                        (Content
+                           [ Code
+                               "typ/compiler/for-00.typ"
+                               ( line 19 , column 7 )
+                               (Ident (Identifier "v"))
+                           ])
+                    , If
+                        [ ( Equals (Ident (Identifier "v")) (Literal (Int 1))
+                          , Block (Content [ Text "st" ])
+                          )
+                        ]
+                    , If
+                        [ ( Equals (Ident (Identifier "v")) (Literal (Int 2))
+                          , Block (Content [ Text "nd" ])
+                          )
+                        ]
+                    , If
+                        [ ( Equals (Ident (Identifier "v")) (Literal (Int 3))
+                          , Block (Content [ Text "rd" ])
+                          )
+                        ]
+                    , If
+                        [ ( GreaterThanOrEqual (Ident (Identifier "v")) (Literal (Int 4))
+                          , Block (Content [ Text "th" ])
+                          )
+                        ]
+                    ]))
+          , Literal (String "]")
+          ]))
+, ParBreak
+, Comment
+, Comment
+, Code
+    "typ/compiler/for-00.typ"
+    ( line 30 , column 2 )
+    (For
+       (BasicBind (Just (Identifier "v")))
+       (Array
+          [ Reg (Literal (Int 1))
+          , Reg (Literal (Int 2))
+          , Reg (Literal (Int 3))
+          , Reg (Literal (Int 4))
+          , Reg (Literal (Int 5))
+          , Reg (Literal (Int 6))
+          , Reg (Literal (Int 7))
+          ])
+       (Block
+          (Content
+             [ Code
+                 "typ/compiler/for-00.typ"
+                 ( line 30 , column 35 )
+                 (If
+                    [ ( And
+                          (GreaterThanOrEqual (Ident (Identifier "v")) (Literal (Int 2)))
+                          (LessThanOrEqual (Ident (Identifier "v")) (Literal (Int 5)))
+                      , Block
+                          (CodeBlock
+                             [ FuncCall
+                                 (Ident (Identifier "repr")) [ NormalArg (Ident (Identifier "v")) ]
+                             ])
+                      )
+                    ])
+             ])))
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/for-00.typ"
+    ( line 33 , column 2 )
+    (LetFunc
+       (Identifier "f1")
+       [ SinkParam (Just (Identifier "args")) ]
+       (FuncCall
+          (FieldAccess
+             (Ident (Identifier "map"))
+             (FuncCall
+                (FieldAccess
+                   (Ident (Identifier "pos")) (Ident (Identifier "args")))
+                []))
+          [ NormalArg (Ident (Identifier "repr")) ]))
+, SoftBreak
+, Code
+    "typ/compiler/for-00.typ"
+    ( line 34 , column 2 )
+    (LetFunc
+       (Identifier "f2")
+       [ SinkParam (Just (Identifier "args")) ]
+       (FuncCall
+          (FieldAccess
+             (Ident (Identifier "map"))
+             (FuncCall
+                (FieldAccess
+                   (Ident (Identifier "pairs"))
+                   (FuncCall
+                      (FieldAccess
+                         (Ident (Identifier "named")) (Ident (Identifier "args")))
+                      []))
+                []))
+          [ NormalArg
+              (FuncExpr
+                 [ NormalParam (Identifier "p") ]
+                 (Plus
+                    (Plus
+                       (FuncCall
+                          (Ident (Identifier "repr"))
+                          [ NormalArg
+                              (FuncCall
+                                 (FieldAccess (Ident (Identifier "first")) (Ident (Identifier "p")))
+                                 [])
+                          ])
+                       (Literal (String ": ")))
+                    (FuncCall
+                       (Ident (Identifier "repr"))
+                       [ NormalArg
+                           (FuncCall
+                              (FieldAccess (Ident (Identifier "last")) (Ident (Identifier "p")))
+                              [])
+                       ])))
+          ]))
+, SoftBreak
+, Code
+    "typ/compiler/for-00.typ"
+    ( line 35 , column 2 )
+    (LetFunc
+       (Identifier "f")
+       [ SinkParam (Just (Identifier "args")) ]
+       (FuncCall
+          (FieldAccess
+             (Ident (Identifier "join"))
+             (Plus
+                (FuncCall
+                   (Ident (Identifier "f1"))
+                   [ SpreadArg (Ident (Identifier "args")) ])
+                (FuncCall
+                   (Ident (Identifier "f2"))
+                   [ SpreadArg (Ident (Identifier "args")) ])))
+          [ NormalArg (Literal (String ", ")) ]))
+, SoftBreak
+, Code
+    "typ/compiler/for-00.typ"
+    ( line 36 , column 2 )
+    (FuncCall
+       (Ident (Identifier "f"))
+       [ NormalArg (Literal (Int 1))
+       , KeyValArg (Identifier "a") (Literal (Int 2))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 text(body: [Name]), 
+                 text(body: [: ]), 
+                 text(body: [Typst]), 
+                 text(body: [.]), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 text(body: [Age]), 
+                 text(body: [: ]), 
+                 text(body: [2]), 
+                 text(body: [.]), 
+                 parbreak(), 
+                 parbreak(), 
+                 text(body: [[]), 
+                 text(body: [1]), 
+                 text(body: [st]), 
+                 text(body: [, ]), 
+                 text(body: [2]), 
+                 text(body: [nd]), 
+                 text(body: [, ]), 
+                 text(body: [3]), 
+                 text(body: [rd]), 
+                 text(body: [, ]), 
+                 text(body: [4]), 
+                 text(body: [th]), 
+                 text(body: []]), 
+                 parbreak(), 
+                 text(body: [2]), 
+                 text(body: [3]), 
+                 text(body: [4]), 
+                 text(body: [5]), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [1, "a": 2]), 
+                 parbreak() })
diff --git a/test/typ/compiler/for-01.out b/test/typ/compiler/for-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/for-01.out
@@ -0,0 +1,260 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/for-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/for-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/for-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/compiler/for-01.typ"
+    ( line 2 , column 2 )
+    (Let (BasicBind (Just (Identifier "out"))) (Array []))
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/for-01.typ"
+    ( line 5 , column 2 )
+    (For
+       (BasicBind (Just (Identifier "v")))
+       (Array
+          [ Reg (Literal (Int 1))
+          , Reg (Literal (Int 2))
+          , Reg (Literal (Int 3))
+          ])
+       (Block
+          (CodeBlock
+             [ Assign
+                 (Ident (Identifier "out"))
+                 (Plus
+                    (Ident (Identifier "out"))
+                    (Array [ Reg (Ident (Identifier "v")) ]))
+             ])))
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/for-01.typ"
+    ( line 10 , column 2 )
+    (For
+       (DestructuringBind
+          [ Simple (Just (Identifier "i"))
+          , Simple (Just (Identifier "v"))
+          ])
+       (FuncCall
+          (FieldAccess
+             (Ident (Identifier "enumerate"))
+             (Array
+                [ Reg (Literal (String "1"))
+                , Reg (Literal (String "2"))
+                , Reg (Literal (String "3"))
+                ]))
+          [])
+       (Block
+          (CodeBlock
+             [ FuncCall
+                 (Ident (Identifier "test"))
+                 [ NormalArg
+                     (FuncCall
+                        (Ident (Identifier "repr"))
+                        [ NormalArg (Plus (Ident (Identifier "i")) (Literal (Int 1))) ])
+                 , NormalArg (Ident (Identifier "v"))
+                 ]
+             ])))
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/for-01.typ"
+    ( line 15 , column 2 )
+    (For
+       (BasicBind (Just (Identifier "v")))
+       (Dict
+          [ Reg ( Ident (Identifier "a") , Literal (Int 4) )
+          , Reg ( Ident (Identifier "b") , Literal (Int 5) )
+          ])
+       (Block
+          (CodeBlock
+             [ Assign
+                 (Ident (Identifier "out"))
+                 (Plus
+                    (Ident (Identifier "out"))
+                    (Array [ Reg (Ident (Identifier "v")) ]))
+             ])))
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/for-01.typ"
+    ( line 20 , column 2 )
+    (For
+       (DestructuringBind
+          [ Simple (Just (Identifier "k"))
+          , Simple (Just (Identifier "v"))
+          ])
+       (Dict
+          [ Reg ( Ident (Identifier "a") , Literal (Int 6) )
+          , Reg ( Ident (Identifier "b") , Literal (Int 7) )
+          ])
+       (Block
+          (CodeBlock
+             [ Assign
+                 (Ident (Identifier "out"))
+                 (Plus
+                    (Ident (Identifier "out"))
+                    (Array [ Reg (Ident (Identifier "k")) ]))
+             , Assign
+                 (Ident (Identifier "out"))
+                 (Plus
+                    (Ident (Identifier "out"))
+                    (Array [ Reg (Ident (Identifier "v")) ]))
+             ])))
+, ParBreak
+, Code
+    "typ/compiler/for-01.typ"
+    ( line 25 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "out"))
+       , NormalArg
+           (Array
+              [ Reg (Literal (Int 1))
+              , Reg (Literal (Int 2))
+              , Reg (Literal (Int 3))
+              , Reg
+                  (Array [ Reg (Literal (String "a")) , Reg (Literal (Int 4)) ])
+              , Reg
+                  (Array [ Reg (Literal (String "b")) , Reg (Literal (Int 5)) ])
+              , Reg (Literal (String "a"))
+              , Reg (Literal (Int 6))
+              , Reg (Literal (String "b"))
+              , Reg (Literal (Int 7))
+              ])
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/for-01.typ"
+    ( line 28 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "first"))) (Literal (Boolean True)))
+, SoftBreak
+, Code
+    "typ/compiler/for-01.typ"
+    ( line 29 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "joined")))
+       (For
+          (BasicBind (Just (Identifier "c")))
+          (Literal (String "abc\128105\8205\128105\8205\128102\8205\128102"))
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Not (Ident (Identifier "first"))
+                      , Block (CodeBlock [ Literal (String ", ") ])
+                      )
+                    ]
+                , Assign (Ident (Identifier "first")) (Literal (Boolean False))
+                , Ident (Identifier "c")
+                ]))))
+, ParBreak
+, Code
+    "typ/compiler/for-01.typ"
+    ( line 35 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "joined"))
+       , NormalArg
+           (Literal
+              (String "a, b, c, \128105\8205\128105\8205\128102\8205\128102"))
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/for-01.typ"
+    ( line 38 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (For
+              (BasicBind (Just (Identifier "v")))
+              (Literal (String ""))
+              (Block (Content [])))
+       , NormalArg (Literal None)
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/for-01.typ"
+    ( line 39 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "type"))
+              [ NormalArg
+                  (For
+                     (BasicBind (Just (Identifier "v")))
+                     (Literal (String "1"))
+                     (Block (Content [])))
+              ])
+       , NormalArg (Literal (String "content"))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 parbreak(), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 parbreak(), 
+                 parbreak(), 
+                 parbreak(), 
+                 text(body: [✅]), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [❌(]), 
+                 text(body: ["a, b, c, 👩, ‍, 👩, ‍, 👦, ‍, 👦"]), 
+                 text(body: [ /= ]), 
+                 text(body: ["a, b, c, 👩‍👩‍👦‍👦"]), 
+                 text(body: [)]), 
+                 parbreak(), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/for-02.out b/test/typ/compiler/for-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/for-02.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/for-03.out b/test/typ/compiler/for-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/for-03.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/for-04.out b/test/typ/compiler/for-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/for-04.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/highlight-00.out b/test/typ/compiler/highlight-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/highlight-00.out
@@ -0,0 +1,61 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/highlight-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/highlight-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/highlight-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/compiler/highlight-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal Auto) ])
+, ParBreak
+, RawBlock
+    "typ"
+    "#set hello()\n#set hello()\n#set hello.world()\n#set hello.my.world()\n#let foo(x) = x * 2\n#show heading: func\n#show module.func: func\n#show module.func: it => {}\n#foo(ident: ident)\n#hello\n#hello()\n#box[]\n#hello.world\n#hello.world()\n#hello().world()\n#hello.my.world\n#hello.my.world()\n#hello.my().world\n#hello.my().world()\n#{ hello }\n#{ hello() }\n#{ hello.world() }\n$ hello $\n$ hello() $\n$ box[] $\n$ hello.world $\n$ hello.world() $\n$ hello.my.world() $\n$ f_zeta(x), f_zeta(x)/1 $\n$ emph(hello.my.world()) $\n$ emph(hello.my().world) $\n$ emph(hello.my().world()) $\n$ #hello $\n$ #hello() $\n$ #hello.world $\n$ #hello.world() $\n$ #box[] $\n#if foo []\n"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 raw(block: true, 
+                     lang: "typ", 
+                     text: "#set hello()\n#set hello()\n#set hello.world()\n#set hello.my.world()\n#let foo(x) = x * 2\n#show heading: func\n#show module.func: func\n#show module.func: it => {}\n#foo(ident: ident)\n#hello\n#hello()\n#box[]\n#hello.world\n#hello.world()\n#hello().world()\n#hello.my.world\n#hello.my.world()\n#hello.my().world\n#hello.my().world()\n#{ hello }\n#{ hello() }\n#{ hello.world() }\n$ hello $\n$ hello() $\n$ box[] $\n$ hello.world $\n$ hello.world() $\n$ hello.my.world() $\n$ f_zeta(x), f_zeta(x)/1 $\n$ emph(hello.my.world()) $\n$ emph(hello.my().world) $\n$ emph(hello.my().world()) $\n$ #hello $\n$ #hello() $\n$ #hello.world $\n$ #hello.world() $\n$ #box[] $\n#if foo []\n"), 
+                 parbreak() })
diff --git a/test/typ/compiler/hint-00.out b/test/typ/compiler/hint-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/hint-00.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/hint-01.out b/test/typ/compiler/hint-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/hint-01.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/hint-02.out b/test/typ/compiler/hint-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/hint-02.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/if-00.out b/test/typ/compiler/if-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/if-00.out
@@ -0,0 +1,82 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/if-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/if-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/if-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/if-00.typ"
+    ( line 3 , column 2 )
+    (If
+       [ ( LessThan (Literal (Int 1)) (Literal (Int 2))
+         , Block (Content [ SoftBreak , Text "One" , Text "." , ParBreak ])
+         )
+       ])
+, ParBreak
+, Code
+    "typ/compiler/if-00.typ"
+    ( line 7 , column 2 )
+    (If
+       [ ( Equals (Literal (Boolean True)) (Literal (Boolean False))
+         , Block
+             (Content
+                [ SoftBreak
+                , Text "{Bad},"
+                , Space
+                , Text "but"
+                , Space
+                , Text "we"
+                , Space
+                , Text "{dont"
+                , Text "-"
+                , Text "care}!"
+                , ParBreak
+                ])
+         )
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+One.]), 
+                 parbreak(), 
+                 parbreak(), 
+                 parbreak() })
diff --git a/test/typ/compiler/if-01.out b/test/typ/compiler/if-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/if-01.out
@@ -0,0 +1,163 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/if-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/if-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/if-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/if-01.typ"
+    ( line 3 , column 2 )
+    (If
+       [ ( Block (CodeBlock [ Literal (Boolean True) ])
+         , Block (Content [ SoftBreak , Text "One" , Text "." , ParBreak ])
+         )
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/if-01.typ"
+    ( line 8 , column 2 )
+    (If
+       [ ( Not (Equals (Block (Content [])) (Literal None))
+         , Block (Content [ SoftBreak , Text "Two" , Text "." , ParBreak ])
+         )
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/if-01.typ"
+    ( line 13 , column 2 )
+    (If
+       [ ( Equals
+             (Plus (Literal (Int 1)) (Literal (Int 1))) (Literal (Int 1))
+         , Block (Content [ SoftBreak , Text "Nope" , Text "." , ParBreak ])
+         )
+       , ( Literal (Boolean True)
+         , Block (CodeBlock [ Literal (String "Three.") ])
+         )
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/if-01.typ"
+    ( line 23 , column 2 )
+    (If
+       [ ( Literal (Boolean False)
+         , Block (Content [ SoftBreak , Text "Bad" , Text "." , ParBreak ])
+         )
+       , ( Literal (Boolean True)
+         , Block
+             (CodeBlock
+                [ Let
+                    (BasicBind (Just (Identifier "point"))) (Literal (String "."))
+                , Plus (Literal (String "Four")) (Ident (Identifier "point"))
+                ])
+         )
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/if-01.typ"
+    ( line 31 , column 2 )
+    (Block
+       (CodeBlock
+          [ If
+              [ ( Equals
+                    (Literal (String "content"))
+                    (FuncCall (Ident (Identifier "type")) [ BlockArg [ Text "b" ] ])
+                , Block (Content [ Text "Fi" ])
+                )
+              , ( Literal (Boolean True) , Block (Content [ Text "Nope" ]) )
+              ]
+          , If
+              [ ( Equals (Literal (String "content")) (Ident (Identifier "type"))
+                , Block (Content [ Text "Nope" ])
+                )
+              , ( Literal (Boolean True)
+                , Block (Content [ Text "ve" , Text "." ])
+                )
+              ]
+          ]))
+, ParBreak
+, Code
+    "typ/compiler/if-01.typ"
+    ( line 36 , column 2 )
+    (Let (BasicBind (Just (Identifier "i"))) (Literal (Int 3)))
+, SoftBreak
+, Code
+    "typ/compiler/if-01.typ"
+    ( line 37 , column 2 )
+    (If
+       [ ( LessThan (Ident (Identifier "i")) (Literal (Int 2))
+         , Block (Content [ SoftBreak , Text "Five" , Text "." , ParBreak ])
+         )
+       , ( LessThan (Ident (Identifier "i")) (Literal (Int 4))
+         , Block (Content [ SoftBreak , Text "Six" , Text "." , ParBreak ])
+         )
+       , ( Literal (Boolean True)
+         , Block
+             (Content [ SoftBreak , Text "Seven" , Text "." , ParBreak ])
+         )
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+One.]), 
+                 parbreak(), 
+                 parbreak(), 
+                 text(body: [
+Two.]), 
+                 parbreak(), 
+                 parbreak(), 
+                 text(body: [Three.]), 
+                 parbreak(), 
+                 text(body: [Four.]), 
+                 parbreak(), 
+                 text(body: [Fi]), 
+                 text(body: [ve.]), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 text(body: [
+Six.]), 
+                 parbreak(), 
+                 parbreak() })
diff --git a/test/typ/compiler/if-02.out b/test/typ/compiler/if-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/if-02.out
@@ -0,0 +1,146 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/if-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/if-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/if-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, SoftBreak
+, Code
+    "typ/compiler/if-02.typ"
+    ( line 5 , column 2 )
+    (LetFunc
+       (Identifier "nth")
+       [ NormalParam (Identifier "n") ]
+       (Block
+          (CodeBlock
+             [ FuncCall
+                 (Ident (Identifier "str")) [ NormalArg (Ident (Identifier "n")) ]
+             , If
+                 [ ( Equals (Ident (Identifier "n")) (Literal (Int 1))
+                   , Block (CodeBlock [ Literal (String "st") ])
+                   )
+                 , ( Equals (Ident (Identifier "n")) (Literal (Int 2))
+                   , Block (CodeBlock [ Literal (String "nd") ])
+                   )
+                 , ( Equals (Ident (Identifier "n")) (Literal (Int 3))
+                   , Block (CodeBlock [ Literal (String "rd") ])
+                   )
+                 , ( Literal (Boolean True)
+                   , Block (CodeBlock [ Literal (String "th") ])
+                   )
+                 ]
+             ])))
+, ParBreak
+, Code
+    "typ/compiler/if-02.typ"
+    ( line 13 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "nth")) [ NormalArg (Literal (Int 1)) ])
+       , NormalArg (Literal (String "1st"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/if-02.typ"
+    ( line 14 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "nth")) [ NormalArg (Literal (Int 2)) ])
+       , NormalArg (Literal (String "2nd"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/if-02.typ"
+    ( line 15 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "nth")) [ NormalArg (Literal (Int 3)) ])
+       , NormalArg (Literal (String "3rd"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/if-02.typ"
+    ( line 16 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "nth")) [ NormalArg (Literal (Int 4)) ])
+       , NormalArg (Literal (String "4th"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/if-02.typ"
+    ( line 17 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "nth")) [ NormalArg (Literal (Int 5)) ])
+       , NormalArg (Literal (String "5th"))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/if-03.out b/test/typ/compiler/if-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/if-03.out
@@ -0,0 +1,101 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/if-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/if-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/if-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, SoftBreak
+, Code
+    "typ/compiler/if-03.typ"
+    ( line 5 , column 2 )
+    (Block
+       (CodeBlock
+          [ Let (BasicBind (Just (Identifier "x"))) (Literal (Int 1))
+          , Let (BasicBind (Just (Identifier "y"))) (Literal (Int 2))
+          , Let (BasicBind (Just (Identifier "z"))) (Literal None)
+          , Assign
+              (Ident (Identifier "z"))
+              (If
+                 [ ( LessThan (Ident (Identifier "x")) (Ident (Identifier "y"))
+                   , Block (CodeBlock [ Literal (String "ok") ])
+                   )
+                 ])
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg (Ident (Identifier "z"))
+              , NormalArg (Literal (String "ok"))
+              ]
+          , Assign
+              (Ident (Identifier "z"))
+              (If
+                 [ ( GreaterThan (Ident (Identifier "x")) (Ident (Identifier "y"))
+                   , Block (CodeBlock [ Literal (String "bad") ])
+                   )
+                 , ( Literal (Boolean True)
+                   , Block (CodeBlock [ Literal (String "ok") ])
+                   )
+                 ])
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg (Ident (Identifier "z"))
+              , NormalArg (Literal (String "ok"))
+              ]
+          , Assign
+              (Ident (Identifier "z"))
+              (If
+                 [ ( GreaterThan (Ident (Identifier "x")) (Ident (Identifier "y"))
+                   , Block (CodeBlock [ Literal (String "bad") ])
+                   )
+                 ])
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg (Ident (Identifier "z")) , NormalArg (Literal None) ]
+          ]))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/if-04.out b/test/typ/compiler/if-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/if-04.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/if-05.out b/test/typ/compiler/if-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/if-05.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/if-06.out b/test/typ/compiler/if-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/if-06.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/import-00.out b/test/typ/compiler/import-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/import-00.out
@@ -0,0 +1,106 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/import-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/import-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/import-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/import-00.typ"
+    ( line 6 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "value")))
+       (Block (Content [ Text "foo" ])))
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/import-00.typ"
+    ( line 9 , column 2 )
+    (Import
+       (Literal (String "module.typ"))
+       (SomeIdentifiers
+          [ ( Identifier "fn" , Nothing )
+          , ( Identifier "value" , Nothing )
+          ]))
+, SoftBreak
+, Code
+    "typ/compiler/import-00.typ"
+    ( line 10 , column 2 )
+    (FuncCall
+       (Ident (Identifier "fn"))
+       [ BlockArg
+           [ Text "Like" , Space , Text "and" , Space , Text "Subscribe!" ]
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/import-00.typ"
+    ( line 11 , column 2 )
+    (Ident (Identifier "value"))
+, ParBreak
+, Comment
+, Comment
+, Code
+    "typ/compiler/import-00.typ"
+    ( line 15 , column 2 )
+    (Import
+       (Literal (String "module.typ"))
+       (SomeIdentifiers
+          [ ( Identifier "a" , Nothing ) , ( Identifier "c" , Nothing ) ]))
+, Text "bye"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 rect(body: text(body: [Like and Subscribe!]), 
+                      fill: rgb(18%,80%,25%,100%), 
+                      inset: 5.0pt), 
+                 text(body: [
+]), 
+                 text(body: [hi]), 
+                 parbreak(), 
+                 text(body: [bye]), 
+                 parbreak() })
diff --git a/test/typ/compiler/import-01.out b/test/typ/compiler/import-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/import-01.out
@@ -0,0 +1,115 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/import-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/import-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/import-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/import-01.typ"
+    ( line 3 , column 2 )
+    (Import
+       (Literal (String "module.typ"))
+       (SomeIdentifiers [ ( Identifier "item" , Nothing ) ]))
+, SoftBreak
+, Code
+    "typ/compiler/import-01.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "item"))
+              [ NormalArg (Literal (Int 1)) , NormalArg (Literal (Int 2)) ])
+       , NormalArg (Literal (Int 3))
+       ])
+, ParBreak
+, Comment
+, Text "{"
+, SoftBreak
+, Text "import"
+, Space
+, Quote '"'
+, Text "module"
+, Text "."
+, Text "typ"
+, Quote '"'
+, Text ":"
+, Space
+, Text "b"
+, SoftBreak
+, Text "test"
+, Text "("
+, Text "b,"
+, Space
+, Text "1)"
+, SoftBreak
+, Text "}"
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/import-01.typ"
+    ( line 13 , column 2 )
+    (Import (Literal (String "module.typ")) AllIdentifiers)
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/import-01.typ"
+    ( line 16 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "d"))
+       , NormalArg (Literal (Int 3))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak(), 
+                 text(body: [{
+import “module.typ”: b
+test(b, 1)
+}]), 
+                 parbreak(), 
+                 parbreak(), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/import-02.out b/test/typ/compiler/import-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/import-02.out
@@ -0,0 +1,108 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/import-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/import-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/import-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, SoftBreak
+, Code
+    "typ/compiler/import-02.typ"
+    ( line 5 , column 2 )
+    (Import
+       (Ident (Identifier "enum"))
+       (SomeIdentifiers [ ( Identifier "item" , Nothing ) ]))
+, SoftBreak
+, Code
+    "typ/compiler/import-02.typ"
+    ( line 6 , column 2 )
+    (Import
+       (FuncCall
+          (FieldAccess
+             (Ident (Identifier "with")) (Ident (Identifier "assert")))
+          [ NormalArg (Literal (Boolean True)) ])
+       AllIdentifiers)
+, ParBreak
+, Code
+    "typ/compiler/import-02.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "enum"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "item"))
+              [ NormalArg (Literal (Int 1)) , BlockArg [ Text "First" ] ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "item"))
+              [ NormalArg (Literal (Int 5)) , BlockArg [ Text "Fifth" ] ])
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/import-02.typ"
+    ( line 12 , column 2 )
+    (FuncCall
+       (Ident (Identifier "eq"))
+       [ NormalArg (Literal (Int 10)) , NormalArg (Literal (Int 10)) ])
+, SoftBreak
+, Code
+    "typ/compiler/import-02.typ"
+    ( line 13 , column 2 )
+    (FuncCall
+       (Ident (Identifier "ne"))
+       [ NormalArg (Literal (Int 5)) , NormalArg (Literal (Int 6)) ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 enum(children: (enum.item(body: text(body: [First]), 
+                                           number: 1), 
+                                 enum.item(body: text(body: [Fifth]), 
+                                           number: 5))), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak() })
diff --git a/test/typ/compiler/import-03.out b/test/typ/compiler/import-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/import-03.out
@@ -0,0 +1,98 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/import-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/import-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/import-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/import-03.typ"
+    ( line 3 , column 2 )
+    (Import (Literal (String "module.typ")) (NoIdentifiers Nothing))
+, SoftBreak
+, Code
+    "typ/compiler/import-03.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FieldAccess
+              (Ident (Identifier "b")) (Ident (Identifier "module")))
+       , NormalArg (Literal (Int 1))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/import-03.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "item")) (Ident (Identifier "module")))
+              [ NormalArg (Literal (Int 1)) , NormalArg (Literal (Int 2)) ])
+       , NormalArg (Literal (Int 3))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/import-03.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "push")) (Ident (Identifier "module")))
+              [ NormalArg (Literal (Int 2)) ])
+       , NormalArg (Literal (Int 3))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/import-04.out b/test/typ/compiler/import-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/import-04.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/import-05.out b/test/typ/compiler/import-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/import-05.out
@@ -0,0 +1,62 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/import-05.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/import-05.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/import-05.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/import-05.typ"
+    ( line 3 , column 2 )
+    (Import (Literal (String "module.typ")) AllIdentifiers)
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/import-05.typ"
+    ( line 6 , column 2 )
+    (Import
+       (Literal (String "module.typ"))
+       (SomeIdentifiers
+          [ ( Identifier "a" , Nothing ) , ( Identifier "c" , Nothing ) ]))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 parbreak() })
diff --git a/test/typ/compiler/import-06.out b/test/typ/compiler/import-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/import-06.out
@@ -0,0 +1,90 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/import-06.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/import-06.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/import-06.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/import-06.typ"
+    ( line 3 , column 2 )
+    (Import (Ident (Identifier "enum")) (NoIdentifiers Nothing))
+, SoftBreak
+, Code
+    "typ/compiler/import-06.typ"
+    ( line 4 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "d")))
+       (Dict
+          [ Reg ( Ident (Identifier "e") , Ident (Identifier "enum") ) ]))
+, SoftBreak
+, Code
+    "typ/compiler/import-06.typ"
+    ( line 5 , column 2 )
+    (Import
+       (FieldAccess (Ident (Identifier "e")) (Ident (Identifier "d")))
+       (NoIdentifiers Nothing))
+, SoftBreak
+, Code
+    "typ/compiler/import-06.typ"
+    ( line 6 , column 2 )
+    (Import
+       (FieldAccess (Ident (Identifier "e")) (Ident (Identifier "d")))
+       (SomeIdentifiers [ ( Identifier "item" , Nothing ) ]))
+, ParBreak
+, Code
+    "typ/compiler/import-06.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "item"))
+       [ NormalArg (Literal (Int 2)) , BlockArg [ Text "a" ] ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 enum.item(body: text(body: [a]), 
+                           number: 2), 
+                 parbreak() })
diff --git a/test/typ/compiler/import-07.out b/test/typ/compiler/import-07.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/import-07.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/import-08.out b/test/typ/compiler/import-08.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/import-08.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/import-09.out b/test/typ/compiler/import-09.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/import-09.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/import-10.out b/test/typ/compiler/import-10.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/import-10.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/import-11.out b/test/typ/compiler/import-11.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/import-11.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/import-12.out b/test/typ/compiler/import-12.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/import-12.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/import-13.out b/test/typ/compiler/import-13.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/import-13.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/import-14.out b/test/typ/compiler/import-14.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/import-14.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/import-15.out b/test/typ/compiler/import-15.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/import-15.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/import-16.out b/test/typ/compiler/import-16.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/import-16.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/import-17.out b/test/typ/compiler/import-17.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/import-17.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/import-18.out b/test/typ/compiler/import-18.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/import-18.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/import-19.out b/test/typ/compiler/import-19.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/import-19.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/import-20.out b/test/typ/compiler/import-20.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/import-20.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/import-21.out b/test/typ/compiler/import-21.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/import-21.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/import-22.out b/test/typ/compiler/import-22.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/import-22.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/import-23.out b/test/typ/compiler/import-23.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/import-23.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/import-24.out b/test/typ/compiler/import-24.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/import-24.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/import-25.out b/test/typ/compiler/import-25.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/import-25.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/include-00.out b/test/typ/compiler/include-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/include-00.out
@@ -0,0 +1,122 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/include-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/include-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/include-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/compiler/include-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 200.0 Pt)) ])
+, ParBreak
+, Heading 1 [ Text "Document" ]
+, Comment
+, Code
+    "typ/compiler/include-00.typ"
+    ( line 7 , column 2 )
+    (Include (Literal (String "modules/chap1.typ")))
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/include-00.typ"
+    ( line 10 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "chap2")))
+       (Include
+          (Plus
+             (Plus (Literal (String "modu")) (Literal (String "les/chap")))
+             (Literal (String "2.typ")))))
+, ParBreak
+, EnDash
+, Space
+, Emph [ Text "Intermission" ]
+, Space
+, EnDash
+, SoftBreak
+, Code
+    "typ/compiler/include-00.typ"
+    ( line 13 , column 2 )
+    (Ident (Identifier "chap2"))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 heading(body: text(body: [Document]), 
+                         level: 1), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 heading(body: text(body: [Chapter 1]), 
+                         level: 2), 
+                 text(body: [Klaus]), 
+                 text(body: [ stood in a field of wheat. There was nothing of particular interest about
+the field ]), 
+                 text(body: [Klaus]), 
+                 text(body: [ just casually surveyed for any paths on which the corn would not
+totally ruin his semi-new outdorsy jacket but then again, most of us spend
+considerable time in non-descript environments.]), 
+                 parbreak(), 
+                 parbreak(), 
+                 parbreak(), 
+                 text(body: [– ]), 
+                 emph(body: text(body: [Intermission])), 
+                 text(body: [ –
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 heading(body: text(body: [Chapter 2]), 
+                         level: 2), 
+                 text(body: [Their motivations, however, were pretty descript, so to speak. ]), 
+                 text(body: [Klaus]), 
+                 text(body: [ had not yet
+conceptualized their consequences, but that should change pretty quickly. ]), 
+                 text(body: [Klaus]), 
+                 text(body: [
+approached the center of the field and picked up a 4-foot long disk made from
+what could only be cow manure. The hair on the back of ]), 
+                 text(body: [Klaus]), 
+                 text(body: [” neck bristled as
+he stared at the unusual sight. After studying the object for a while, he
+promptly popped the question, “How much?”]), 
+                 parbreak(), 
+                 parbreak() })
diff --git a/test/typ/compiler/include-01.out b/test/typ/compiler/include-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/include-01.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/include-02.out b/test/typ/compiler/include-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/include-02.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/include-03.out b/test/typ/compiler/include-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/include-03.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/label-00.out b/test/typ/compiler/label-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/label-00.out
@@ -0,0 +1,94 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/label-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/label-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/label-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/label-00.typ"
+    ( line 3 , column 2 )
+    (Show
+       (Just (Ident (Identifier "heading")))
+       (Set
+          (Ident (Identifier "text"))
+          [ NormalArg (Literal (Numeric 10.0 Pt)) ]))
+, SoftBreak
+, Code
+    "typ/compiler/label-00.typ"
+    ( line 4 , column 2 )
+    (Show
+       (Just
+          (FuncCall
+             (FieldAccess
+                (Ident (Identifier "where")) (Ident (Identifier "heading")))
+             [ KeyValArg (Identifier "label") (Label "intro") ]))
+       (Ident (Identifier "underline")))
+, ParBreak
+, Heading 1 [ Text "Introduction" ]
+, Code
+    "typ/compiler/label-00.typ" ( line 6 , column 16 ) (Label "intro")
+, SoftBreak
+, Text "The"
+, Space
+, Text "beginning"
+, Text "."
+, ParBreak
+, Heading 1 [ Text "Conclusion" ]
+, Text "The"
+, Space
+, Text "end"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 heading(body: text(body: [Introduction]), 
+                         level: 1), 
+                 <intro>, 
+                 text(body: [
+The beginning.]), 
+                 parbreak(), 
+                 heading(body: text(body: [Conclusion]), 
+                         level: 1), 
+                 text(body: [The end.]), 
+                 parbreak() })
diff --git a/test/typ/compiler/label-01.out b/test/typ/compiler/label-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/label-01.out
@@ -0,0 +1,95 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/label-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/label-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/label-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/label-01.typ"
+    ( line 3 , column 2 )
+    (Show
+       (Just
+          (FuncCall
+             (FieldAccess
+                (Ident (Identifier "where")) (Ident (Identifier "strong")))
+             [ KeyValArg (Identifier "label") (Label "v") ]))
+       (Set
+          (Ident (Identifier "text"))
+          [ NormalArg (Ident (Identifier "red")) ]))
+, ParBreak
+, Code
+    "typ/compiler/label-01.typ"
+    ( line 5 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "a")))
+       (Block (Content [ Strong [ Text "A" ] ])))
+, SoftBreak
+, Code
+    "typ/compiler/label-01.typ"
+    ( line 6 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "b")))
+       (Block (Content [ Strong [ Text "B" ] ])))
+, SoftBreak
+, Code
+    "typ/compiler/label-01.typ"
+    ( line 7 , column 2 )
+    (Ident (Identifier "a"))
+, Space
+, Code
+    "typ/compiler/label-01.typ" ( line 7 , column 4 ) (Label "v")
+, Code
+    "typ/compiler/label-01.typ"
+    ( line 7 , column 9 )
+    (Ident (Identifier "b"))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 strong(body: text(body: [A])), 
+                 text(body: [ ]), 
+                 <v>, 
+                 strong(body: text(body: [B])), 
+                 parbreak() })
diff --git a/test/typ/compiler/label-02.typ b/test/typ/compiler/label-02.typ
deleted file mode 100644
--- a/test/typ/compiler/label-02.typ
+++ /dev/null
@@ -1,8 +0,0 @@
-// Test labelled text.
-#show "t": it => {
-  set text(blue) if it.has("label") and it.label == <last>
-  it
-}
-
-This is a thing #[that <last>] happened.
-
diff --git a/test/typ/compiler/label-03.out b/test/typ/compiler/label-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/label-03.out
@@ -0,0 +1,96 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/label-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/label-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/label-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/label-03.typ"
+    ( line 3 , column 2 )
+    (Show
+       (Just (Label "red"))
+       (Set
+          (Ident (Identifier "text"))
+          [ NormalArg (Ident (Identifier "red")) ]))
+, SoftBreak
+, Code
+    "typ/compiler/label-03.typ"
+    ( line 4 , column 2 )
+    (Show
+       (Just (Label "blue"))
+       (Set
+          (Ident (Identifier "text"))
+          [ NormalArg (Ident (Identifier "blue")) ]))
+, ParBreak
+, Strong [ Text "A" ]
+, Space
+, Strong [ Text "B" ]
+, Space
+, Code
+    "typ/compiler/label-03.typ" ( line 6 , column 9 ) (Label "red")
+, Strong [ Text "C" ]
+, Space
+, Code
+    "typ/compiler/label-03.typ"
+    ( line 6 , column 20 )
+    (FuncCall
+       (Ident (Identifier "label"))
+       [ NormalArg (Plus (Literal (String "bl")) (Literal (String "ue")))
+       ])
+, Space
+, Strong [ Text "D" ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 strong(body: text(body: [A])), 
+                 text(body: [ ]), 
+                 strong(body: text(body: [B])), 
+                 text(body: [ ]), 
+                 <red>, 
+                 strong(body: text(body: [C])), 
+                 text(body: [ ]), 
+                 <blue>, 
+                 text(body: [ ]), 
+                 strong(body: text(body: [D])), 
+                 parbreak() })
diff --git a/test/typ/compiler/label-04.out b/test/typ/compiler/label-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/label-04.out
@@ -0,0 +1,76 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/label-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/label-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/label-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/label-04.typ"
+    ( line 3 , column 2 )
+    (Show (Just (Label "hide")) (Literal None))
+, ParBreak
+, Emph [ Text "Hidden" ]
+, SoftBreak
+, Code
+    "typ/compiler/label-04.typ" ( line 6 , column 1 ) (Label "hide")
+, ParBreak
+, Emph [ Text "Hidden" ]
+, ParBreak
+, Code
+    "typ/compiler/label-04.typ" ( line 10 , column 1 ) (Label "hide")
+, SoftBreak
+, Emph [ Text "Visible" ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 emph(body: text(body: [Hidden])), 
+                 text(body: [
+]), 
+                 <hide>, 
+                 parbreak(), 
+                 emph(body: text(body: [Hidden])), 
+                 parbreak(), 
+                 <hide>, 
+                 text(body: [
+]), 
+                 emph(body: text(body: [Visible])), 
+                 parbreak() })
diff --git a/test/typ/compiler/label-05.out b/test/typ/compiler/label-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/label-05.out
@@ -0,0 +1,83 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/label-05.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/label-05.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/label-05.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/label-05.typ"
+    ( line 3 , column 2 )
+    (Show (Just (Label "strike")) (Ident (Identifier "strike")))
+, SoftBreak
+, Strong [ Text "This" , Space , Text "is" ]
+, Space
+, Code
+    "typ/compiler/label-05.typ"
+    ( line 4 , column 12 )
+    (Block
+       (Content
+          [ Code
+              "typ/compiler/label-05.typ" ( line 4 , column 13 ) (Label "strike")
+          ]))
+, Space
+, Strong [ Text "protected" , Text "." ]
+, SoftBreak
+, Strong
+    [ Text "This" , Space , Text "is" , Space , Text "not" , Text "." ]
+, Space
+, Code
+    "typ/compiler/label-05.typ" ( line 5 , column 16 ) (Label "strike")
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 strong(body: text(body: [This is])), 
+                 text(body: [ ]), 
+                 <strike>, 
+                 text(body: [ ]), 
+                 strong(body: text(body: [protected.])), 
+                 text(body: [
+]), 
+                 strong(body: text(body: [This is not.])), 
+                 text(body: [ ]), 
+                 <strike>, 
+                 parbreak() })
diff --git a/test/typ/compiler/label-06.out b/test/typ/compiler/label-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/label-06.out
@@ -0,0 +1,72 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/label-06.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/label-06.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/label-06.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "1"
+, Space
+, Text "<"
+, Space
+, Text "2"
+, Space
+, Text "is"
+, Space
+, Code
+    "typ/compiler/label-06.typ"
+    ( line 3 , column 11 )
+    (If
+       [ ( LessThan (Literal (Int 1)) (Literal (Int 2))
+         , Block (Content [ Text "not" ])
+         )
+       ])
+, Space
+, Text "a"
+, Space
+, Text "label"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [1 < 2 is ]), 
+                 text(body: [not]), 
+                 text(body: [ a label.]), 
+                 parbreak() })
diff --git a/test/typ/compiler/let-00.out b/test/typ/compiler/let-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/let-00.out
@@ -0,0 +1,117 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/let-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/let-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/let-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/let-00.typ"
+    ( line 3 , column 2 )
+    (Let (BasicBind (Just (Identifier "x"))) (Literal None))
+, SoftBreak
+, Code
+    "typ/compiler/let-00.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "x")) , NormalArg (Literal None) ])
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/let-00.typ"
+    ( line 7 , column 2 )
+    (Let (BasicBind (Just (Identifier "z"))) (Literal (Int 1)))
+, SoftBreak
+, Code
+    "typ/compiler/let-00.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "z"))
+       , NormalArg (Literal (Int 1))
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/let-00.typ"
+    ( line 11 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "fill")))
+       (Ident (Identifier "green")))
+, SoftBreak
+, Code
+    "typ/compiler/let-00.typ"
+    ( line 12 , column 2 )
+    (LetFunc
+       (Identifier "f")
+       [ NormalParam (Identifier "body") ]
+       (FuncCall
+          (Ident (Identifier "rect"))
+          [ KeyValArg (Identifier "width") (Literal (Numeric 2.0 Cm))
+          , KeyValArg (Identifier "fill") (Ident (Identifier "fill"))
+          , KeyValArg (Identifier "inset") (Literal (Numeric 5.0 Pt))
+          , NormalArg (Ident (Identifier "body"))
+          ]))
+, SoftBreak
+, Code
+    "typ/compiler/let-00.typ"
+    ( line 13 , column 2 )
+    (FuncCall (Ident (Identifier "f")) [ BlockArg [ Text "Hi!" ] ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 rect(body: text(body: [Hi!]), 
+                      fill: rgb(18%,80%,25%,100%), 
+                      inset: 5.0pt, 
+                      width: 2.0cm), 
+                 parbreak() })
diff --git a/test/typ/compiler/let-01.out b/test/typ/compiler/let-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/let-01.out
@@ -0,0 +1,116 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/let-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/let-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/let-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/let-01.typ"
+    ( line 5 , column 2 )
+    (Let (BasicBind (Just (Identifier "v1"))) (Literal (Int 1)))
+, SoftBreak
+, Text "One"
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/let-01.typ"
+    ( line 9 , column 2 )
+    (Let (BasicBind (Just (Identifier "v2"))) (Literal (Int 2)))
+, Space
+, Text "Two"
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/let-01.typ"
+    ( line 12 , column 2 )
+    (Let (BasicBind (Just (Identifier "v3"))) (Literal (Int 3)))
+, SoftBreak
+, Text "Three"
+, ParBreak
+, Code
+    "typ/compiler/let-01.typ"
+    ( line 15 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "v1"))
+       , NormalArg (Literal (Int 1))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/let-01.typ"
+    ( line 16 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "v2"))
+       , NormalArg (Literal (Int 2))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/let-01.typ"
+    ( line 17 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "v3"))
+       , NormalArg (Literal (Int 3))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+One]), 
+                 parbreak(), 
+                 text(body: [ Two]), 
+                 parbreak(), 
+                 text(body: [
+Three]), 
+                 parbreak(), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/let-02.out b/test/typ/compiler/let-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/let-02.out
@@ -0,0 +1,55 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/let-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/let-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/let-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/compiler/let-02.typ"
+    ( line 4 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "a")))
+       (Array [ Reg (Literal (Int 1)) , Reg (Literal (Int 2)) ]))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak() })
diff --git a/test/typ/compiler/let-03.out b/test/typ/compiler/let-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/let-03.out
@@ -0,0 +1,82 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/let-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/let-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/let-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/compiler/let-03.typ"
+    ( line 4 , column 2 )
+    (Let
+       (DestructuringBind
+          [ Simple (Just (Identifier "a"))
+          , Simple (Just (Identifier "b"))
+          ])
+       (Array [ Reg (Literal (Int 1)) , Reg (Literal (Int 2)) ]))
+, SoftBreak
+, Code
+    "typ/compiler/let-03.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "a"))
+       , NormalArg (Literal (Int 1))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/let-03.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "b"))
+       , NormalArg (Literal (Int 2))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/let-04.out b/test/typ/compiler/let-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/let-04.out
@@ -0,0 +1,66 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/let-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/let-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/let-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/let-04.typ"
+    ( line 3 , column 2 )
+    (Let
+       (DestructuringBind [ Simple (Just (Identifier "a")) ])
+       (Array [ Reg (Literal (Int 1)) ]))
+, SoftBreak
+, Code
+    "typ/compiler/let-04.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "a"))
+       , NormalArg (Literal (Int 1))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/let-05.out b/test/typ/compiler/let-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/let-05.out
@@ -0,0 +1,89 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/let-05.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/let-05.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/let-05.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/compiler/let-05.typ"
+    ( line 4 , column 2 )
+    (Let
+       (DestructuringBind
+          [ Simple (Just (Identifier "a"))
+          , Simple Nothing
+          , Simple (Just (Identifier "c"))
+          , Simple Nothing
+          ])
+       (Array
+          [ Reg (Literal (Int 1))
+          , Reg (Literal (Int 2))
+          , Reg (Literal (Int 3))
+          , Reg (Literal (Int 4))
+          ]))
+, SoftBreak
+, Code
+    "typ/compiler/let-05.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "a"))
+       , NormalArg (Literal (Int 1))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/let-05.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "c"))
+       , NormalArg (Literal (Int 3))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/let-06.out b/test/typ/compiler/let-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/let-06.out
@@ -0,0 +1,108 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/let-06.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/let-06.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/let-06.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/compiler/let-06.typ"
+    ( line 4 , column 2 )
+    (Let
+       (DestructuringBind
+          [ Simple (Just (Identifier "a"))
+          , Simple (Just (Identifier "b"))
+          , Sink (Just (Identifier "c"))
+          ])
+       (Array
+          [ Reg (Literal (Int 1))
+          , Reg (Literal (Int 2))
+          , Reg (Literal (Int 3))
+          , Reg (Literal (Int 4))
+          , Reg (Literal (Int 5))
+          , Reg (Literal (Int 6))
+          ]))
+, SoftBreak
+, Code
+    "typ/compiler/let-06.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "a"))
+       , NormalArg (Literal (Int 1))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/let-06.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "b"))
+       , NormalArg (Literal (Int 2))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/let-06.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "c"))
+       , NormalArg
+           (Array
+              [ Reg (Literal (Int 3))
+              , Reg (Literal (Int 4))
+              , Reg (Literal (Int 5))
+              , Reg (Literal (Int 6))
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/let-07.out b/test/typ/compiler/let-07.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/let-07.out
@@ -0,0 +1,108 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/let-07.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/let-07.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/let-07.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/compiler/let-07.typ"
+    ( line 4 , column 2 )
+    (Let
+       (DestructuringBind
+          [ Simple (Just (Identifier "a"))
+          , Sink (Just (Identifier "b"))
+          , Simple (Just (Identifier "c"))
+          ])
+       (Array
+          [ Reg (Literal (Int 1))
+          , Reg (Literal (Int 2))
+          , Reg (Literal (Int 3))
+          , Reg (Literal (Int 4))
+          , Reg (Literal (Int 5))
+          , Reg (Literal (Int 6))
+          ]))
+, SoftBreak
+, Code
+    "typ/compiler/let-07.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "a"))
+       , NormalArg (Literal (Int 1))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/let-07.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "b"))
+       , NormalArg
+           (Array
+              [ Reg (Literal (Int 2))
+              , Reg (Literal (Int 3))
+              , Reg (Literal (Int 4))
+              , Reg (Literal (Int 5))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/let-07.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "c"))
+       , NormalArg (Literal (Int 6))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/let-08.out b/test/typ/compiler/let-08.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/let-08.out
@@ -0,0 +1,93 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/let-08.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/let-08.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/let-08.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/compiler/let-08.typ"
+    ( line 4 , column 2 )
+    (Let
+       (DestructuringBind
+          [ Sink (Just (Identifier "a"))
+          , Simple (Just (Identifier "b"))
+          , Simple (Just (Identifier "c"))
+          ])
+       (Array [ Reg (Literal (Int 1)) , Reg (Literal (Int 2)) ]))
+, SoftBreak
+, Code
+    "typ/compiler/let-08.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "a")) , NormalArg (Array []) ])
+, SoftBreak
+, Code
+    "typ/compiler/let-08.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "b"))
+       , NormalArg (Literal (Int 1))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/let-08.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "c"))
+       , NormalArg (Literal (Int 2))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/let-09.out b/test/typ/compiler/let-09.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/let-09.out
@@ -0,0 +1,93 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/let-09.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/let-09.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/let-09.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/compiler/let-09.typ"
+    ( line 4 , column 2 )
+    (Let
+       (DestructuringBind
+          [ Simple (Just (Identifier "a"))
+          , Sink (Just (Identifier "b"))
+          , Simple (Just (Identifier "c"))
+          ])
+       (Array [ Reg (Literal (Int 1)) , Reg (Literal (Int 2)) ]))
+, SoftBreak
+, Code
+    "typ/compiler/let-09.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "a"))
+       , NormalArg (Literal (Int 1))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/let-09.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "b")) , NormalArg (Array []) ])
+, SoftBreak
+, Code
+    "typ/compiler/let-09.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "c"))
+       , NormalArg (Literal (Int 2))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/let-10.out b/test/typ/compiler/let-10.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/let-10.out
@@ -0,0 +1,93 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/let-10.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/let-10.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/let-10.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/compiler/let-10.typ"
+    ( line 4 , column 2 )
+    (Let
+       (DestructuringBind
+          [ Simple (Just (Identifier "a"))
+          , Simple (Just (Identifier "b"))
+          , Sink (Just (Identifier "c"))
+          ])
+       (Array [ Reg (Literal (Int 1)) , Reg (Literal (Int 2)) ]))
+, SoftBreak
+, Code
+    "typ/compiler/let-10.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "a"))
+       , NormalArg (Literal (Int 1))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/let-10.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "b"))
+       , NormalArg (Literal (Int 2))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/let-10.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "c")) , NormalArg (Array []) ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/let-11.out b/test/typ/compiler/let-11.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/let-11.out
@@ -0,0 +1,64 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/let-11.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/let-11.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/let-11.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/compiler/let-11.typ"
+    ( line 4 , column 2 )
+    (Let
+       (DestructuringBind [ Sink (Just (Identifier "a")) ]) (Array []))
+, SoftBreak
+, Code
+    "typ/compiler/let-11.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "a")) , NormalArg (Array []) ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/let-12.out b/test/typ/compiler/let-12.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/let-12.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/let-13.out b/test/typ/compiler/let-13.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/let-13.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/let-14.out b/test/typ/compiler/let-14.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/let-14.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/let-15.out b/test/typ/compiler/let-15.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/let-15.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/let-16.out b/test/typ/compiler/let-16.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/let-16.out
@@ -0,0 +1,99 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/let-16.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/let-16.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/let-16.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/compiler/let-16.typ"
+    ( line 4 , column 2 )
+    (Let
+       (DestructuringBind
+          [ WithKey (Identifier "a") (Just (Identifier "a"))
+          , Simple (Just (Identifier "b"))
+          , WithKey (Identifier "x") (Just (Identifier "c"))
+          ])
+       (Dict
+          [ Reg ( Ident (Identifier "a") , Literal (Int 1) )
+          , Reg ( Ident (Identifier "b") , Literal (Int 2) )
+          , Reg ( Ident (Identifier "x") , Literal (Int 3) )
+          ]))
+, SoftBreak
+, Code
+    "typ/compiler/let-16.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "a"))
+       , NormalArg (Literal (Int 1))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/let-16.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "b"))
+       , NormalArg (Literal (Int 2))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/let-16.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "c"))
+       , NormalArg (Literal (Int 3))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/let-17.out b/test/typ/compiler/let-17.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/let-17.out
@@ -0,0 +1,78 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/let-17.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/let-17.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/let-17.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/compiler/let-17.typ"
+    ( line 4 , column 2 )
+    (Let
+       (DestructuringBind
+          [ WithKey (Identifier "a") Nothing
+          , Sink (Just (Identifier "b"))
+          ])
+       (Dict
+          [ Reg ( Ident (Identifier "a") , Literal (Int 1) )
+          , Reg ( Ident (Identifier "b") , Literal (Int 2) )
+          , Reg ( Ident (Identifier "c") , Literal (Int 3) )
+          ]))
+, SoftBreak
+, Code
+    "typ/compiler/let-17.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "b"))
+       , NormalArg
+           (Dict
+              [ Reg ( Ident (Identifier "b") , Literal (Int 2) )
+              , Reg ( Ident (Identifier "c") , Literal (Int 3) )
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/let-18.out b/test/typ/compiler/let-18.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/let-18.out
@@ -0,0 +1,76 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/let-18.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/let-18.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/let-18.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/compiler/let-18.typ"
+    ( line 4 , column 2 )
+    (Let
+       (DestructuringBind
+          [ WithKey (Identifier "a") Nothing
+          , Sink (Just (Identifier "b"))
+          , WithKey (Identifier "c") Nothing
+          ])
+       (Dict
+          [ Reg ( Ident (Identifier "a") , Literal (Int 1) )
+          , Reg ( Ident (Identifier "b") , Literal (Int 2) )
+          , Reg ( Ident (Identifier "c") , Literal (Int 3) )
+          ]))
+, SoftBreak
+, Code
+    "typ/compiler/let-18.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "b"))
+       , NormalArg
+           (Dict [ Reg ( Ident (Identifier "b") , Literal (Int 2) ) ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/let-19.out b/test/typ/compiler/let-19.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/let-19.out
@@ -0,0 +1,68 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/let-19.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/let-19.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/let-19.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/compiler/let-19.typ"
+    ( line 4 , column 2 )
+    (Let
+       (DestructuringBind
+          [ WithKey (Identifier "a") Nothing
+          , Sink (Just (Identifier "b"))
+          ])
+       (Dict [ Reg ( Ident (Identifier "a") , Literal (Int 1) ) ]))
+, SoftBreak
+, Code
+    "typ/compiler/let-19.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "b")) , NormalArg (Dict []) ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/let-20.out b/test/typ/compiler/let-20.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/let-20.out
@@ -0,0 +1,64 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/let-20.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/let-20.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/let-20.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/compiler/let-20.typ"
+    ( line 4 , column 2 )
+    (Let
+       (DestructuringBind [ Sink (Just (Identifier "a")) ]) (Dict []))
+, SoftBreak
+, Code
+    "typ/compiler/let-20.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "a")) , NormalArg (Dict []) ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/let-21.out b/test/typ/compiler/let-21.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/let-21.out
@@ -0,0 +1,71 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/let-21.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/let-21.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/let-21.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/compiler/let-21.typ"
+    ( line 4 , column 2 )
+    (Let
+       (DestructuringBind
+          [ Simple (Just (Identifier "a")) , Sink Nothing ])
+       (Dict
+          [ Reg ( Ident (Identifier "a") , Literal (Int 1) )
+          , Reg ( Ident (Identifier "b") , Literal (Int 2) )
+          ]))
+, SoftBreak
+, Code
+    "typ/compiler/let-21.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "a"))
+       , NormalArg (Literal (Int 1))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/let-22.out b/test/typ/compiler/let-22.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/let-22.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/let-23.out b/test/typ/compiler/let-23.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/let-23.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/let-24.out b/test/typ/compiler/let-24.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/let-24.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/let-25.out b/test/typ/compiler/let-25.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/let-25.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/let-26.out b/test/typ/compiler/let-26.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/let-26.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/let-27.out b/test/typ/compiler/let-27.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/let-27.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/let-28.out b/test/typ/compiler/let-28.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/let-28.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/let-29.out b/test/typ/compiler/let-29.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/let-29.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/methods-00.out b/test/typ/compiler/methods-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/methods-00.out
@@ -0,0 +1,63 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/methods-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/methods-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/methods-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/methods-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "split")) (Literal (String "Hi there")))
+              [])
+       , NormalArg
+           (Array
+              [ Reg (Literal (String "Hi")) , Reg (Literal (String "there")) ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/methods-01.out b/test/typ/compiler/methods-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/methods-01.out
@@ -0,0 +1,98 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/methods-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/methods-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/methods-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/methods-01.typ"
+    ( line 3 , column 2 )
+    (Block
+       (CodeBlock
+          [ Let
+              (BasicBind (Just (Identifier "matrix")))
+              (Array
+                 [ Reg
+                     (Array
+                        [ Reg (Array [ Reg (Literal (Int 1)) ])
+                        , Reg (Array [ Reg (Literal (Int 2)) ])
+                        ])
+                 , Reg
+                     (Array
+                        [ Reg (Array [ Reg (Literal (Int 3)) ])
+                        , Reg (Array [ Reg (Literal (Int 4)) ])
+                        ])
+                 ])
+          , FuncCall
+              (FieldAccess
+                 (Ident (Identifier "push"))
+                 (FuncCall
+                    (FieldAccess
+                       (Ident (Identifier "at"))
+                       (FuncCall
+                          (FieldAccess
+                             (Ident (Identifier "at")) (Ident (Identifier "matrix")))
+                          [ NormalArg (Literal (Int 1)) ]))
+                    [ NormalArg (Literal (Int 0)) ]))
+              [ NormalArg (Literal (Int 5)) ]
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg (Ident (Identifier "matrix"))
+              , NormalArg
+                  (Array
+                     [ Reg
+                         (Array
+                            [ Reg (Array [ Reg (Literal (Int 1)) ])
+                            , Reg (Array [ Reg (Literal (Int 2)) ])
+                            ])
+                     , Reg
+                         (Array
+                            [ Reg (Array [ Reg (Literal (Int 3)) , Reg (Literal (Int 5)) ])
+                            , Reg (Array [ Reg (Literal (Int 4)) ])
+                            ])
+                     ])
+              ]
+          ]))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/methods-02.out b/test/typ/compiler/methods-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/methods-02.out
@@ -0,0 +1,101 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/methods-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/methods-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/methods-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/methods-02.typ"
+    ( line 3 , column 2 )
+    (Block
+       (CodeBlock
+          [ Let
+              (BasicBind (Just (Identifier "rewritten")))
+              (FuncCall
+                 (FieldAccess
+                    (Ident (Identifier "join"))
+                    (FuncCall
+                       (FieldAccess
+                          (Ident (Identifier "map"))
+                          (FuncCall
+                             (FieldAccess
+                                (Ident (Identifier "filter"))
+                                (FuncCall
+                                   (FieldAccess
+                                      (Ident (Identifier "map"))
+                                      (FuncCall
+                                         (FieldAccess
+                                            (Ident (Identifier "split"))
+                                            (Literal
+                                               (String "Hello. This is a sentence. And one more.")))
+                                         [ NormalArg (Literal (String ".")) ]))
+                                   [ NormalArg
+                                       (FuncExpr
+                                          [ NormalParam (Identifier "s") ]
+                                          (FuncCall
+                                             (FieldAccess
+                                                (Ident (Identifier "trim"))
+                                                (Ident (Identifier "s")))
+                                             []))
+                                   ]))
+                             [ NormalArg
+                                 (FuncExpr
+                                    [ NormalParam (Identifier "s") ]
+                                    (Not (Equals (Ident (Identifier "s")) (Literal (String "")))))
+                             ]))
+                       [ NormalArg
+                           (FuncExpr
+                              [ NormalParam (Identifier "s") ]
+                              (Plus (Ident (Identifier "s")) (Literal (String "!"))))
+                       ]))
+                 [ NormalArg (Literal (String "\n ")) ])
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg (Ident (Identifier "rewritten"))
+              , NormalArg
+                  (Literal (String "Hello!\n This is a sentence!\n And one more!"))
+              ]
+          ]))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/methods-03.out b/test/typ/compiler/methods-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/methods-03.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/methods-04.out b/test/typ/compiler/methods-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/methods-04.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/methods-05.out b/test/typ/compiler/methods-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/methods-05.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/methods-06.out b/test/typ/compiler/methods-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/methods-06.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/module.out b/test/typ/compiler/module.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/module.out
@@ -0,0 +1,131 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/module.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/module.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/module.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, SoftBreak
+, Code
+    "typ/compiler/module.typ"
+    ( line 5 , column 2 )
+    (Let (BasicBind (Just (Identifier "a"))) (Literal None))
+, SoftBreak
+, Code
+    "typ/compiler/module.typ"
+    ( line 6 , column 2 )
+    (Let (BasicBind (Just (Identifier "b"))) (Literal (Int 1)))
+, SoftBreak
+, Code
+    "typ/compiler/module.typ"
+    ( line 7 , column 2 )
+    (Let (BasicBind (Just (Identifier "c"))) (Literal (Int 2)))
+, SoftBreak
+, Code
+    "typ/compiler/module.typ"
+    ( line 8 , column 2 )
+    (Let (BasicBind (Just (Identifier "d"))) (Literal (Int 3)))
+, SoftBreak
+, Code
+    "typ/compiler/module.typ"
+    ( line 9 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "value")))
+       (Block (Content [ Text "hi" ])))
+, SoftBreak
+, Code
+    "typ/compiler/module.typ"
+    ( line 10 , column 2 )
+    (LetFunc
+       (Identifier "item")
+       [ NormalParam (Identifier "a") , NormalParam (Identifier "b") ]
+       (Plus (Ident (Identifier "a")) (Ident (Identifier "b"))))
+, SoftBreak
+, Code
+    "typ/compiler/module.typ"
+    ( line 11 , column 2 )
+    (LetFunc
+       (Identifier "push")
+       [ NormalParam (Identifier "a") ]
+       (Plus (Ident (Identifier "a")) (Literal (Int 1))))
+, SoftBreak
+, Code
+    "typ/compiler/module.typ"
+    ( line 12 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "fn")))
+       (FuncCall
+          (FieldAccess
+             (Ident (Identifier "with")) (Ident (Identifier "rect")))
+          [ KeyValArg (Identifier "fill") (Ident (Identifier "green"))
+          , KeyValArg (Identifier "inset") (Literal (Numeric 5.0 Pt))
+          ]))
+, ParBreak
+, Text "Some"
+, Space
+, Emph [ Text "includable" ]
+, Space
+, Text "text"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [Some ]), 
+                 emph(body: text(body: [includable])), 
+                 text(body: [ text.]), 
+                 parbreak() })
diff --git a/test/typ/compiler/modules/chap1.out b/test/typ/compiler/modules/chap1.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/modules/chap1.out
@@ -0,0 +1,173 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/modules/chap1.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/modules/chap1.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/modules/chap1.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, SoftBreak
+, Code
+    "typ/compiler/modules/chap1.typ"
+    ( line 4 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "name"))) (Literal (String "Klaus")))
+, ParBreak
+, Heading 2 [ Text "Chapter" , Space , Text "1" ]
+, Code
+    "typ/compiler/modules/chap1.typ"
+    ( line 7 , column 2 )
+    (Ident (Identifier "name"))
+, Space
+, Text "stood"
+, Space
+, Text "in"
+, Space
+, Text "a"
+, Space
+, Text "field"
+, Space
+, Text "of"
+, Space
+, Text "wheat"
+, Text "."
+, Space
+, Text "There"
+, Space
+, Text "was"
+, Space
+, Text "nothing"
+, Space
+, Text "of"
+, Space
+, Text "particular"
+, Space
+, Text "interest"
+, Space
+, Text "about"
+, SoftBreak
+, Text "the"
+, Space
+, Text "field"
+, Space
+, Code
+    "typ/compiler/modules/chap1.typ"
+    ( line 8 , column 12 )
+    (Ident (Identifier "name"))
+, Space
+, Text "just"
+, Space
+, Text "casually"
+, Space
+, Text "surveyed"
+, Space
+, Text "for"
+, Space
+, Text "any"
+, Space
+, Text "paths"
+, Space
+, Text "on"
+, Space
+, Text "which"
+, Space
+, Text "the"
+, Space
+, Text "corn"
+, Space
+, Text "would"
+, Space
+, Text "not"
+, SoftBreak
+, Text "totally"
+, Space
+, Text "ruin"
+, Space
+, Text "his"
+, Space
+, Text "semi"
+, Text "-"
+, Text "new"
+, Space
+, Text "outdorsy"
+, Space
+, Text "jacket"
+, Space
+, Text "but"
+, Space
+, Text "then"
+, Space
+, Text "again,"
+, Space
+, Text "most"
+, Space
+, Text "of"
+, Space
+, Text "us"
+, Space
+, Text "spend"
+, SoftBreak
+, Text "considerable"
+, Space
+, Text "time"
+, Space
+, Text "in"
+, Space
+, Text "non"
+, Text "-"
+, Text "descript"
+, Space
+, Text "environments"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 heading(body: text(body: [Chapter 1]), 
+                         level: 2), 
+                 text(body: [Klaus]), 
+                 text(body: [ stood in a field of wheat. There was nothing of particular interest about
+the field ]), 
+                 text(body: [Klaus]), 
+                 text(body: [ just casually surveyed for any paths on which the corn would not
+totally ruin his semi-new outdorsy jacket but then again, most of us spend
+considerable time in non-descript environments.]), 
+                 parbreak() })
diff --git a/test/typ/compiler/modules/chap2.out b/test/typ/compiler/modules/chap2.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/modules/chap2.out
@@ -0,0 +1,238 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/modules/chap2.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/modules/chap2.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/modules/chap2.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, SoftBreak
+, Code
+    "typ/compiler/modules/chap2.typ"
+    ( line 4 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "name"))) (Literal (String "Klaus")))
+, ParBreak
+, Heading 2 [ Text "Chapter" , Space , Text "2" ]
+, Text "Their"
+, Space
+, Text "motivations,"
+, Space
+, Text "however,"
+, Space
+, Text "were"
+, Space
+, Text "pretty"
+, Space
+, Text "descript,"
+, Space
+, Text "so"
+, Space
+, Text "to"
+, Space
+, Text "speak"
+, Text "."
+, Space
+, Code
+    "typ/compiler/modules/chap2.typ"
+    ( line 7 , column 65 )
+    (Ident (Identifier "name"))
+, Space
+, Text "had"
+, Space
+, Text "not"
+, Space
+, Text "yet"
+, SoftBreak
+, Text "conceptualized"
+, Space
+, Text "their"
+, Space
+, Text "consequences,"
+, Space
+, Text "but"
+, Space
+, Text "that"
+, Space
+, Text "should"
+, Space
+, Text "change"
+, Space
+, Text "pretty"
+, Space
+, Text "quickly"
+, Text "."
+, Space
+, Code
+    "typ/compiler/modules/chap2.typ"
+    ( line 8 , column 76 )
+    (Ident (Identifier "name"))
+, SoftBreak
+, Text "approached"
+, Space
+, Text "the"
+, Space
+, Text "center"
+, Space
+, Text "of"
+, Space
+, Text "the"
+, Space
+, Text "field"
+, Space
+, Text "and"
+, Space
+, Text "picked"
+, Space
+, Text "up"
+, Space
+, Text "a"
+, Space
+, Text "4"
+, Text "-"
+, Text "foot"
+, Space
+, Text "long"
+, Space
+, Text "disk"
+, Space
+, Text "made"
+, Space
+, Text "from"
+, SoftBreak
+, Text "what"
+, Space
+, Text "could"
+, Space
+, Text "only"
+, Space
+, Text "be"
+, Space
+, Text "cow"
+, Space
+, Text "manure"
+, Text "."
+, Space
+, Text "The"
+, Space
+, Text "hair"
+, Space
+, Text "on"
+, Space
+, Text "the"
+, Space
+, Text "back"
+, Space
+, Text "of"
+, Space
+, Code
+    "typ/compiler/modules/chap2.typ"
+    ( line 10 , column 57 )
+    (Ident (Identifier "name"))
+, Quote '\''
+, Space
+, Text "neck"
+, Space
+, Text "bristled"
+, Space
+, Text "as"
+, SoftBreak
+, Text "he"
+, Space
+, Text "stared"
+, Space
+, Text "at"
+, Space
+, Text "the"
+, Space
+, Text "unusual"
+, Space
+, Text "sight"
+, Text "."
+, Space
+, Text "After"
+, Space
+, Text "studying"
+, Space
+, Text "the"
+, Space
+, Text "object"
+, Space
+, Text "for"
+, Space
+, Text "a"
+, Space
+, Text "while,"
+, Space
+, Text "he"
+, SoftBreak
+, Text "promptly"
+, Space
+, Text "popped"
+, Space
+, Text "the"
+, Space
+, Text "question,"
+, Space
+, Quote '"'
+, Text "How"
+, Space
+, Text "much?"
+, Quote '"'
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 heading(body: text(body: [Chapter 2]), 
+                         level: 2), 
+                 text(body: [Their motivations, however, were pretty descript, so to speak. ]), 
+                 text(body: [Klaus]), 
+                 text(body: [ had not yet
+conceptualized their consequences, but that should change pretty quickly. ]), 
+                 text(body: [Klaus]), 
+                 text(body: [
+approached the center of the field and picked up a 4-foot long disk made from
+what could only be cow manure. The hair on the back of ]), 
+                 text(body: [Klaus]), 
+                 text(body: [” neck bristled as
+he stared at the unusual sight. After studying the object for a while, he
+promptly popped the question, “How much?”]), 
+                 parbreak() })
diff --git a/test/typ/compiler/modules/cycle1.out b/test/typ/compiler/modules/cycle1.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/modules/cycle1.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/modules/cycle2.out b/test/typ/compiler/modules/cycle2.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/modules/cycle2.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/ops-00.out b/test/typ/compiler/ops-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-00.out
@@ -0,0 +1,58 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/ops-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/ops-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/ops-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/compiler/ops-00.typ"
+    ( line 4 , column 2 )
+    (Plus
+       (Block (Content [ Strong [ Text "Hello" ] , Space ]))
+       (Block (Content [ Text "world!" ])))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 strong(body: text(body: [Hello])), 
+                 text(body: [ ]), 
+                 text(body: [world!]), 
+                 parbreak() })
diff --git a/test/typ/compiler/ops-01.out b/test/typ/compiler/ops-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-01.out
@@ -0,0 +1,251 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/ops-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/ops-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/ops-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/ops-01.typ"
+    ( line 5 , column 2 )
+    (For
+       (BasicBind (Just (Identifier "v")))
+       (Array
+          [ Reg (Literal (Int 1))
+          , Reg (Literal (Float 3.14))
+          , Reg (Literal (Numeric 12.0 Pt))
+          , Reg (Literal (Numeric 45.0 Deg))
+          , Reg (Literal (Numeric 90.0 Percent))
+          , Reg
+              (Plus (Literal (Numeric 13.0 Percent)) (Literal (Numeric 10.0 Pt)))
+          , Reg (Literal (Numeric 6.3 Fr))
+          ])
+       (Block
+          (CodeBlock
+             [ FuncCall
+                 (Ident (Identifier "test"))
+                 [ NormalArg (Ident (Identifier "v"))
+                 , NormalArg (Ident (Identifier "v"))
+                 ]
+             , FuncCall
+                 (Ident (Identifier "test"))
+                 [ NormalArg (Negated (Ident (Identifier "v")))
+                 , NormalArg
+                     (Times (Negated (Literal (Int 1))) (Ident (Identifier "v")))
+                 ]
+             , FuncCall
+                 (Ident (Identifier "test"))
+                 [ NormalArg (Negated (Negated (Ident (Identifier "v"))))
+                 , NormalArg (Ident (Identifier "v"))
+                 ]
+             , FuncCall
+                 (Ident (Identifier "test"))
+                 [ NormalArg (Negated (Negated (Negated (Ident (Identifier "v")))))
+                 , NormalArg (Negated (Ident (Identifier "v")))
+                 ]
+             ])))
+, ParBreak
+, Code
+    "typ/compiler/ops-01.typ"
+    ( line 17 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Negated (Plus (Literal (Int 4)) (Literal (Int 2))))
+       , NormalArg (Minus (Literal (Int 6)) (Literal (Int 12)))
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/ops-01.typ"
+    ( line 20 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Plus (Literal (Int 2)) (Literal (Int 4)))
+       , NormalArg (Literal (Int 6))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-01.typ"
+    ( line 21 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Plus (Literal (String "a")) (Literal (String "b")))
+       , NormalArg (Literal (String "ab"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-01.typ"
+    ( line 22 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (Plus
+              (Literal (String "a"))
+              (If
+                 [ ( Literal (Boolean False)
+                   , Block (CodeBlock [ Literal (String "b") ])
+                   )
+                 ]))
+       , NormalArg (Literal (String "a"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-01.typ"
+    ( line 23 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (Plus
+              (Literal (String "a"))
+              (If
+                 [ ( Literal (Boolean True)
+                   , Block (CodeBlock [ Literal (String "b") ])
+                   )
+                 ]))
+       , NormalArg (Literal (String "ab"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-01.typ"
+    ( line 24 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (Plus
+              (Times (Literal (Int 13)) (Literal (String "a")))
+              (Literal (String "bbbbbb")))
+       , NormalArg (Literal (String "aaaaaaaaaaaaabbbbbb"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-01.typ"
+    ( line 25 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (Plus
+              (Array [ Reg (Literal (Int 1)) , Reg (Literal (Int 2)) ])
+              (Array [ Reg (Literal (Int 3)) , Reg (Literal (Int 4)) ]))
+       , NormalArg
+           (Array
+              [ Reg (Literal (Int 1))
+              , Reg (Literal (Int 2))
+              , Reg (Literal (Int 3))
+              , Reg (Literal (Int 4))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-01.typ"
+    ( line 26 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (Plus
+              (Dict [ Reg ( Ident (Identifier "a") , Literal (Int 1) ) ])
+              (Dict
+                 [ Reg ( Ident (Identifier "b") , Literal (Int 2) )
+                 , Reg ( Ident (Identifier "c") , Literal (Int 3) )
+                 ]))
+       , NormalArg
+           (Dict
+              [ Reg ( Ident (Identifier "a") , Literal (Int 1) )
+              , Reg ( Ident (Identifier "b") , Literal (Int 2) )
+              , Reg ( Ident (Identifier "c") , Literal (Int 3) )
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 parbreak(), 
+                 text(body: [✅]), 
+                 parbreak(), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/ops-02.out b/test/typ/compiler/ops-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-02.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/ops-03.out b/test/typ/compiler/ops-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-03.out
@@ -0,0 +1,687 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/ops-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/ops-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/ops-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/ops-03.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Minus (Literal (Int 1)) (Literal (Int 4)))
+       , NormalArg (Times (Literal (Int 3)) (Negated (Literal (Int 1))))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-03.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (Minus (Literal (Numeric 4.0 Cm)) (Literal (Numeric 2.0 Cm)))
+       , NormalArg (Literal (Numeric 2.0 Cm))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-03.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (ToPower
+              (Minus (Literal (Int 2)) (Literal (Float 1.0e-2)))
+              (Literal (Int 1)))
+       , NormalArg (Literal (Float 99.99))
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/ops-03.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Times (Literal (Int 2)) (Literal (Int 4)))
+       , NormalArg (Literal (Int 8))
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/ops-03.typ"
+    ( line 11 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (Divided (Literal (Numeric 12.0 Pt)) (Literal (Float 0.4)))
+       , NormalArg (Literal (Numeric 30.0 Pt))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-03.typ"
+    ( line 12 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Divided (Literal (Int 7)) (Literal (Int 2)))
+       , NormalArg (Literal (Float 3.5))
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/ops-03.typ"
+    ( line 15 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (LessThan
+              (Minus
+                 (Literal (Int 3)) (Times (Literal (Int 4)) (Literal (Int 5))))
+              (Negated (Literal (Int 10))))
+       , NormalArg (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-03.typ"
+    ( line 16 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (Block
+              (CodeBlock
+                 [ Let (BasicBind (Just (Identifier "x"))) (Literal None)
+                 , Assign
+                     (Ident (Identifier "x"))
+                     (And
+                        (GreaterThanOrEqual
+                           (Plus
+                              (Literal (Int 1)) (Times (Literal (Int 4)) (Literal (Int 5))))
+                           (Literal (Int 21)))
+                        (Block
+                           (CodeBlock
+                              [ Assign (Ident (Identifier "x")) (Literal (String "a"))
+                              , Equals
+                                  (Plus (Ident (Identifier "x")) (Literal (String "b")))
+                                  (Literal (String "ab"))
+                              ])))
+                 , Ident (Identifier "x")
+                 ]))
+       , NormalArg (Literal (Boolean True))
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/ops-03.typ"
+    ( line 19 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (Plus
+              (If
+                 [ ( Literal (Boolean True)
+                   , Block (CodeBlock [ Literal (Int 1) ])
+                   )
+                 ])
+              (Literal (Int 2)))
+       , NormalArg (Literal (Int 3))
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/ops-03.typ"
+    ( line 24 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "nums")))
+       (Array
+          [ Reg (Literal (Int 1))
+          , Reg (Literal (Float 3.14))
+          , Reg (Literal (Numeric 12.0 Pt))
+          , Reg (Literal (Numeric 3.0 Em))
+          , Reg (Plus (Literal (Numeric 12.0 Pt)) (Literal (Numeric 3.0 Em)))
+          , Reg (Literal (Numeric 45.0 Deg))
+          , Reg (Literal (Numeric 90.0 Percent))
+          , Reg
+              (Plus (Literal (Numeric 13.0 Percent)) (Literal (Numeric 10.0 Pt)))
+          , Reg
+              (Plus
+                 (Plus (Literal (Numeric 5.0 Percent)) (Literal (Numeric 1.0 Em)))
+                 (Literal (Numeric 3.0 Pt)))
+          , Reg (Literal (Numeric 2.3 Fr))
+          ]))
+, ParBreak
+, Code
+    "typ/compiler/ops-03.typ"
+    ( line 33 , column 2 )
+    (For
+       (BasicBind (Just (Identifier "v")))
+       (Ident (Identifier "nums"))
+       (Block
+          (CodeBlock
+             [ FuncCall
+                 (Ident (Identifier "test"))
+                 [ NormalArg
+                     (Minus
+                        (Plus (Ident (Identifier "v")) (Ident (Identifier "v")))
+                        (Ident (Identifier "v")))
+                 , NormalArg (Ident (Identifier "v"))
+                 ]
+             , FuncCall
+                 (Ident (Identifier "test"))
+                 [ NormalArg
+                     (Minus
+                        (Minus (Ident (Identifier "v")) (Ident (Identifier "v")))
+                        (Ident (Identifier "v")))
+                 , NormalArg (Negated (Ident (Identifier "v")))
+                 ]
+             , FuncCall
+                 (Ident (Identifier "test"))
+                 [ NormalArg
+                     (Minus (Ident (Identifier "v")) (Ident (Identifier "v")))
+                 , NormalArg (Times (Literal (Int 0)) (Ident (Identifier "v")))
+                 ]
+             , FuncCall
+                 (Ident (Identifier "test"))
+                 [ NormalArg
+                     (Plus (Ident (Identifier "v")) (Ident (Identifier "v")))
+                 , NormalArg (Times (Literal (Int 2)) (Ident (Identifier "v")))
+                 ]
+             , If
+                 [ ( Not
+                       (Equals
+                          (FuncCall
+                             (Ident (Identifier "type")) [ NormalArg (Ident (Identifier "v")) ])
+                          (Literal (String "integer")))
+                   , Block
+                       (CodeBlock
+                          [ FuncCall
+                              (Ident (Identifier "test"))
+                              [ NormalArg
+                                  (Plus (Ident (Identifier "v")) (Ident (Identifier "v")))
+                              , NormalArg (Times (Literal (Float 2.0)) (Ident (Identifier "v")))
+                              ]
+                          ])
+                   )
+                 ]
+             , If
+                 [ ( And
+                       (Not
+                          (InCollection
+                             (Literal (String "relative"))
+                             (FuncCall
+                                (Ident (Identifier "type"))
+                                [ NormalArg (Ident (Identifier "v")) ])))
+                       (Or
+                          (Not
+                             (InCollection
+                                (Literal (String "pt"))
+                                (FuncCall
+                                   (Ident (Identifier "repr"))
+                                   [ NormalArg (Ident (Identifier "v")) ])))
+                          (Not
+                             (InCollection
+                                (Literal (String "em"))
+                                (FuncCall
+                                   (Ident (Identifier "repr"))
+                                   [ NormalArg (Ident (Identifier "v")) ]))))
+                   , Block
+                       (CodeBlock
+                          [ FuncCall
+                              (Ident (Identifier "test"))
+                              [ NormalArg
+                                  (Divided (Ident (Identifier "v")) (Ident (Identifier "v")))
+                              , NormalArg (Literal (Float 1.0))
+                              ]
+                          ])
+                   )
+                 ]
+             ])))
+, ParBreak
+, Comment
+, Comment
+, Comment
+, Comment
+, Code
+    "typ/compiler/ops-03.typ"
+    ( line 56 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "dims")))
+       (Array
+          [ Reg (Literal (Numeric 10.0 Pt))
+          , Reg (Literal (Numeric 1.0 Em))
+          , Reg (Plus (Literal (Numeric 10.0 Pt)) (Literal (Numeric 1.0 Em)))
+          , Reg (Literal (Numeric 30.0 Percent))
+          , Reg
+              (Plus (Literal (Numeric 50.0 Percent)) (Literal (Numeric 3.0 Cm)))
+          , Reg
+              (Plus
+                 (Plus (Literal (Numeric 40.0 Percent)) (Literal (Numeric 2.0 Em)))
+                 (Literal (Numeric 1.0 Cm)))
+          ]))
+, SoftBreak
+, Code
+    "typ/compiler/ops-03.typ"
+    ( line 57 , column 2 )
+    (For
+       (BasicBind (Just (Identifier "a")))
+       (Ident (Identifier "dims"))
+       (Block
+          (CodeBlock
+             [ For
+                 (BasicBind (Just (Identifier "b")))
+                 (Ident (Identifier "dims"))
+                 (Block
+                    (CodeBlock
+                       [ FuncCall
+                           (Ident (Identifier "test"))
+                           [ NormalArg
+                               (FuncCall
+                                  (Ident (Identifier "type"))
+                                  [ NormalArg
+                                      (Plus (Ident (Identifier "a")) (Ident (Identifier "b")))
+                                  ])
+                           , NormalArg
+                               (FuncCall
+                                  (Ident (Identifier "type"))
+                                  [ NormalArg
+                                      (Minus (Ident (Identifier "a")) (Ident (Identifier "b")))
+                                  ])
+                           ]
+                       ]))
+             , For
+                 (BasicBind (Just (Identifier "b")))
+                 (Array [ Reg (Literal (Int 7)) , Reg (Literal (Float 3.14)) ])
+                 (Block
+                    (CodeBlock
+                       [ FuncCall
+                           (Ident (Identifier "test"))
+                           [ NormalArg
+                               (FuncCall
+                                  (Ident (Identifier "type"))
+                                  [ NormalArg
+                                      (Times (Ident (Identifier "a")) (Ident (Identifier "b")))
+                                  ])
+                           , NormalArg
+                               (FuncCall
+                                  (Ident (Identifier "type"))
+                                  [ NormalArg (Ident (Identifier "a")) ])
+                           ]
+                       , FuncCall
+                           (Ident (Identifier "test"))
+                           [ NormalArg
+                               (FuncCall
+                                  (Ident (Identifier "type"))
+                                  [ NormalArg
+                                      (Times (Ident (Identifier "b")) (Ident (Identifier "a")))
+                                  ])
+                           , NormalArg
+                               (FuncCall
+                                  (Ident (Identifier "type"))
+                                  [ NormalArg (Ident (Identifier "a")) ])
+                           ]
+                       , FuncCall
+                           (Ident (Identifier "test"))
+                           [ NormalArg
+                               (FuncCall
+                                  (Ident (Identifier "type"))
+                                  [ NormalArg
+                                      (Divided (Ident (Identifier "a")) (Ident (Identifier "b")))
+                                  ])
+                           , NormalArg
+                               (FuncCall
+                                  (Ident (Identifier "type"))
+                                  [ NormalArg (Ident (Identifier "a")) ])
+                           ]
+                       ]))
+             ])))
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/ops-03.typ"
+    ( line 70 , column 2 )
+    (For
+       (BasicBind (Just (Identifier "a")))
+       (Array
+          [ Reg (Literal (Numeric 0.0 Pt))
+          , Reg (Literal (Numeric 0.0 Em))
+          , Reg (Literal (Numeric 0.0 Percent))
+          ])
+       (Block
+          (CodeBlock
+             [ For
+                 (BasicBind (Just (Identifier "b")))
+                 (Array
+                    [ Reg (Literal (Numeric 10.0 Pt))
+                    , Reg (Literal (Numeric 10.0 Em))
+                    , Reg (Literal (Numeric 10.0 Percent))
+                    ])
+                 (Block
+                    (CodeBlock
+                       [ FuncCall
+                           (Ident (Identifier "test"))
+                           [ NormalArg
+                               (Divided
+                                  (Times (Literal (Int 2)) (Ident (Identifier "b")))
+                                  (Ident (Identifier "b")))
+                           , NormalArg (Literal (Int 2))
+                           ]
+                       , FuncCall
+                           (Ident (Identifier "test"))
+                           [ NormalArg
+                               (Divided
+                                  (Plus
+                                     (Ident (Identifier "a"))
+                                     (Times (Ident (Identifier "b")) (Literal (Int 2))))
+                                  (Ident (Identifier "b")))
+                           , NormalArg (Literal (Int 2))
+                           ]
+                       , FuncCall
+                           (Ident (Identifier "test"))
+                           [ NormalArg
+                               (Divided
+                                  (Ident (Identifier "b"))
+                                  (Plus
+                                     (Times (Ident (Identifier "b")) (Literal (Int 2)))
+                                     (Ident (Identifier "a"))))
+                           , NormalArg (Literal (Float 0.5))
+                           ]
+                       ]))
+             ])))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [❌(]), 
+                 text(body: [1.0]), 
+                 text(body: [ /= ]), 
+                 text(body: [99.99]), 
+                 text(body: [)]), 
+                 parbreak(), 
+                 text(body: [✅]), 
+                 parbreak(), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak(), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak(), 
+                 text(body: [✅]), 
+                 parbreak(), 
+                 parbreak(), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [❌(]), 
+                 text(body: [((12.0pt + 3.0em) + (12.0pt + 3.0em)) + (-12.0pt + -3.0em)]), 
+                 text(body: [ /= ]), 
+                 text(body: [12.0pt + 3.0em]), 
+                 text(body: [)]), 
+                 text(body: [❌(]), 
+                 text(body: [((12.0pt + 3.0em) + (-12.0pt + -3.0em)) + (-12.0pt + -3.0em)]), 
+                 text(body: [ /= ]), 
+                 text(body: [-12.0pt + -3.0em]), 
+                 text(body: [)]), 
+                 text(body: [❌(]), 
+                 text(body: [(12.0pt + 3.0em) + (-12.0pt + -3.0em)]), 
+                 text(body: [ /= ]), 
+                 text(body: [0.0pt + 0.0em]), 
+                 text(body: [)]), 
+                 text(body: [❌(]), 
+                 text(body: [(12.0pt + 3.0em) + (12.0pt + 3.0em)]), 
+                 text(body: [ /= ]), 
+                 text(body: [24.0pt + 6.0em]), 
+                 text(body: [)]), 
+                 text(body: [❌(]), 
+                 text(body: [(12.0pt + 3.0em) + (12.0pt + 3.0em)]), 
+                 text(body: [ /= ]), 
+                 text(body: [24.0pt + 6.0em]), 
+                 text(body: [)]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [❌(]), 
+                 text(body: [((10.0pt + 13%) + (10.0pt + 13%)) + (-10.0pt + -13%)]), 
+                 text(body: [ /= ]), 
+                 text(body: [10.0pt + 13%]), 
+                 text(body: [)]), 
+                 text(body: [❌(]), 
+                 text(body: [((10.0pt + 13%) + (-10.0pt + -13%)) + (-10.0pt + -13%)]), 
+                 text(body: [ /= ]), 
+                 text(body: [-10.0pt + -13%]), 
+                 text(body: [)]), 
+                 text(body: [❌(]), 
+                 text(body: [(10.0pt + 13%) + (-10.0pt + -13%)]), 
+                 text(body: [ /= ]), 
+                 text(body: [0.0pt + 0%]), 
+                 text(body: [)]), 
+                 text(body: [❌(]), 
+                 text(body: [(10.0pt + 13%) + (10.0pt + 13%)]), 
+                 text(body: [ /= ]), 
+                 text(body: [20.0pt + 26%]), 
+                 text(body: [)]), 
+                 text(body: [❌(]), 
+                 text(body: [(10.0pt + 13%) + (10.0pt + 13%)]), 
+                 text(body: [ /= ]), 
+                 text(body: [20.0pt + 26%]), 
+                 text(body: [)]), 
+                 text(body: [✅]), 
+                 text(body: [❌(]), 
+                 text(body: [(((1.0em + 5%) + 3.0pt) + ((1.0em + 5%) + 3.0pt)) + ((-1.0em + -5%) + -3.0pt)]), 
+                 text(body: [ /= ]), 
+                 text(body: [(1.0em + 5%) + 3.0pt]), 
+                 text(body: [)]), 
+                 text(body: [❌(]), 
+                 text(body: [(((1.0em + 5%) + 3.0pt) + ((-1.0em + -5%) + -3.0pt)) + ((-1.0em + -5%) + -3.0pt)]), 
+                 text(body: [ /= ]), 
+                 text(body: [(-1.0em + -5%) + -3.0pt]), 
+                 text(body: [)]), 
+                 text(body: [❌(]), 
+                 text(body: [((1.0em + 5%) + 3.0pt) + ((-1.0em + -5%) + -3.0pt)]), 
+                 text(body: [ /= ]), 
+                 text(body: [(0.0em + 0%) + 0.0pt]), 
+                 text(body: [)]), 
+                 text(body: [❌(]), 
+                 text(body: [((1.0em + 5%) + 3.0pt) + ((1.0em + 5%) + 3.0pt)]), 
+                 text(body: [ /= ]), 
+                 text(body: [(2.0em + 10%) + 6.0pt]), 
+                 text(body: [)]), 
+                 text(body: [❌(]), 
+                 text(body: [((1.0em + 5%) + 3.0pt) + ((1.0em + 5%) + 3.0pt)]), 
+                 text(body: [ /= ]), 
+                 text(body: [(2.0em + 10%) + 6.0pt]), 
+                 text(body: [)]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [❌(]), 
+                 text(body: [1.0fr]), 
+                 text(body: [ /= ]), 
+                 text(body: [1.0]), 
+                 text(body: [)]), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 parbreak(), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [❌(]), 
+                 text(body: [200%]), 
+                 text(body: [ /= ]), 
+                 text(body: [2]), 
+                 text(body: [)]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [❌(]), 
+                 text(body: [200%]), 
+                 text(body: [ /= ]), 
+                 text(body: [2]), 
+                 text(body: [)]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/ops-04.out b/test/typ/compiler/ops-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-04.out
@@ -0,0 +1,77 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/ops-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/ops-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/ops-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/ops-04.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Literal (Int 16)) , NormalArg (Literal (Int 16)) ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-04.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Literal (Int 13)) , NormalArg (Literal (Int 13)) ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-04.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Plus (Literal (Int 10)) (Literal (Int 10)))
+       , NormalArg (Literal (Int 20))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/ops-05.out b/test/typ/compiler/ops-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-05.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/ops-06.out b/test/typ/compiler/ops-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-06.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/ops-07.out b/test/typ/compiler/ops-07.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-07.out
@@ -0,0 +1,199 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/ops-07.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/ops-07.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/ops-07.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/ops-07.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Not (Literal (Boolean True)))
+       , NormalArg (Literal (Boolean False))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-07.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Not (Literal (Boolean False)))
+       , NormalArg (Literal (Boolean True))
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/ops-07.typ"
+    ( line 9 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (And (Literal (Boolean False)) (Literal (Boolean False)))
+       , NormalArg (Literal (Boolean False))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-07.typ"
+    ( line 10 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (And (Literal (Boolean False)) (Literal (Boolean True)))
+       , NormalArg (Literal (Boolean False))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-07.typ"
+    ( line 11 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (And (Literal (Boolean True)) (Literal (Boolean False)))
+       , NormalArg (Literal (Boolean False))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-07.typ"
+    ( line 12 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (And (Literal (Boolean True)) (Literal (Boolean True)))
+       , NormalArg (Literal (Boolean True))
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/ops-07.typ"
+    ( line 15 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (Or (Literal (Boolean False)) (Literal (Boolean False)))
+       , NormalArg (Literal (Boolean False))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-07.typ"
+    ( line 16 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Or (Literal (Boolean False)) (Literal (Boolean True)))
+       , NormalArg (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-07.typ"
+    ( line 17 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Or (Literal (Boolean True)) (Literal (Boolean False)))
+       , NormalArg (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-07.typ"
+    ( line 18 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Or (Literal (Boolean True)) (Literal (Boolean True)))
+       , NormalArg (Literal (Boolean True))
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/ops-07.typ"
+    ( line 21 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (And (Literal (Boolean False)) (Ident (Identifier "dont-care")))
+       , NormalArg (Literal (Boolean False))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-07.typ"
+    ( line 22 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (Or (Literal (Boolean True)) (Ident (Identifier "dont-care")))
+       , NormalArg (Literal (Boolean True))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak(), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak(), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak(), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/ops-08.out b/test/typ/compiler/ops-08.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-08.out
@@ -0,0 +1,327 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/ops-08.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/ops-08.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/ops-08.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/ops-08.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Equals (Literal (Int 1)) (Literal (String "hi")))
+       , NormalArg (Literal (Boolean False))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-08.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Equals (Literal (Int 1)) (Literal (Float 1.0)))
+       , NormalArg (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-08.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (Equals
+              (Literal (Numeric 30.0 Percent))
+              (Plus (Literal (Numeric 30.0 Percent)) (Literal (Numeric 0.0 Cm))))
+       , NormalArg (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-08.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (Equals
+              (Literal (Numeric 1.0 In))
+              (Plus (Literal (Numeric 0.0 Percent)) (Literal (Numeric 72.0 Pt))))
+       , NormalArg (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-08.typ"
+    ( line 9 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (Equals
+              (Literal (Numeric 30.0 Percent))
+              (Plus (Literal (Numeric 30.0 Percent)) (Literal (Numeric 1.0 Cm))))
+       , NormalArg (Literal (Boolean False))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-08.typ"
+    ( line 10 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (Equals
+              (Literal (String "ab"))
+              (Plus (Literal (String "a")) (Literal (String "b"))))
+       , NormalArg (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-08.typ"
+    ( line 11 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Equals (Array []) (Array [ Reg (Literal (Int 1)) ]))
+       , NormalArg (Literal (Boolean False))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-08.typ"
+    ( line 12 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (Equals
+              (Array
+                 [ Reg (Literal (Int 1))
+                 , Reg (Literal (Int 2))
+                 , Reg (Literal (Int 3))
+                 ])
+              (Plus
+                 (Array [ Reg (Literal (Int 1)) , Reg (Literal (Float 2.0)) ])
+                 (Array [ Reg (Literal (Int 3)) ])))
+       , NormalArg (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-08.typ"
+    ( line 13 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (Equals
+              (Dict [])
+              (Dict [ Reg ( Ident (Identifier "a") , Literal (Int 1) ) ]))
+       , NormalArg (Literal (Boolean False))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-08.typ"
+    ( line 14 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (Equals
+              (Dict
+                 [ Reg
+                     ( Ident (Identifier "a")
+                     , Minus (Literal (Int 2)) (Literal (Float 1.0))
+                     )
+                 , Reg ( Ident (Identifier "b") , Literal (Int 2) )
+                 ])
+              (Dict
+                 [ Reg ( Ident (Identifier "b") , Literal (Int 2) )
+                 , Reg ( Ident (Identifier "a") , Literal (Int 1) )
+                 ]))
+       , NormalArg (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-08.typ"
+    ( line 15 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (Not (Equals (Literal (String "a")) (Literal (String "a"))))
+       , NormalArg (Literal (Boolean False))
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/ops-08.typ"
+    ( line 18 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (Equals (Ident (Identifier "test")) (Ident (Identifier "test")))
+       , NormalArg (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-08.typ"
+    ( line 19 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (Equals
+              (FuncExpr [] (Block (CodeBlock [])))
+              (FuncExpr [] (Block (CodeBlock []))))
+       , NormalArg (Literal (Boolean False))
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/ops-08.typ"
+    ( line 22 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "t"))) (Block (Content [ Text "a" ])))
+, SoftBreak
+, Code
+    "typ/compiler/ops-08.typ"
+    ( line 23 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (Equals (Ident (Identifier "t")) (Ident (Identifier "t")))
+       , NormalArg (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-08.typ"
+    ( line 24 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Equals (Block (Content [])) (Block (Content [])))
+       , NormalArg (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-08.typ"
+    ( line 25 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (Equals
+              (Block (Content [ Text "a" ])) (Block (Content [ Text "a" ])))
+       , NormalArg (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-08.typ"
+    ( line 26 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (Equals
+              (FuncCall (Ident (Identifier "grid")) [ BlockArg [ Text "a" ] ])
+              (FuncCall (Ident (Identifier "grid")) [ BlockArg [ Text "a" ] ]))
+       , NormalArg (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-08.typ"
+    ( line 27 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (Equals
+              (FuncCall (Ident (Identifier "grid")) [ BlockArg [ Text "a" ] ])
+              (FuncCall (Ident (Identifier "grid")) [ BlockArg [ Text "b" ] ]))
+       , NormalArg (Literal (Boolean False))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak(), 
+                 text(body: [❌(]), 
+                 text(body: [false]), 
+                 text(body: [ /= ]), 
+                 text(body: [true]), 
+                 text(body: [)]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/ops-09.out b/test/typ/compiler/ops-09.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-09.out
@@ -0,0 +1,181 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/ops-09.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/ops-09.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/ops-09.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, SoftBreak
+, Code
+    "typ/compiler/ops-09.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (LessThan
+              (Times (Literal (Int 13)) (Literal (Int 3)))
+              (Times (Literal (Int 14)) (Literal (Int 4))))
+       , NormalArg (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-09.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (LessThan (Literal (Int 5)) (Literal (Int 10)))
+       , NormalArg (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-09.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (GreaterThan (Literal (Int 5)) (Literal (Int 5)))
+       , NormalArg (Literal (Boolean False))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-09.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (LessThanOrEqual (Literal (Int 5)) (Literal (Int 5)))
+       , NormalArg (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-09.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (LessThanOrEqual (Literal (Int 5)) (Literal (Int 4)))
+       , NormalArg (Literal (Boolean False))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-09.typ"
+    ( line 9 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (LessThan (Literal (Numeric 45.0 Deg)) (Literal (Numeric 1.0 Rad)))
+       , NormalArg (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-09.typ"
+    ( line 10 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (LessThan
+              (Literal (Numeric 10.0 Percent)) (Literal (Numeric 20.0 Percent)))
+       , NormalArg (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-09.typ"
+    ( line 11 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (LessThan
+              (Literal (Numeric 50.0 Percent))
+              (Plus (Literal (Numeric 40.0 Percent)) (Literal (Numeric 0.0 Pt))))
+       , NormalArg (Literal (Boolean False))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-09.typ"
+    ( line 12 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (LessThan
+              (Plus (Literal (Numeric 40.0 Percent)) (Literal (Numeric 0.0 Pt)))
+              (Plus (Literal (Numeric 50.0 Percent)) (Literal (Numeric 0.0 Pt))))
+       , NormalArg (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-09.typ"
+    ( line 13 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (LessThan (Literal (Numeric 1.0 Em)) (Literal (Numeric 2.0 Em)))
+       , NormalArg (Literal (Boolean True))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/ops-10.out b/test/typ/compiler/ops-10.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-10.out
@@ -0,0 +1,191 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/ops-10.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/ops-10.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/ops-10.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, SoftBreak
+, Code
+    "typ/compiler/ops-10.typ"
+    ( line 4 , column 2 )
+    (Let (BasicBind (Just (Identifier "x"))) (Literal (Int 0)))
+, SoftBreak
+, Code
+    "typ/compiler/ops-10.typ"
+    ( line 5 , column 2 )
+    (Assign (Ident (Identifier "x")) (Literal (Int 10)))
+, Space
+, Code
+    "typ/compiler/ops-10.typ"
+    ( line 5 , column 18 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "x"))
+       , NormalArg (Literal (Int 10))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-10.typ"
+    ( line 6 , column 2 )
+    (Assign
+       (Ident (Identifier "x"))
+       (Minus (Ident (Identifier "x")) (Literal (Int 5))))
+, Space
+, Code
+    "typ/compiler/ops-10.typ"
+    ( line 6 , column 18 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "x"))
+       , NormalArg (Literal (Int 5))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-10.typ"
+    ( line 7 , column 2 )
+    (Assign
+       (Ident (Identifier "x"))
+       (Plus (Ident (Identifier "x")) (Literal (Int 1))))
+, Space
+, Code
+    "typ/compiler/ops-10.typ"
+    ( line 7 , column 18 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "x"))
+       , NormalArg (Literal (Int 6))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-10.typ"
+    ( line 8 , column 2 )
+    (Assign
+       (Ident (Identifier "x"))
+       (Times (Ident (Identifier "x")) (Ident (Identifier "x"))))
+, Space
+, Code
+    "typ/compiler/ops-10.typ"
+    ( line 8 , column 18 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "x"))
+       , NormalArg (Literal (Int 36))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-10.typ"
+    ( line 9 , column 2 )
+    (Assign
+       (Ident (Identifier "x"))
+       (Divided (Ident (Identifier "x")) (Literal (Float 2.0))))
+, Space
+, Code
+    "typ/compiler/ops-10.typ"
+    ( line 9 , column 18 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "x"))
+       , NormalArg (Literal (Float 18.0))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-10.typ"
+    ( line 10 , column 2 )
+    (Assign (Ident (Identifier "x")) (Literal (String "some")))
+, Space
+, Code
+    "typ/compiler/ops-10.typ"
+    ( line 10 , column 18 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "x"))
+       , NormalArg (Literal (String "some"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-10.typ"
+    ( line 11 , column 2 )
+    (Assign
+       (Ident (Identifier "x"))
+       (Plus (Ident (Identifier "x")) (Literal (String "thing"))))
+, Space
+, Code
+    "typ/compiler/ops-10.typ"
+    ( line 11 , column 18 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "x"))
+       , NormalArg (Literal (String "something"))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [ ]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [ ]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [ ]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [ ]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [ ]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [ ]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [ ]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/ops-11.out b/test/typ/compiler/ops-11.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-11.out
@@ -0,0 +1,3 @@
+"typ/compiler/ops-11.typ" (line 19, column 5):
+unexpected ":"
+expecting "//", "/*", operator or ")"
diff --git a/test/typ/compiler/ops-12.out b/test/typ/compiler/ops-12.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-12.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/ops-13.out b/test/typ/compiler/ops-13.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-13.out
@@ -0,0 +1,210 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/ops-13.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/ops-13.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/ops-13.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/ops-13.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (InCollection (Literal (String "hi")) (Literal (String "worship")))
+       , NormalArg (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-13.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (InCollection
+              (Literal (String "hi"))
+              (Array
+                 [ Reg (Literal (String "we"))
+                 , Reg (Literal (String "hi"))
+                 , Reg (Literal (String "bye"))
+                 ]))
+       , NormalArg (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-13.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (InCollection
+              (Literal (String "Hey")) (Literal (String "abHeyCd")))
+       , NormalArg (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-13.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (InCollection
+              (Literal (String "Hey")) (Literal (String "abheyCd")))
+       , NormalArg (Literal (Boolean False))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-13.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (InCollection
+              (Literal (Int 5))
+              (FuncCall
+                 (Ident (Identifier "range")) [ NormalArg (Literal (Int 10)) ]))
+       , NormalArg (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-13.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (InCollection
+              (Literal (Int 12))
+              (FuncCall
+                 (Ident (Identifier "range")) [ NormalArg (Literal (Int 10)) ]))
+       , NormalArg (Literal (Boolean False))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-13.typ"
+    ( line 9 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (InCollection (Literal (String "")) (Array []))
+       , NormalArg (Literal (Boolean False))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-13.typ"
+    ( line 10 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (InCollection
+              (Literal (String "key"))
+              (Dict
+                 [ Reg ( Ident (Identifier "key") , Literal (String "value") ) ]))
+       , NormalArg (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-13.typ"
+    ( line 11 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (InCollection
+              (Literal (String "value"))
+              (Dict
+                 [ Reg ( Ident (Identifier "key") , Literal (String "value") ) ]))
+       , NormalArg (Literal (Boolean False))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-13.typ"
+    ( line 12 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (Not
+              (InCollection
+                 (Literal (String "Hey")) (Literal (String "abheyCd"))))
+       , NormalArg (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-13.typ"
+    ( line 13 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (Not
+              (InCollection (Literal (String "a")) (Literal (String "abc"))))
+       , NormalArg (Literal (Boolean False))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/ops-14.out b/test/typ/compiler/ops-14.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-14.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/ops-15.out b/test/typ/compiler/ops-15.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-15.out
@@ -0,0 +1,207 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/ops-15.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/ops-15.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/ops-15.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/ops-15.typ"
+    ( line 5 , column 2 )
+    (LetFunc
+       (Identifier "add")
+       [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+       (Plus (Ident (Identifier "x")) (Ident (Identifier "y"))))
+, SoftBreak
+, Code
+    "typ/compiler/ops-15.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FuncCall
+                 (FieldAccess
+                    (Ident (Identifier "with")) (Ident (Identifier "add")))
+                 [ NormalArg (Literal (Int 2)) ])
+              [ NormalArg (Literal (Int 3)) ])
+       , NormalArg (Literal (Int 5))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-15.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FuncCall
+                 (FieldAccess
+                    (Ident (Identifier "with"))
+                    (FuncCall
+                       (FieldAccess
+                          (Ident (Identifier "with")) (Ident (Identifier "add")))
+                       [ NormalArg (Literal (Int 2)) ]))
+                 [ NormalArg (Literal (Int 3)) ])
+              [])
+       , NormalArg (Literal (Int 5))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-15.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FuncCall
+                 (FieldAccess
+                    (Ident (Identifier "with")) (Ident (Identifier "add")))
+                 [ NormalArg (Literal (Int 2)) ])
+              [ NormalArg (Literal (Int 4)) ])
+       , NormalArg (Literal (Int 6))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-15.typ"
+    ( line 9 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FuncCall
+                 (FieldAccess
+                    (Ident (Identifier "with"))
+                    (FuncCall
+                       (FieldAccess
+                          (Ident (Identifier "with")) (Ident (Identifier "add")))
+                       [ NormalArg (Literal (Int 2)) ]))
+                 [ NormalArg (Literal (Int 3)) ])
+              [])
+       , NormalArg (Literal (Int 5))
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/ops-15.typ"
+    ( line 12 , column 2 )
+    (LetFunc
+       (Identifier "inc")
+       [ NormalParam (Identifier "x")
+       , DefaultParam (Identifier "y") (Literal (Int 1))
+       ]
+       (Plus (Ident (Identifier "x")) (Ident (Identifier "y"))))
+, SoftBreak
+, Code
+    "typ/compiler/ops-15.typ"
+    ( line 13 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "inc")) [ NormalArg (Literal (Int 1)) ])
+       , NormalArg (Literal (Int 2))
+       ])
+, ParBreak
+, Code
+    "typ/compiler/ops-15.typ"
+    ( line 15 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "inc2")))
+       (FuncCall
+          (FieldAccess
+             (Ident (Identifier "with")) (Ident (Identifier "inc")))
+          [ KeyValArg (Identifier "y") (Literal (Int 2)) ]))
+, SoftBreak
+, Code
+    "typ/compiler/ops-15.typ"
+    ( line 16 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "inc2")) [ NormalArg (Literal (Int 2)) ])
+       , NormalArg (Literal (Int 4))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-15.typ"
+    ( line 17 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "inc2"))
+              [ NormalArg (Literal (Int 2))
+              , KeyValArg (Identifier "y") (Literal (Int 4))
+              ])
+       , NormalArg (Literal (Int 6))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/ops-assoc-00.out b/test/typ/compiler/ops-assoc-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-assoc-00.out
@@ -0,0 +1,93 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/ops-assoc-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/ops-assoc-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/ops-assoc-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/ops-assoc-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (Equals
+              (Divided
+                 (Divided (Literal (Int 10)) (Literal (Int 2))) (Literal (Int 2)))
+              (Divided
+                 (Divided (Literal (Int 10)) (Literal (Int 2))) (Literal (Int 2))))
+       , NormalArg (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-assoc-00.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (Equals
+              (Divided
+                 (Divided (Literal (Int 10)) (Literal (Int 2))) (Literal (Int 2)))
+              (Divided
+                 (Literal (Int 10)) (Divided (Literal (Int 2)) (Literal (Int 2)))))
+       , NormalArg (Literal (Boolean False))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-assoc-00.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (Times
+              (Divided (Literal (Int 1)) (Literal (Int 2))) (Literal (Int 3)))
+       , NormalArg (Literal (Float 1.5))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/ops-assoc-01.out b/test/typ/compiler/ops-assoc-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-assoc-01.out
@@ -0,0 +1,101 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/ops-assoc-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/ops-assoc-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/ops-assoc-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "{"
+, SoftBreak
+, Text "let"
+, Space
+, Text "x"
+, Space
+, Text "="
+, Space
+, Text "1"
+, SoftBreak
+, Text "let"
+, Space
+, Text "y"
+, Space
+, Text "="
+, Space
+, Text "2"
+, SoftBreak
+, Text "x"
+, Space
+, Text "="
+, Space
+, Text "y"
+, Space
+, Text "="
+, Space
+, Quote '"'
+, Text "ok"
+, Quote '"'
+, SoftBreak
+, Text "test"
+, Text "("
+, Text "x,"
+, Space
+, Text "none)"
+, SoftBreak
+, Text "test"
+, Text "("
+, Text "y,"
+, Space
+, Quote '"'
+, Text "ok"
+, Quote '"'
+, Text ")"
+, SoftBreak
+, Text "}"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [{
+let x = 1
+let y = 2
+x = y = “ok”
+test(x, none)
+test(y, “ok”)
+}]), 
+                 parbreak() })
diff --git a/test/typ/compiler/ops-invalid-00.out b/test/typ/compiler/ops-invalid-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-invalid-00.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/ops-invalid-01.out b/test/typ/compiler/ops-invalid-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-invalid-01.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/ops-invalid-02.out b/test/typ/compiler/ops-invalid-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-invalid-02.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/ops-invalid-03.out b/test/typ/compiler/ops-invalid-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-invalid-03.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/ops-invalid-04.out b/test/typ/compiler/ops-invalid-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-invalid-04.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/ops-invalid-05.out b/test/typ/compiler/ops-invalid-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-invalid-05.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/ops-invalid-06.out b/test/typ/compiler/ops-invalid-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-invalid-06.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/ops-invalid-07.out b/test/typ/compiler/ops-invalid-07.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-invalid-07.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/ops-invalid-08.out b/test/typ/compiler/ops-invalid-08.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-invalid-08.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/ops-invalid-09.out b/test/typ/compiler/ops-invalid-09.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-invalid-09.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/ops-invalid-10.out b/test/typ/compiler/ops-invalid-10.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-invalid-10.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/ops-invalid-11.out b/test/typ/compiler/ops-invalid-11.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-invalid-11.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/ops-invalid-12.out b/test/typ/compiler/ops-invalid-12.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-invalid-12.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/ops-invalid-13.out b/test/typ/compiler/ops-invalid-13.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-invalid-13.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/ops-invalid-14.out b/test/typ/compiler/ops-invalid-14.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-invalid-14.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/ops-invalid-15.out b/test/typ/compiler/ops-invalid-15.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-invalid-15.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/ops-invalid-16.out b/test/typ/compiler/ops-invalid-16.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-invalid-16.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/ops-invalid-17.out b/test/typ/compiler/ops-invalid-17.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-invalid-17.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/ops-invalid-18.out b/test/typ/compiler/ops-invalid-18.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-invalid-18.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/ops-invalid-19.out b/test/typ/compiler/ops-invalid-19.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-invalid-19.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/ops-invalid-20.out b/test/typ/compiler/ops-invalid-20.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-invalid-20.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/ops-invalid-21.out b/test/typ/compiler/ops-invalid-21.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-invalid-21.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/ops-invalid-22.out b/test/typ/compiler/ops-invalid-22.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-invalid-22.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/ops-invalid-23.out b/test/typ/compiler/ops-invalid-23.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-invalid-23.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/ops-invalid-24.out b/test/typ/compiler/ops-invalid-24.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-invalid-24.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/ops-invalid-25.out b/test/typ/compiler/ops-invalid-25.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-invalid-25.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/ops-invalid-26.out b/test/typ/compiler/ops-invalid-26.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-invalid-26.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/ops-invalid-27.out b/test/typ/compiler/ops-invalid-27.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-invalid-27.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/ops-invalid-28.out b/test/typ/compiler/ops-invalid-28.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-invalid-28.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/ops-invalid-29.out b/test/typ/compiler/ops-invalid-29.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-invalid-29.out
@@ -0,0 +1,60 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/ops-invalid-29.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/ops-invalid-29.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/ops-invalid-29.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/compiler/ops-invalid-29.typ"
+    ( line 4 , column 2 )
+    (Let (BasicBind (Just (Identifier "rect"))) (Literal (String "")))
+, SoftBreak
+, Code
+    "typ/compiler/ops-invalid-29.typ"
+    ( line 5 , column 2 )
+    (Assign (Ident (Identifier "rect")) (Literal (String "hi")))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak() })
diff --git a/test/typ/compiler/ops-prec-00.out b/test/typ/compiler/ops-prec-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-prec-00.out
@@ -0,0 +1,102 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/ops-prec-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/ops-prec-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/ops-prec-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/ops-prec-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (Plus
+              (Literal (Int 1))
+              (Times (Literal (Int 2)) (Negated (Literal (Int 3)))))
+       , NormalArg (Negated (Literal (Int 5)))
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/ops-prec-00.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (Equals
+              (Literal (Int 3)) (Minus (Literal (Int 5)) (Literal (Int 2))))
+       , NormalArg (Literal (Boolean True))
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/ops-prec-00.typ"
+    ( line 9 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (And
+              (Equals (Literal (String "a")) (Literal (String "a")))
+              (LessThan (Literal (Int 2)) (Literal (Int 3))))
+       , NormalArg (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/ops-prec-00.typ"
+    ( line 10 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (Not (Equals (Literal (String "b")) (Literal (String "b"))))
+       , NormalArg (Literal (Boolean False))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak(), 
+                 text(body: [✅]), 
+                 parbreak(), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/ops-prec-01.out b/test/typ/compiler/ops-prec-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-prec-01.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/ops-prec-02.out b/test/typ/compiler/ops-prec-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-prec-02.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/ops-prec-03.out b/test/typ/compiler/ops-prec-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-prec-03.out
@@ -0,0 +1,65 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/ops-prec-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/ops-prec-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/ops-prec-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/ops-prec-03.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (Not
+              (InCollection
+                 (Negated (Literal (Int 1)))
+                 (Array
+                    [ Reg (Literal (Int 1))
+                    , Reg (Literal (Int 2))
+                    , Reg (Literal (Int 3))
+                    ])))
+       , NormalArg (Literal (Boolean True))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/ops-prec-04.out b/test/typ/compiler/ops-prec-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/ops-prec-04.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/recursion-00.out b/test/typ/compiler/recursion-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/recursion-00.out
@@ -0,0 +1,87 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/recursion-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/recursion-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/recursion-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/recursion-00.typ"
+    ( line 3 , column 2 )
+    (LetFunc
+       (Identifier "fib")
+       [ NormalParam (Identifier "n") ]
+       (Block
+          (CodeBlock
+             [ If
+                 [ ( LessThanOrEqual (Ident (Identifier "n")) (Literal (Int 2))
+                   , Block (CodeBlock [ Literal (Int 1) ])
+                   )
+                 , ( Literal (Boolean True)
+                   , Block
+                       (CodeBlock
+                          [ Plus
+                              (FuncCall
+                                 (Ident (Identifier "fib"))
+                                 [ NormalArg (Minus (Ident (Identifier "n")) (Literal (Int 1))) ])
+                              (FuncCall
+                                 (Ident (Identifier "fib"))
+                                 [ NormalArg (Minus (Ident (Identifier "n")) (Literal (Int 2))) ])
+                          ])
+                   )
+                 ]
+             ])))
+, ParBreak
+, Code
+    "typ/compiler/recursion-00.typ"
+    ( line 11 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "fib")) [ NormalArg (Literal (Int 10)) ])
+       , NormalArg (Literal (Int 55))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/recursion-01.out b/test/typ/compiler/recursion-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/recursion-01.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/recursion-02.out b/test/typ/compiler/recursion-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/recursion-02.out
@@ -0,0 +1,74 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/recursion-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/recursion-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/recursion-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/recursion-02.typ"
+    ( line 3 , column 2 )
+    (Let (BasicBind (Just (Identifier "f"))) (Literal (Int 10)))
+, SoftBreak
+, Code
+    "typ/compiler/recursion-02.typ"
+    ( line 4 , column 2 )
+    (LetFunc (Identifier "f") [] (Ident (Identifier "f")))
+, SoftBreak
+, Code
+    "typ/compiler/recursion-02.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "type"))
+              [ NormalArg (FuncCall (Ident (Identifier "f")) []) ])
+       , NormalArg (Literal (String "function"))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/recursion-03.out b/test/typ/compiler/recursion-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/recursion-03.out
@@ -0,0 +1,76 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/recursion-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/recursion-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/recursion-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/recursion-03.typ"
+    ( line 3 , column 2 )
+    (Let (BasicBind (Just (Identifier "f"))) (Literal (Int 10)))
+, SoftBreak
+, Code
+    "typ/compiler/recursion-03.typ"
+    ( line 4 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "f")))
+       (FuncExpr [] (Ident (Identifier "f"))))
+, SoftBreak
+, Code
+    "typ/compiler/recursion-03.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "type"))
+              [ NormalArg (FuncCall (Ident (Identifier "f")) []) ])
+       , NormalArg (Literal (String "integer"))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/recursion-04.out b/test/typ/compiler/recursion-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/recursion-04.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/recursion-05.out b/test/typ/compiler/recursion-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/recursion-05.out
@@ -0,0 +1,86 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/recursion-05.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/recursion-05.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/recursion-05.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/compiler/recursion-05.typ"
+    ( line 2 , column 2 )
+    (LetFunc
+       (Identifier "f")
+       [ NormalParam (Identifier "x") ]
+       (Literal (String "hello")))
+, SoftBreak
+, Code
+    "typ/compiler/recursion-05.typ"
+    ( line 3 , column 2 )
+    (LetFunc
+       (Identifier "f")
+       [ NormalParam (Identifier "x") ]
+       (If
+          [ ( Not (Equals (Ident (Identifier "x")) (Literal None))
+            , Block
+                (CodeBlock
+                   [ FuncCall (Ident (Identifier "f")) [ NormalArg (Literal None) ] ])
+            )
+          , ( Literal (Boolean True)
+            , Block (CodeBlock [ Literal (String "world") ])
+            )
+          ]))
+, SoftBreak
+, Code
+    "typ/compiler/recursion-05.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall (Ident (Identifier "f")) [ NormalArg (Literal (Int 1)) ])
+       , NormalArg (Literal (String "world"))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/repr-00.out b/test/typ/compiler/repr-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/repr-00.out
@@ -0,0 +1,78 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/repr-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/repr-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/repr-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/repr-00.typ" ( line 3 , column 2 ) (Literal Auto)
+, Space
+, HardBreak
+, Code
+    "typ/compiler/repr-00.typ" ( line 4 , column 2 ) (Literal None)
+, Space
+, Text "("
+, Text "empty)"
+, Space
+, HardBreak
+, Code
+    "typ/compiler/repr-00.typ"
+    ( line 5 , column 2 )
+    (Literal (Boolean True))
+, Space
+, HardBreak
+, Code
+    "typ/compiler/repr-00.typ"
+    ( line 6 , column 2 )
+    (Literal (Boolean False))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [auto]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 text(body: [ (empty) ]), 
+                 linebreak(), 
+                 text(body: [true]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 text(body: [false]), 
+                 parbreak() })
diff --git a/test/typ/compiler/repr-01.out b/test/typ/compiler/repr-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/repr-01.out
@@ -0,0 +1,154 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/repr-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/repr-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/repr-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/repr-01.typ" ( line 3 , column 2 ) (Literal (Int 1))
+, Space
+, HardBreak
+, Code
+    "typ/compiler/repr-01.typ"
+    ( line 4 , column 2 )
+    (Literal (Float 1.0e-4))
+, Space
+, HardBreak
+, Code
+    "typ/compiler/repr-01.typ"
+    ( line 5 , column 2 )
+    (Literal (Float 3.15))
+, Space
+, HardBreak
+, Code
+    "typ/compiler/repr-01.typ"
+    ( line 6 , column 2 )
+    (Literal (Float 1.0e-10))
+, Space
+, HardBreak
+, Code
+    "typ/compiler/repr-01.typ"
+    ( line 7 , column 2 )
+    (Literal (Numeric 50.368 Percent))
+, HardBreak
+, Code
+    "typ/compiler/repr-01.typ"
+    ( line 8 , column 2 )
+    (Literal (Numeric 1.2345e-6 Pt))
+, HardBreak
+, Code
+    "typ/compiler/repr-01.typ"
+    ( line 9 , column 2 )
+    (Literal (Numeric 4.5 Cm))
+, HardBreak
+, Code
+    "typ/compiler/repr-01.typ"
+    ( line 10 , column 2 )
+    (Literal (Numeric 120.0 Pt))
+, HardBreak
+, Code
+    "typ/compiler/repr-01.typ"
+    ( line 11 , column 2 )
+    (Literal (Numeric 2.5 Rad))
+, HardBreak
+, Code
+    "typ/compiler/repr-01.typ"
+    ( line 12 , column 2 )
+    (Literal (Numeric 45.0 Deg))
+, HardBreak
+, Code
+    "typ/compiler/repr-01.typ"
+    ( line 13 , column 2 )
+    (Literal (Numeric 1.7 Em))
+, HardBreak
+, Code
+    "typ/compiler/repr-01.typ"
+    ( line 14 , column 2 )
+    (Plus (Literal (Numeric 1.0 Cm)) (Literal (Numeric 0.0 Em)))
+, Space
+, HardBreak
+, Code
+    "typ/compiler/repr-01.typ"
+    ( line 15 , column 2 )
+    (Plus (Literal (Numeric 2.0 Em)) (Literal (Numeric 10.0 Pt)))
+, Space
+, HardBreak
+, Code
+    "typ/compiler/repr-01.typ"
+    ( line 16 , column 2 )
+    (Literal (Numeric 2.3 Fr))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [1]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 text(body: [1.0e-4]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 text(body: [3.15]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 text(body: [1.0e-10]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 text(body: [50%]), 
+                 linebreak(), 
+                 text(body: [1.2345e-6pt]), 
+                 linebreak(), 
+                 text(body: [4.5cm]), 
+                 linebreak(), 
+                 text(body: [120.0pt]), 
+                 linebreak(), 
+                 text(body: [143.2394487827058deg]), 
+                 linebreak(), 
+                 text(body: [45.0deg]), 
+                 linebreak(), 
+                 text(body: [1.7em]), 
+                 linebreak(), 
+                 text(body: [1.0cm]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 text(body: [2.0em + 10.0pt]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 text(body: [2.3fr]), 
+                 parbreak() })
diff --git a/test/typ/compiler/repr-02.out b/test/typ/compiler/repr-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/repr-02.out
@@ -0,0 +1,157 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/repr-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/repr-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/repr-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/repr-02.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ NormalArg (Literal (Numeric 0.8 Em)) ])
+, SoftBreak
+, Code
+    "typ/compiler/repr-02.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "rgb"))
+       [ NormalArg (Literal (String "f7a205")) ])
+, Space
+, HardBreak
+, Code
+    "typ/compiler/repr-02.typ"
+    ( line 5 , column 2 )
+    (Plus
+       (Literal (Numeric 2.0 Pt))
+       (FuncCall
+          (Ident (Identifier "rgb"))
+          [ NormalArg (Literal (String "f7a205")) ]))
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/repr-02.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "raw"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "repr")) [ NormalArg (Literal (String "hi")) ])
+       , KeyValArg (Identifier "lang") (Literal (String "typc"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/repr-02.typ"
+    ( line 9 , column 2 )
+    (FuncCall
+       (Ident (Identifier "repr"))
+       [ NormalArg (Literal (String "a\n[]\"\128640string")) ])
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/repr-02.typ"
+    ( line 12 , column 2 )
+    (FuncCall
+       (Ident (Identifier "raw"))
+       [ KeyValArg (Identifier "lang") (Literal (String "typc"))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "repr")) [ BlockArg [ Strong [ Text "Hey" ] ] ])
+       ])
+, ParBreak
+, Comment
+, Text "Nothing"
+, SoftBreak
+, Code
+    "typ/compiler/repr-02.typ"
+    ( line 16 , column 2 )
+    (LetFunc
+       (Identifier "f")
+       [ NormalParam (Identifier "x") ]
+       (Ident (Identifier "x")))
+, SoftBreak
+, Code
+    "typ/compiler/repr-02.typ"
+    ( line 17 , column 2 )
+    (Ident (Identifier "f"))
+, SoftBreak
+, Code
+    "typ/compiler/repr-02.typ"
+    ( line 18 , column 2 )
+    (Ident (Identifier "rect"))
+, SoftBreak
+, Code
+    "typ/compiler/repr-02.typ"
+    ( line 19 , column 2 )
+    (FuncExpr [] (Literal None))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+], size: 0.8em), 
+                 text(body: [rgb(96%,63%,1%,100%)], 
+                      size: 0.8em), 
+                 text(body: [ ], size: 0.8em), 
+                 linebreak(), 
+                 text(body: [(thickness: 2.0pt,
+ color: rgb(96%,63%,1%,100%))], 
+                      size: 0.8em), 
+                 parbreak(), 
+                 raw(lang: "typc", 
+                     text: "\"hi\""), 
+                 text(body: [
+], size: 0.8em), 
+                 text(body: ["a\n[]\"🚀string"], 
+                      size: 0.8em), 
+                 parbreak(), 
+                 raw(lang: "typc", 
+                     text: "strong(body: text(body: [Hey], \n                  size: 0.8em))"), 
+                 parbreak(), 
+                 text(body: [Nothing
+], 
+                      size: 0.8em), 
+                 text(body: [
+], size: 0.8em), 
+                 text(body: [
+], size: 0.8em), 
+                 text(body: [
+], size: 0.8em), 
+                 parbreak() })
diff --git a/test/typ/compiler/return-00.out b/test/typ/compiler/return-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/return-00.out
@@ -0,0 +1,70 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/return-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/return-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/return-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/return-00.typ"
+    ( line 3 , column 2 )
+    (LetFunc
+       (Identifier "f")
+       [ NormalParam (Identifier "x") ]
+       (Block
+          (CodeBlock
+             [ Return (Just (Plus (Ident (Identifier "x")) (Literal (Int 1))))
+             ])))
+, ParBreak
+, Code
+    "typ/compiler/return-00.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall (Ident (Identifier "f")) [ NormalArg (Literal (Int 1)) ])
+       , NormalArg (Literal (Int 2))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/return-01.out b/test/typ/compiler/return-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/return-01.out
@@ -0,0 +1,112 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/return-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/return-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/return-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, SoftBreak
+, Code
+    "typ/compiler/return-01.typ"
+    ( line 4 , column 2 )
+    (LetFunc
+       (Identifier "f")
+       [ NormalParam (Identifier "x") ]
+       (Block
+          (CodeBlock
+             [ Literal (String "a")
+             , If
+                 [ ( Equals (Ident (Identifier "x")) (Literal (Int 0))
+                   , Block (CodeBlock [ Return (Just (Literal (String "b"))) ])
+                   )
+                 , ( Equals (Ident (Identifier "x")) (Literal (Int 1))
+                   , Block (CodeBlock [ Literal (String "c") ])
+                   )
+                 , ( Literal (Boolean True)
+                   , Block
+                       (CodeBlock
+                          [ Literal (String "d") , Return Nothing , Literal (String "e") ])
+                   )
+                 ]
+             ])))
+, ParBreak
+, Code
+    "typ/compiler/return-01.typ"
+    ( line 17 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall (Ident (Identifier "f")) [ NormalArg (Literal (Int 0)) ])
+       , NormalArg (Literal (String "b"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/return-01.typ"
+    ( line 18 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall (Ident (Identifier "f")) [ NormalArg (Literal (Int 1)) ])
+       , NormalArg (Literal (String "ac"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/return-01.typ"
+    ( line 19 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall (Ident (Identifier "f")) [ NormalArg (Literal (Int 2)) ])
+       , NormalArg (Literal (String "ad"))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/return-02.out b/test/typ/compiler/return-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/return-02.out
@@ -0,0 +1,98 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/return-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/return-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/return-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, SoftBreak
+, Code
+    "typ/compiler/return-02.typ"
+    ( line 5 , column 2 )
+    (LetFunc
+       (Identifier "f")
+       [ NormalParam (Identifier "text")
+       , DefaultParam (Identifier "caption") (Literal None)
+       ]
+       (Block
+          (CodeBlock
+             [ Ident (Identifier "text")
+             , If
+                 [ ( Equals (Ident (Identifier "caption")) (Literal None)
+                   , Block
+                       (Content
+                          [ Text "."
+                          , Code
+                              "typ/compiler/return-02.typ"
+                              ( line 7 , column 26 )
+                              (Return Nothing)
+                          ])
+                   )
+                 ]
+             , Block (Content [ Text "," , Space ])
+             , FuncCall
+                 (Ident (Identifier "emph"))
+                 [ NormalArg (Ident (Identifier "caption")) ]
+             , Block (Content [ Text "." ])
+             ])))
+, ParBreak
+, Code
+    "typ/compiler/return-02.typ"
+    ( line 13 , column 2 )
+    (FuncCall
+       (Ident (Identifier "f"))
+       [ KeyValArg
+           (Identifier "caption")
+           (Block (Content [ Text "with" , Space , Text "caption" ]))
+       , BlockArg [ Text "My" , Space , Text "figure" ]
+       ])
+, ParBreak
+, Code
+    "typ/compiler/return-02.typ"
+    ( line 15 , column 2 )
+    (FuncCall
+       (Ident (Identifier "f"))
+       [ BlockArg
+           [ Text "My" , Space , Text "other" , Space , Text "figure" ]
+       ])
+, ParBreak
+]
+"typ/compiler/return-02.typ" (line 13, column 2):
+unexpected end of input
+text is not an element function
diff --git a/test/typ/compiler/return-03.out b/test/typ/compiler/return-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/return-03.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/return-04.out b/test/typ/compiler/return-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/return-04.out
@@ -0,0 +1,101 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/return-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/return-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/return-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/return-04.typ"
+    ( line 3 , column 2 )
+    (LetFunc
+       (Identifier "sum")
+       [ SinkParam (Just (Identifier "args")) ]
+       (Block
+          (CodeBlock
+             [ Let (BasicBind (Just (Identifier "s"))) (Literal (Int 0))
+             , For
+                 (BasicBind (Just (Identifier "v")))
+                 (FuncCall
+                    (FieldAccess
+                       (Ident (Identifier "pos")) (Ident (Identifier "args")))
+                    [])
+                 (Block
+                    (CodeBlock
+                       [ Assign
+                           (Ident (Identifier "s"))
+                           (Plus (Ident (Identifier "s")) (Ident (Identifier "v")))
+                       ]))
+             , Ident (Identifier "s")
+             ])))
+, ParBreak
+, Code
+    "typ/compiler/return-04.typ"
+    ( line 11 , column 2 )
+    (LetFunc
+       (Identifier "f")
+       []
+       (Block
+          (CodeBlock
+             [ FuncCall
+                 (Ident (Identifier "sum"))
+                 [ SpreadArg (Return Nothing)
+                 , NormalArg (Literal (Int 1))
+                 , NormalArg (Literal (Int 2))
+                 , NormalArg (Literal (Int 3))
+                 ]
+             , Literal (String "nope")
+             ])))
+, ParBreak
+, Code
+    "typ/compiler/return-04.typ"
+    ( line 16 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (FuncCall (Ident (Identifier "f")) [])
+       , NormalArg (Literal (Int 6))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 parbreak(), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/return-05.out b/test/typ/compiler/return-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/return-05.out
@@ -0,0 +1,97 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/return-05.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/return-05.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/return-05.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/return-05.typ"
+    ( line 3 , column 2 )
+    (Let (BasicBind (Just (Identifier "x"))) (Literal (Int 3)))
+, SoftBreak
+, Code
+    "typ/compiler/return-05.typ"
+    ( line 4 , column 2 )
+    (LetFunc
+       (Identifier "f")
+       []
+       (Block
+          (Content
+             [ SoftBreak
+             , Text "Hello"
+             , Space
+             , Text "\128512"
+             , SoftBreak
+             , Code
+                 "typ/compiler/return-05.typ"
+                 ( line 6 , column 4 )
+                 (Return (Just (Literal (String "nope"))))
+             , SoftBreak
+             , Text "World"
+             , ParBreak
+             ])))
+, ParBreak
+, Code
+    "typ/compiler/return-05.typ"
+    ( line 10 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (FuncCall (Ident (Identifier "f")) [])
+       , NormalArg (Literal (String "nope"))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [❌(]), 
+                 text(body: [{ text(body: [
+Hello 😀
+]), 
+  text(body: [nope]), 
+  text(body: [
+World]), 
+  parbreak() }]), 
+                 text(body: [ /= ]), 
+                 text(body: ["nope"]), 
+                 text(body: [)]), 
+                 parbreak() })
diff --git a/test/typ/compiler/set-00.out b/test/typ/compiler/set-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/set-00.out
@@ -0,0 +1,66 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/set-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/set-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/set-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/set-00.typ"
+    ( line 3 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "x")))
+       (Block (Content [ Text "World" ])))
+, SoftBreak
+, Text "Hello"
+, Space
+, Strong
+    [ Code
+        "typ/compiler/set-00.typ"
+        ( line 4 , column 9 )
+        (Ident (Identifier "x"))
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+Hello ]), 
+                 strong(body: text(body: [World])), 
+                 parbreak() })
diff --git a/test/typ/compiler/set-01.out b/test/typ/compiler/set-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/set-01.out
@@ -0,0 +1,113 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/set-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/set-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/set-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/set-01.typ"
+    ( line 3 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "fruit")))
+       (Block
+          (Content
+             [ SoftBreak
+             , BulletListItem [ Text "Apple" ]
+             , SoftBreak
+             , BulletListItem [ Text "Orange" ]
+             , SoftBreak
+             , Code
+                 "typ/compiler/set-01.typ"
+                 ( line 6 , column 4 )
+                 (FuncCall
+                    (Ident (Identifier "list"))
+                    [ KeyValArg (Identifier "body-indent") (Literal (Numeric 20.0 Pt))
+                    , BlockArg [ Text "Pear" ]
+                    ])
+             , ParBreak
+             ])))
+, ParBreak
+, BulletListItem [ Text "Fruit" ]
+, SoftBreak
+, Code
+    "typ/compiler/set-01.typ"
+    ( line 10 , column 2 )
+    (Block
+       (Content
+          [ Code
+              "typ/compiler/set-01.typ"
+              ( line 10 , column 4 )
+              (Set
+                 (Ident (Identifier "list"))
+                 [ KeyValArg (Identifier "indent") (Literal (Numeric 10.0 Pt)) ])
+          , SoftBreak
+          , Code
+              "typ/compiler/set-01.typ"
+              ( line 11 , column 3 )
+              (Ident (Identifier "fruit"))
+          ]))
+, SoftBreak
+, BulletListItem
+    [ Text "No"
+    , Space
+    , Text "more"
+    , Space
+    , Text "fruit"
+    , ParBreak
+    ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 list(children: (text(body: [Fruit]))), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 list(children: (text(body: [Apple]), 
+                                 text(body: [Orange]))), 
+                 list(body-indent: 20.0pt, 
+                      children: (text(body: [Pear]))), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 list(children: ({ text(body: [No more fruit]), 
+                                   parbreak() }), 
+                      indent: 10.0pt) })
diff --git a/test/typ/compiler/set-02.out b/test/typ/compiler/set-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/set-02.out
@@ -0,0 +1,115 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/set-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/set-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/set-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/compiler/set-02.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "block"))
+       [ KeyValArg (Identifier "spacing") (Literal (Numeric 4.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/compiler/set-02.typ"
+    ( line 5 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "style") (Literal (String "italic"))
+       , KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/set-02.typ"
+    ( line 6 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "x")))
+       (Block
+          (Content
+             [ Text "And"
+             , Space
+             , Text "the"
+             , Space
+             , Text "red"
+             , Space
+             , Code
+                 "typ/compiler/set-02.typ"
+                 ( line 6 , column 24 )
+                 (FuncCall (Ident (Identifier "parbreak")) [])
+             , Space
+             , Text "lay"
+             , Space
+             , Text "silent!"
+             ])))
+, SoftBreak
+, Code
+    "typ/compiler/set-02.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "fill") (Ident (Identifier "red"))
+       , NormalArg (Ident (Identifier "x"))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+], 
+                      fill: rgb(13%,61%,67%,100%), 
+                      style: "italic"), 
+                 text(body: [
+], 
+                      fill: rgb(13%,61%,67%,100%), 
+                      style: "italic"), 
+                 text(body: { text(body: [And the red ], 
+                                   fill: rgb(13%,61%,67%,100%), 
+                                   style: "italic"), 
+                              parbreak(), 
+                              text(body: [ lay silent!], 
+                                   fill: rgb(13%,61%,67%,100%), 
+                                   style: "italic") }, 
+                      fill: rgb(100%,25%,21%,100%), 
+                      style: "italic"), 
+                 parbreak() })
diff --git a/test/typ/compiler/set-03.out b/test/typ/compiler/set-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/set-03.out
@@ -0,0 +1,69 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/set-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/set-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/set-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/set-03.typ"
+    ( line 3 , column 2 )
+    (Block
+       (CodeBlock
+          [ If
+              [ ( Literal (Boolean True)
+                , Block
+                    (CodeBlock
+                       [ Set
+                           (Ident (Identifier "text"))
+                           [ NormalArg (Ident (Identifier "blue")) ]
+                       , Block (Content [ Text "Blue" , Space ])
+                       ])
+                )
+              ]
+          , Block (Content [ Text "Not" , Space , Text "blue" ])
+          ]))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [Blue ], 
+                      color: rgb(0%,45%,85%,100%)), 
+                 text(body: [Not blue]), 
+                 parbreak() })
diff --git a/test/typ/compiler/set-04.out b/test/typ/compiler/set-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/set-04.out
@@ -0,0 +1,103 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/set-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/set-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/set-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/set-04.typ"
+    ( line 3 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "choice")))
+       (Array
+          [ Reg (Literal (String "monkey.svg"))
+          , Reg (Literal (String "rhino.png"))
+          , Reg (Literal (String "tiger.jpg"))
+          ]))
+, SoftBreak
+, Code
+    "typ/compiler/set-04.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "enum"))
+       [ KeyValArg
+           (Identifier "numbering")
+           (FuncExpr
+              [ NormalParam (Identifier "n") ]
+              (Block
+                 (CodeBlock
+                    [ Let
+                        (BasicBind (Just (Identifier "path")))
+                        (Plus
+                           (Literal (String "/"))
+                           (FuncCall
+                              (FieldAccess
+                                 (Ident (Identifier "at")) (Ident (Identifier "choice")))
+                              [ NormalArg (Minus (Ident (Identifier "n")) (Literal (Int 1))) ]))
+                    , FuncCall
+                        (Ident (Identifier "move"))
+                        [ KeyValArg (Identifier "dy") (Negated (Literal (Numeric 0.15 Em)))
+                        , NormalArg
+                            (FuncCall
+                               (Ident (Identifier "image"))
+                               [ NormalArg (Ident (Identifier "path"))
+                               , KeyValArg (Identifier "width") (Literal (Numeric 1.0 Em))
+                               , KeyValArg (Identifier "height") (Literal (Numeric 1.0 Em))
+                               ])
+                        ]
+                    ])))
+       ])
+, ParBreak
+, EnumListItem Nothing [ Text "Monkey" ]
+, SoftBreak
+, EnumListItem Nothing [ Text "Rhino" ]
+, SoftBreak
+, EnumListItem Nothing [ Text "Tiger" , ParBreak ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 enum(children: (text(body: [Monkey]), 
+                                 text(body: [Rhino]), 
+                                 { text(body: [Tiger]), 
+                                   parbreak() }), 
+                      numbering: ) })
diff --git a/test/typ/compiler/set-05.out b/test/typ/compiler/set-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/set-05.out
@@ -0,0 +1,88 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/set-05.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/set-05.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/set-05.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/set-05.typ"
+    ( line 3 , column 2 )
+    (Show
+       (Just (Ident (Identifier "ref")))
+       (FuncExpr
+          [ NormalParam (Identifier "it") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals
+                          (FieldAccess
+                             (Ident (Identifier "target")) (Ident (Identifier "it")))
+                          (Label "unknown")
+                      , Set
+                          (Ident (Identifier "text"))
+                          [ NormalArg (Ident (Identifier "red")) ]
+                      )
+                    ]
+                , Plus
+                    (Literal (String "@"))
+                    (FuncCall
+                       (Ident (Identifier "str"))
+                       [ NormalArg
+                           (FieldAccess
+                              (Ident (Identifier "target")) (Ident (Identifier "it")))
+                       ])
+                ]))))
+, ParBreak
+, Ref "hello" (Literal Auto)
+, Space
+, Text "from"
+, Space
+, Text "the"
+, Space
+, Ref "unknown" (Literal Auto)
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [@<hello>]), 
+                 text(body: [ from the ]), 
+                 text(body: [@<unknown>]), 
+                 parbreak() })
diff --git a/test/typ/compiler/set-06.out b/test/typ/compiler/set-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/set-06.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/set-07.out b/test/typ/compiler/set-07.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/set-07.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/shorthand-00.out b/test/typ/compiler/shorthand-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/shorthand-00.out
@@ -0,0 +1,59 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/shorthand-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/shorthand-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/shorthand-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Text "The"
+, Space
+, Text "non"
+, Text "-"
+, Text "breaking"
+, Nbsp
+, Text "space"
+, Space
+, Text "does"
+, Space
+, Text "work"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+The non-breaking space does work.]), 
+                 parbreak() })
diff --git a/test/typ/compiler/shorthand-01.out b/test/typ/compiler/shorthand-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/shorthand-01.out
@@ -0,0 +1,73 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/shorthand-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/shorthand-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/shorthand-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Comment
+, Code
+    "typ/compiler/shorthand-01.typ"
+    ( line 5 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg
+           (Identifier "font") (Literal (String "New Computer Modern"))
+       ])
+, SoftBreak
+, Text "a"
+, Space
+, Text "b"
+, Space
+, HardBreak
+, Text "a"
+, Nbsp
+, Text "b"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+a b ], 
+                      font: "New Computer Modern"), 
+                 linebreak(), 
+                 text(body: [a b], 
+                      font: "New Computer Modern"), 
+                 parbreak() })
diff --git a/test/typ/compiler/shorthand-02.out b/test/typ/compiler/shorthand-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/shorthand-02.out
@@ -0,0 +1,60 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/shorthand-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/shorthand-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/shorthand-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, BulletListItem
+    [ Text "En" , Space , Text "dash" , Text ":" , Space , EnDash ]
+, SoftBreak
+, BulletListItem
+    [ Text "Em"
+    , Space
+    , Text "dash"
+    , Text ":"
+    , Space
+    , EmDash
+    , ParBreak
+    ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 list(children: (text(body: [En dash: –]), 
+                                 { text(body: [Em dash: —]), 
+                                   parbreak() })) })
diff --git a/test/typ/compiler/shorthand-03.out b/test/typ/compiler/shorthand-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/shorthand-03.out
@@ -0,0 +1,68 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/shorthand-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/shorthand-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/shorthand-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/compiler/shorthand-03.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "font") (Literal (String "Roboto")) ])
+, SoftBreak
+, Text "A"
+, Ellipsis
+, Space
+, Text "vs"
+, Space
+, Code
+    "typ/compiler/shorthand-03.typ"
+    ( line 3 , column 10 )
+    (Literal (String "A..."))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+A… vs ], 
+                      font: "Roboto"), 
+                 text(body: [A...], 
+                      font: "Roboto"), 
+                 parbreak() })
diff --git a/test/typ/compiler/show-bare-00.out b/test/typ/compiler/show-bare-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/show-bare-00.out
@@ -0,0 +1,194 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/show-bare-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/show-bare-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/show-bare-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/compiler/show-bare-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 130.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/compiler/show-bare-00.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ NormalArg (Literal (Numeric 0.7 Em)) ])
+, ParBreak
+, Code
+    "typ/compiler/show-bare-00.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "align"))
+       [ NormalArg (Ident (Identifier "center"))
+       , BlockArg
+           [ SoftBreak
+           , Code
+               "typ/compiler/show-bare-00.typ"
+               ( line 6 , column 4 )
+               (FuncCall
+                  (Ident (Identifier "text"))
+                  [ NormalArg (Literal (Numeric 1.3 Em))
+                  , BlockArg
+                      [ Strong
+                          [ Text "Essay" , Space , Text "on" , Space , Text "typography" ]
+                      ]
+                  ])
+           , Space
+           , HardBreak
+           , Text "T"
+           , Text "."
+           , Space
+           , Text "Ypst"
+           , ParBreak
+           ]
+       ])
+, ParBreak
+, Code
+    "typ/compiler/show-bare-00.typ"
+    ( line 10 , column 2 )
+    (Show
+       Nothing
+       (FuncCall
+          (FieldAccess
+             (Ident (Identifier "with")) (Ident (Identifier "columns")))
+          [ NormalArg (Literal (Int 2)) ]))
+, SoftBreak
+, Text "Great"
+, Space
+, Text "typography"
+, Space
+, Text "is"
+, Space
+, Text "at"
+, Space
+, Text "the"
+, Space
+, Text "essence"
+, Space
+, Text "of"
+, Space
+, Text "great"
+, Space
+, Text "storytelling"
+, Text "."
+, Space
+, Text "It"
+, Space
+, Text "is"
+, Space
+, Text "the"
+, Space
+, Text "medium"
+, Space
+, Text "that"
+, SoftBreak
+, Text "transports"
+, Space
+, Text "meaning"
+, Space
+, Text "from"
+, Space
+, Text "parchment"
+, Space
+, Text "to"
+, Space
+, Text "reader,"
+, Space
+, Text "the"
+, Space
+, Text "wave"
+, Space
+, Text "that"
+, Space
+, Text "sparks"
+, Space
+, Text "a"
+, Space
+, Text "flame"
+, SoftBreak
+, Text "in"
+, Space
+, Text "booklovers"
+, Space
+, Text "and"
+, Space
+, Text "the"
+, Space
+, Text "great"
+, Space
+, Text "fulfiller"
+, Space
+, Text "of"
+, Space
+, Text "human"
+, Space
+, Text "need"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 align(alignment: center, 
+                       body: { text(body: [
+], 
+                                    size: 0.7em), 
+                               text(body: strong(body: text(body: [Essay on typography], 
+                                                            size: 0.7em)), 
+                                    size: 1.3em), 
+                               text(body: [ ], 
+                                    size: 0.7em), 
+                               linebreak(), 
+                               text(body: [T. Ypst], 
+                                    size: 0.7em), 
+                               parbreak() }), 
+                 parbreak(), 
+                 columns(body: { text(body: [
+Great typography is at the essence of great storytelling. It is the medium that
+transports meaning from parchment to reader, the wave that sparks a flame
+in booklovers and the great fulfiller of human need.], 
+                                      size: 0.7em), 
+                                 parbreak() }, 
+                         count: 2) })
diff --git a/test/typ/compiler/show-bare-01.out b/test/typ/compiler/show-bare-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/show-bare-01.out
@@ -0,0 +1,84 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/show-bare-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/show-bare-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/show-bare-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "A"
+, Space
+, Code
+    "typ/compiler/show-bare-01.typ"
+    ( line 3 , column 4 )
+    (Block
+       (Content
+          [ Emph
+              [ Text "B"
+              , Space
+              , Code
+                  "typ/compiler/show-bare-01.typ"
+                  ( line 3 , column 9 )
+                  (Show
+                     Nothing
+                     (FuncExpr
+                        [ NormalParam (Identifier "c") ]
+                        (Block
+                           (Content
+                              [ Strong
+                                  [ Code
+                                      "typ/compiler/show-bare-01.typ"
+                                      ( line 3 , column 23 )
+                                      (Ident (Identifier "c"))
+                                  ]
+                              ]))))
+              , Space
+              , Text "C"
+              ]
+          ]))
+, Space
+, Text "D"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [A ]), 
+                 emph(body: { text(body: [B ]), 
+                              strong(body: text(body: [ C])) }), 
+                 text(body: [ D]), 
+                 parbreak() })
diff --git a/test/typ/compiler/show-bare-02.out b/test/typ/compiler/show-bare-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/show-bare-02.out
@@ -0,0 +1,77 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/show-bare-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/show-bare-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/show-bare-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/show-bare-02.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
+       , KeyValArg (Identifier "size") (Literal (Numeric 1.5 Em))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/show-bare-02.typ"
+    ( line 4 , column 2 )
+    (Show
+       Nothing
+       (FuncCall
+          (FieldAccess
+             (Ident (Identifier "with")) (Ident (Identifier "text")))
+          [ KeyValArg (Identifier "fill") (Ident (Identifier "red")) ]))
+, SoftBreak
+, Text "Forest"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+], 
+                      fill: rgb(13%,61%,67%,100%), 
+                      size: 1.5em), 
+                 text(body: { text(body: [
+Forest], 
+                                   fill: rgb(13%,61%,67%,100%), 
+                                   size: 1.5em), 
+                              parbreak() }, 
+                      fill: rgb(100%,25%,21%,100%)) })
diff --git a/test/typ/compiler/show-bare-03.out b/test/typ/compiler/show-bare-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/show-bare-03.out
@@ -0,0 +1,53 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/show-bare-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/show-bare-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/show-bare-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/compiler/show-bare-03.typ"
+    ( line 2 , column 2 )
+    (Show Nothing (Block (Content [ Text "Shown" ])))
+, SoftBreak
+, Text "Ignored"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [Shown]) })
diff --git a/test/typ/compiler/show-bare-04.out b/test/typ/compiler/show-bare-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/show-bare-04.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/show-bare-05.out b/test/typ/compiler/show-bare-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/show-bare-05.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/show-bare-06.out b/test/typ/compiler/show-bare-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/show-bare-06.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/show-node-00.out b/test/typ/compiler/show-node-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/show-node-00.out
@@ -0,0 +1,83 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/show-node-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/show-node-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/show-node-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/show-node-00.typ"
+    ( line 3 , column 2 )
+    (Show
+       (Just (Ident (Identifier "list")))
+       (FuncExpr
+          [ NormalParam (Identifier "it") ]
+          (Plus
+             (Plus
+                (Literal (String "("))
+                (FuncCall
+                   (FieldAccess
+                      (Ident (Identifier "join"))
+                      (FuncCall
+                         (FieldAccess
+                            (Ident (Identifier "map"))
+                            (FieldAccess
+                               (Ident (Identifier "children")) (Ident (Identifier "it"))))
+                         [ NormalArg
+                             (FuncExpr
+                                [ NormalParam (Identifier "v") ]
+                                (FieldAccess (Ident (Identifier "body")) (Ident (Identifier "v"))))
+                         ]))
+                   [ NormalArg (Literal (String ", ")) ]))
+             (Literal (String ")")))))
+, ParBreak
+, BulletListItem
+    [ Text "A"
+    , SoftBreak
+    , BulletListItem [ Text "B" ]
+    , SoftBreak
+    , BulletListItem [ Text "C" ]
+    ]
+, SoftBreak
+, BulletListItem [ Text "D" ]
+, SoftBreak
+, BulletListItem [ Text "E" , ParBreak ]
+]
+"typ/compiler/show-node-00.typ" (line 3, column 2):
+unexpected end of input
+Content does not have a method "body" or FieldAccess requires a dictionary
diff --git a/test/typ/compiler/show-node-01.out b/test/typ/compiler/show-node-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/show-node-01.out
@@ -0,0 +1,80 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/show-node-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/show-node-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/show-node-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/show-node-01.typ"
+    ( line 3 , column 2 )
+    (Show
+       (Just (Ident (Identifier "heading")))
+       (Block (Content [ Text "B" ])))
+, SoftBreak
+, Code
+    "typ/compiler/show-node-01.typ"
+    ( line 4 , column 2 )
+    (Show
+       (Just (Ident (Identifier "heading")))
+       (Set
+          (Ident (Identifier "text"))
+          [ KeyValArg (Identifier "size") (Literal (Numeric 10.0 Pt))
+          , KeyValArg (Identifier "weight") (Literal (Int 400))
+          ]))
+, SoftBreak
+, Text "A"
+, Space
+, Code
+    "typ/compiler/show-node-01.typ"
+    ( line 5 , column 4 )
+    (Block (Content [ Heading 1 [ Text "Heading" ] ]))
+, Space
+, Text "C"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+A ]), 
+                 text(body: [B]), 
+                 text(body: [ C]), 
+                 parbreak() })
diff --git a/test/typ/compiler/show-node-02.out b/test/typ/compiler/show-node-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/show-node-02.out
@@ -0,0 +1,78 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/show-node-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/show-node-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/show-node-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/show-node-02.typ"
+    ( line 3 , column 2 )
+    (Show (Just (Ident (Identifier "heading"))) (Literal None))
+, ParBreak
+, Text "Where"
+, Space
+, Text "is"
+, SoftBreak
+, Heading
+    1
+    [ Text "There"
+    , Space
+    , Text "are"
+    , Space
+    , Text "no"
+    , Space
+    , Text "headings"
+    , Space
+    , Text "around"
+    , Space
+    , Text "here!"
+    ]
+, Text "my"
+, Space
+, Text "heading?"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [Where is
+]), 
+                 text(body: [my heading?]), 
+                 parbreak() })
diff --git a/test/typ/compiler/show-node-03.out b/test/typ/compiler/show-node-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/show-node-03.out
@@ -0,0 +1,159 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/show-node-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/show-node-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/show-node-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/show-node-03.typ"
+    ( line 3 , column 2 )
+    (Show
+       (Just (Ident (Identifier "heading")))
+       (FuncExpr
+          [ NormalParam (Identifier "it") ]
+          (FuncCall
+             (Ident (Identifier "block"))
+             [ NormalArg
+                 (Block
+                    (CodeBlock
+                       [ Set
+                           (Ident (Identifier "text"))
+                           [ NormalArg (Literal (Numeric 10.0 Pt)) ]
+                       , FuncCall
+                           (Ident (Identifier "box"))
+                           [ NormalArg
+                               (FuncCall
+                                  (Ident (Identifier "move"))
+                                  [ KeyValArg (Identifier "dy") (Negated (Literal (Numeric 1.0 Pt)))
+                                  , BlockArg [ Text "\128214" ]
+                                  ])
+                           ]
+                       , FuncCall
+                           (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 5.0 Pt)) ]
+                       , If
+                           [ ( Equals
+                                 (FieldAccess
+                                    (Ident (Identifier "level")) (Ident (Identifier "it")))
+                                 (Literal (Int 1))
+                             , Block
+                                 (CodeBlock
+                                    [ FuncCall
+                                        (Ident (Identifier "underline"))
+                                        [ NormalArg
+                                            (FuncCall
+                                               (Ident (Identifier "text"))
+                                               [ NormalArg (Literal (Numeric 1.25 Em))
+                                               , NormalArg (Ident (Identifier "blue"))
+                                               , NormalArg
+                                                   (FieldAccess
+                                                      (Ident (Identifier "body"))
+                                                      (Ident (Identifier "it")))
+                                               ])
+                                        ]
+                                    ])
+                             )
+                           , ( Literal (Boolean True)
+                             , Block
+                                 (CodeBlock
+                                    [ FuncCall
+                                        (Ident (Identifier "text"))
+                                        [ NormalArg (Ident (Identifier "red"))
+                                        , NormalArg
+                                            (FieldAccess
+                                               (Ident (Identifier "body"))
+                                               (Ident (Identifier "it")))
+                                        ]
+                                    ])
+                             )
+                           ]
+                       ]))
+             ])))
+, ParBreak
+, Heading 1 [ Text "Task" , Space , Text "1" ]
+, Text "Some"
+, Space
+, Text "text"
+, Text "."
+, ParBreak
+, Heading 2 [ Text "Subtask" ]
+, Text "Some"
+, Space
+, Text "more"
+, Space
+, Text "text"
+, Text "."
+, ParBreak
+, Heading 1 [ Text "Task" , Space , Text "2" ]
+, Text "Another"
+, Space
+, Text "text"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 block(body: { box(body: move(body: text(body: [📖], 
+                                                         size: 10.0pt), 
+                                              dy: -1.0pt)), 
+                               h(amount: 5.0pt), 
+                               underline(body: text(body: text(body: [Task 1]), 
+                                                    color: rgb(0%,45%,85%,100%), 
+                                                    size: 1.25em)) }), 
+                 text(body: [Some text.]), 
+                 parbreak(), 
+                 block(body: { box(body: move(body: text(body: [📖], 
+                                                         size: 10.0pt), 
+                                              dy: -1.0pt)), 
+                               h(amount: 5.0pt), 
+                               text(body: text(body: [Subtask]), 
+                                    color: rgb(100%,25%,21%,100%), 
+                                    size: 10.0pt) }), 
+                 text(body: [Some more text.]), 
+                 parbreak(), 
+                 block(body: { box(body: move(body: text(body: [📖], 
+                                                         size: 10.0pt), 
+                                              dy: -1.0pt)), 
+                               h(amount: 5.0pt), 
+                               underline(body: text(body: text(body: [Task 2]), 
+                                                    color: rgb(0%,45%,85%,100%), 
+                                                    size: 1.25em)) }), 
+                 text(body: [Another text.]), 
+                 parbreak() })
diff --git a/test/typ/compiler/show-node-04.out b/test/typ/compiler/show-node-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/show-node-04.out
@@ -0,0 +1,70 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/show-node-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/show-node-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/show-node-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/show-node-04.typ"
+    ( line 3 , column 2 )
+    (Show
+       (Just (Ident (Identifier "heading")))
+       (FuncExpr
+          [ NormalParam (Identifier "it") ]
+          (Block
+             (CodeBlock
+                [ Set
+                    (Ident (Identifier "text"))
+                    [ NormalArg (Ident (Identifier "red")) ]
+                , Show
+                    (Just (Literal (String "ding")))
+                    (Block (Content [ Text "\128718" ]))
+                , FieldAccess (Ident (Identifier "body")) (Ident (Identifier "it"))
+                ]))))
+, ParBreak
+, Heading 1 [ Text "Heading" ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 text(body: { [Hea], 
+                              text(body: [🛎], 
+                                   color: rgb(100%,25%,21%,100%)), 
+                              [] }) })
diff --git a/test/typ/compiler/show-node-05.typ b/test/typ/compiler/show-node-05.typ
deleted file mode 100644
--- a/test/typ/compiler/show-node-05.typ
+++ /dev/null
@@ -1,16 +0,0 @@
-// Test that scoping works as expected.
-#{
-  let world = [ World ]
-  show "W": strong
-  world
-  {
-    set text(blue)
-    show: it => {
-      show "o": "Ø"
-      it
-    }
-    world
-  }
-  world
-}
-
diff --git a/test/typ/compiler/show-node-06.out b/test/typ/compiler/show-node-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/show-node-06.out
@@ -0,0 +1,56 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/show-node-06.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/show-node-06.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/show-node-06.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/compiler/show-node-06.typ"
+    ( line 2 , column 2 )
+    (Show
+       (Just (Ident (Identifier "heading")))
+       (Block (Content [ Text "1234" ])))
+, SoftBreak
+, Heading 1 [ Text "Heading" ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [1234]) })
diff --git a/test/typ/compiler/show-node-07.out b/test/typ/compiler/show-node-07.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/show-node-07.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/show-node-08.out b/test/typ/compiler/show-node-08.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/show-node-08.out
@@ -0,0 +1,55 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/show-node-08.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/show-node-08.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/show-node-08.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/compiler/show-node-08.typ"
+    ( line 2 , column 2 )
+    (Show (Just (Ident (Identifier "text"))) (Literal None))
+, SoftBreak
+, Text "Hey"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+Hey]), 
+                 parbreak() })
diff --git a/test/typ/compiler/show-node-09.out b/test/typ/compiler/show-node-09.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/show-node-09.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/show-node-10.out b/test/typ/compiler/show-node-10.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/show-node-10.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/show-node-11.out b/test/typ/compiler/show-node-11.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/show-node-11.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/show-node-12.out b/test/typ/compiler/show-node-12.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/show-node-12.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/show-recursive-00.out b/test/typ/compiler/show-recursive-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/show-recursive-00.out
@@ -0,0 +1,59 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/show-recursive-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/show-recursive-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/show-recursive-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/show-recursive-00.typ"
+    ( line 3 , column 2 )
+    (Show
+       (Just (Ident (Identifier "heading")))
+       (FuncExpr
+          [ NormalParam (Identifier "it") ] (Ident (Identifier "it"))))
+, SoftBreak
+, Heading 1 [ Text "Heading" ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 heading(body: text(body: [Heading]), 
+                         level: 1) })
diff --git a/test/typ/compiler/show-recursive-01.out b/test/typ/compiler/show-recursive-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/show-recursive-01.out
@@ -0,0 +1,86 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/show-recursive-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/show-recursive-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/show-recursive-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/show-recursive-01.typ"
+    ( line 3 , column 2 )
+    (Show
+       (Just (Ident (Identifier "list")))
+       (FuncCall
+          (FieldAccess
+             (Ident (Identifier "with")) (Ident (Identifier "scale")))
+          [ KeyValArg (Identifier "origin") (Ident (Identifier "left"))
+          , KeyValArg (Identifier "x") (Literal (Numeric 80.0 Percent))
+          ]))
+, SoftBreak
+, Code
+    "typ/compiler/show-recursive-01.typ"
+    ( line 4 , column 2 )
+    (Show (Just (Ident (Identifier "heading"))) (Block (Content [])))
+, SoftBreak
+, Code
+    "typ/compiler/show-recursive-01.typ"
+    ( line 5 , column 2 )
+    (Show (Just (Ident (Identifier "enum"))) (Block (Content [])))
+, SoftBreak
+, BulletListItem [ Text "Actual" ]
+, SoftBreak
+, BulletListItem [ Text "Tight" ]
+, SoftBreak
+, BulletListItem [ Text "List" ]
+, SoftBreak
+, Heading 1 [ Text "Nope" ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 scale(body: list(children: (text(body: [Actual]), 
+                                             text(body: [Tight]), 
+                                             text(body: [List]))), 
+                       origin: left, 
+                       x: 80%) })
diff --git a/test/typ/compiler/show-recursive-02.out b/test/typ/compiler/show-recursive-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/show-recursive-02.out
@@ -0,0 +1,132 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/show-recursive-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/show-recursive-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/show-recursive-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/show-recursive-02.typ"
+    ( line 3 , column 2 )
+    (LetFunc
+       (Identifier "starwars")
+       [ NormalParam (Identifier "body") ]
+       (Block
+          (CodeBlock
+             [ Show
+                 (Just (Ident (Identifier "list")))
+                 (FuncExpr
+                    [ NormalParam (Identifier "it") ]
+                    (FuncCall
+                       (Ident (Identifier "block"))
+                       [ NormalArg
+                           (Block
+                              (CodeBlock
+                                 [ FuncCall
+                                     (Ident (Identifier "stack"))
+                                     [ KeyValArg (Identifier "dir") (Ident (Identifier "ltr"))
+                                     , NormalArg
+                                         (FuncCall
+                                            (Ident (Identifier "text"))
+                                            [ NormalArg (Ident (Identifier "red"))
+                                            , NormalArg (Ident (Identifier "it"))
+                                            ])
+                                     , NormalArg (Literal (Numeric 1.0 Fr))
+                                     , NormalArg
+                                         (FuncCall
+                                            (Ident (Identifier "scale"))
+                                            [ KeyValArg
+                                                (Identifier "x")
+                                                (Negated (Literal (Numeric 100.0 Percent)))
+                                            , NormalArg
+                                                (FuncCall
+                                                   (Ident (Identifier "text"))
+                                                   [ NormalArg (Ident (Identifier "blue"))
+                                                   , NormalArg (Ident (Identifier "it"))
+                                                   ])
+                                            ])
+                                     ]
+                                 ]))
+                       ]))
+             , Ident (Identifier "body")
+             ])))
+, ParBreak
+, BulletListItem
+    [ Text "Normal" , Space , Text "list" , SoftBreak ]
+, SoftBreak
+, Code
+    "typ/compiler/show-recursive-02.typ"
+    ( line 16 , column 2 )
+    (FuncCall
+       (Ident (Identifier "starwars"))
+       [ BlockArg
+           [ SoftBreak
+           , BulletListItem [ Text "Star" ]
+           , SoftBreak
+           , BulletListItem [ Text "Wars" ]
+           , SoftBreak
+           , BulletListItem [ Text "List" , ParBreak ]
+           ]
+       ])
+, ParBreak
+, BulletListItem [ Text "Normal" , Space , Text "list" , ParBreak ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 list(children: (text(body: [Normal list
+]))), 
+                 text(body: [
+]), 
+                 block(body: stack(children: (text(body: list(children: (text(body: [Star]), 
+                                                                         text(body: [Wars]), 
+                                                                         { text(body: [List]), 
+                                                                           parbreak() })), 
+                                                   color: rgb(100%,25%,21%,100%)), 
+                                              1.0fr, 
+                                              scale(body: text(body: list(children: (text(body: [Star]), 
+                                                                                     text(body: [Wars]), 
+                                                                                     { text(body: [List]), 
+                                                                                       parbreak() })), 
+                                                               color: rgb(0%,45%,85%,100%)), 
+                                                    x: -100%)), 
+                                   dir: ltr)), 
+                 parbreak(), 
+                 list(children: ({ text(body: [Normal list]), 
+                                   parbreak() })) })
diff --git a/test/typ/compiler/show-recursive-03.out b/test/typ/compiler/show-recursive-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/show-recursive-03.out
@@ -0,0 +1,104 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/show-recursive-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/show-recursive-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/show-recursive-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Comment
+, Comment
+, Code
+    "typ/compiler/show-recursive-03.typ"
+    ( line 6 , column 2 )
+    (Set
+       (Ident (Identifier "rect"))
+       [ KeyValArg (Identifier "inset") (Literal (Numeric 3.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/compiler/show-recursive-03.typ"
+    ( line 7 , column 2 )
+    (Show
+       (Just (Ident (Identifier "list")))
+       (FuncCall
+          (FieldAccess
+             (Ident (Identifier "with")) (Ident (Identifier "rect")))
+          [ KeyValArg (Identifier "stroke") (Ident (Identifier "blue")) ]))
+, SoftBreak
+, Code
+    "typ/compiler/show-recursive-03.typ"
+    ( line 8 , column 2 )
+    (Show
+       (Just (Ident (Identifier "list")))
+       (FuncCall
+          (FieldAccess
+             (Ident (Identifier "with")) (Ident (Identifier "rect")))
+          [ KeyValArg (Identifier "stroke") (Ident (Identifier "red")) ]))
+, SoftBreak
+, Code
+    "typ/compiler/show-recursive-03.typ"
+    ( line 9 , column 2 )
+    (Show
+       (Just (Ident (Identifier "list"))) (Ident (Identifier "block")))
+, ParBreak
+, BulletListItem
+    [ Text "List"
+    , SoftBreak
+    , BulletListItem [ Text "Nested" ]
+    , SoftBreak
+    , BulletListItem [ Text "List" ]
+    ]
+, SoftBreak
+, BulletListItem [ Text "Recursive!" , ParBreak ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 block(body: list(children: ({ text(body: [List
+]), 
+                                               block(body: list(children: (text(body: [Nested]), 
+                                                                           text(body: [List])))) }, 
+                                             { text(body: [Recursive!]), 
+                                               parbreak() }))) })
diff --git a/test/typ/compiler/show-recursive-03.typ b/test/typ/compiler/show-recursive-03.typ
--- a/test/typ/compiler/show-recursive-03.typ
+++ b/test/typ/compiler/show-recursive-03.typ
@@ -1,4 +1,7 @@
 // Test multi-recursion with nested lists.
+// Note to self: the problem here is that the block is applied first,
+// and then the others don't match because we're not looking recursively in
+// the result of applying the show rule...
 #set rect(inset: 3pt)
 #show list: rect.with(stroke: blue)
 #show list: rect.with(stroke: red)
diff --git a/test/typ/compiler/show-selector-00.out b/test/typ/compiler/show-selector-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/show-selector-00.out
@@ -0,0 +1,212 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/show-selector-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/show-selector-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/show-selector-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/show-selector-00.typ"
+    ( line 3 , column 2 )
+    (Show
+       (Just
+          (FuncCall
+             (FieldAccess
+                (Ident (Identifier "where")) (Ident (Identifier "raw")))
+             [ KeyValArg (Identifier "block") (Literal (Boolean False)) ]))
+       (FuncCall
+          (FieldAccess
+             (Ident (Identifier "with")) (Ident (Identifier "box")))
+          [ KeyValArg (Identifier "radius") (Literal (Numeric 2.0 Pt))
+          , KeyValArg
+              (Identifier "outset")
+              (Dict
+                 [ Reg ( Ident (Identifier "y") , Literal (Numeric 2.5 Pt) ) ])
+          , KeyValArg
+              (Identifier "inset")
+              (Dict
+                 [ Reg ( Ident (Identifier "x") , Literal (Numeric 3.0 Pt) )
+                 , Reg ( Ident (Identifier "y") , Literal (Numeric 0.0 Pt) )
+                 ])
+          , KeyValArg
+              (Identifier "fill")
+              (FuncCall
+                 (Ident (Identifier "luma")) [ NormalArg (Literal (Int 230)) ])
+          ]))
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/show-selector-00.typ"
+    ( line 11 , column 2 )
+    (Show
+       (Just
+          (FuncCall
+             (FieldAccess
+                (Ident (Identifier "where")) (Ident (Identifier "raw")))
+             [ KeyValArg (Identifier "block") (Literal (Boolean True)) ]))
+       (FuncCall
+          (FieldAccess
+             (Ident (Identifier "with")) (Ident (Identifier "block")))
+          [ KeyValArg
+              (Identifier "outset") (Negated (Literal (Numeric 3.0 Pt)))
+          , KeyValArg (Identifier "inset") (Literal (Numeric 11.0 Pt))
+          , KeyValArg
+              (Identifier "fill")
+              (FuncCall
+                 (Ident (Identifier "luma")) [ NormalArg (Literal (Int 230)) ])
+          , KeyValArg
+              (Identifier "stroke")
+              (Dict
+                 [ Reg
+                     ( Ident (Identifier "left")
+                     , Plus
+                         (Literal (Numeric 1.5 Pt))
+                         (FuncCall
+                            (Ident (Identifier "luma")) [ NormalArg (Literal (Int 180)) ])
+                     )
+                 ])
+          ]))
+, ParBreak
+, Code
+    "typ/compiler/show-selector-00.typ"
+    ( line 18 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg
+           (Identifier "margin")
+           (Dict
+              [ Reg ( Ident (Identifier "top") , Literal (Numeric 12.0 Pt) ) ])
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/show-selector-00.typ"
+    ( line 19 , column 2 )
+    (Set
+       (Ident (Identifier "par"))
+       [ KeyValArg (Identifier "justify") (Literal (Boolean True)) ])
+, ParBreak
+, Text "This"
+, Space
+, Text "code"
+, Space
+, Text "tests"
+, Space
+, RawInline "code"
+, SoftBreak
+, Text "with"
+, Space
+, Text "selectors"
+, Space
+, Text "and"
+, Space
+, Text "justification"
+, Text "."
+, ParBreak
+, RawBlock "rs" "code!(\"it\");\n"
+, ParBreak
+, Text "You"
+, Space
+, Text "can"
+, Space
+, Text "use"
+, Space
+, Text "the"
+, Space
+, RawBlock "rs" "*const T"
+, Space
+, Text "pointer"
+, Space
+, Text "or"
+, SoftBreak
+, Text "the"
+, Space
+, RawBlock "rs" "&mut T"
+, Space
+, Text "reference"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [This code tests ]), 
+                 box(body: raw(block: false, 
+                               lang: none, 
+                               text: "code"), 
+                     fill: luma(23000%), 
+                     inset: (x: 3.0pt, y: 0.0pt), 
+                     outset: (y: 2.5pt), 
+                     radius: 2.0pt), 
+                 text(body: [
+with selectors and justification.]), 
+                 parbreak(), 
+                 block(body: raw(block: true, 
+                                 lang: "rs", 
+                                 text: "code!(\"it\");\n"), 
+                       fill: luma(23000%), 
+                       inset: 11.0pt, 
+                       outset: -3.0pt, 
+                       stroke: (left: (thickness: 1.5pt,
+                                       color: luma(18000%)))), 
+                 parbreak(), 
+                 text(body: [You can use the ]), 
+                 block(body: raw(block: true, 
+                                 lang: "rs", 
+                                 text: "*const T"), 
+                       fill: luma(23000%), 
+                       inset: 11.0pt, 
+                       outset: -3.0pt, 
+                       stroke: (left: (thickness: 1.5pt,
+                                       color: luma(18000%)))), 
+                 text(body: [ pointer or
+the ]), 
+                 block(body: raw(block: true, 
+                                 lang: "rs", 
+                                 text: "&mut T"), 
+                       fill: luma(23000%), 
+                       inset: 11.0pt, 
+                       outset: -3.0pt, 
+                       stroke: (left: (thickness: 1.5pt,
+                                       color: luma(18000%)))), 
+                 text(body: [ reference.]), 
+                 parbreak() })
diff --git a/test/typ/compiler/show-selector-01.out b/test/typ/compiler/show-selector-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/show-selector-01.out
@@ -0,0 +1,95 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/show-selector-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/show-selector-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/show-selector-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/compiler/show-selector-01.typ"
+    ( line 2 , column 2 )
+    (Show
+       (Just
+          (FuncCall
+             (FieldAccess
+                (Ident (Identifier "where")) (Ident (Identifier "heading")))
+             [ KeyValArg (Identifier "level") (Literal (Int 1)) ]))
+       (Set
+          (Ident (Identifier "text"))
+          [ NormalArg (Ident (Identifier "red")) ]))
+, SoftBreak
+, Code
+    "typ/compiler/show-selector-01.typ"
+    ( line 3 , column 2 )
+    (Show
+       (Just
+          (FuncCall
+             (FieldAccess
+                (Ident (Identifier "where")) (Ident (Identifier "heading")))
+             [ KeyValArg (Identifier "level") (Literal (Int 2)) ]))
+       (Set
+          (Ident (Identifier "text"))
+          [ NormalArg (Ident (Identifier "blue")) ]))
+, SoftBreak
+, Code
+    "typ/compiler/show-selector-01.typ"
+    ( line 4 , column 2 )
+    (Show
+       (Just (Ident (Identifier "heading")))
+       (Set
+          (Ident (Identifier "text"))
+          [ NormalArg (Ident (Identifier "green")) ]))
+, SoftBreak
+, Heading 1 [ Text "Red" ]
+, Heading 2 [ Text "Blue" ]
+, Heading 3 [ Text "Green" ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 heading(body: text(body: [Red]), 
+                         level: 1), 
+                 heading(body: text(body: [Blue]), 
+                         level: 2), 
+                 heading(body: text(body: [Green]), 
+                         level: 3) })
diff --git a/test/typ/compiler/show-selector-02.out b/test/typ/compiler/show-selector-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/show-selector-02.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/show-text-00.out b/test/typ/compiler/show-text-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/show-text-00.out
@@ -0,0 +1,81 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/show-text-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/show-text-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/show-text-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/show-text-00.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "font") (Literal (String "Roboto")) ])
+, SoftBreak
+, Code
+    "typ/compiler/show-text-00.typ"
+    ( line 4 , column 2 )
+    (Show
+       (Just (Literal (String "Der Spiegel")))
+       (Ident (Identifier "smallcaps")))
+, SoftBreak
+, Text "Die"
+, Space
+, Text "Zeitung"
+, Space
+, Text "Der"
+, Space
+, Text "Spiegel"
+, Space
+, Text "existiert"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+], 
+                      font: "Roboto"), 
+                 text(body: [
+Die Zeitung ], 
+                      font: "Roboto"), 
+                 smallcaps(body: [Der Spiegel]), 
+                 text(body: [ existiert.], 
+                      font: "Roboto"), 
+                 parbreak() })
diff --git a/test/typ/compiler/show-text-01.out b/test/typ/compiler/show-text-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/show-text-01.out
@@ -0,0 +1,156 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/show-text-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/show-text-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/show-text-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/show-text-01.typ"
+    ( line 3 , column 2 )
+    (Show
+       (Just (Literal (String "TeX")))
+       (Block
+          (Content
+             [ Text "T"
+             , Code
+                 "typ/compiler/show-text-01.typ"
+                 ( line 3 , column 17 )
+                 (FuncCall
+                    (Ident (Identifier "h"))
+                    [ NormalArg (Negated (Literal (Numeric 0.145 Em))) ])
+             , Code
+                 "typ/compiler/show-text-01.typ"
+                 ( line 3 , column 29 )
+                 (FuncCall
+                    (Ident (Identifier "box"))
+                    [ NormalArg
+                        (FuncCall
+                           (Ident (Identifier "move"))
+                           [ KeyValArg (Identifier "dy") (Literal (Numeric 0.233 Em))
+                           , BlockArg [ Text "E" ]
+                           ])
+                    ])
+             , Code
+                 "typ/compiler/show-text-01.typ"
+                 ( line 3 , column 55 )
+                 (FuncCall
+                    (Ident (Identifier "h"))
+                    [ NormalArg (Negated (Literal (Numeric 0.135 Em))) ])
+             , Text "X"
+             ])))
+, SoftBreak
+, Code
+    "typ/compiler/show-text-01.typ"
+    ( line 4 , column 2 )
+    (Show
+       (Just
+          (FuncCall
+             (Ident (Identifier "regex"))
+             [ NormalArg (Literal (String "(Lua)?(La)?TeX")) ]))
+       (FuncExpr
+          [ NormalParam (Identifier "name") ]
+          (FuncCall
+             (Ident (Identifier "box"))
+             [ NormalArg
+                 (FuncCall
+                    (Ident (Identifier "text"))
+                    [ KeyValArg
+                        (Identifier "font") (Literal (String "New Computer Modern"))
+                    , BlockArg
+                        [ Code
+                            "typ/compiler/show-text-01.typ"
+                            ( line 4 , column 79 )
+                            (Ident (Identifier "name"))
+                        ]
+                    ])
+             ])))
+, ParBreak
+, Text "TeX,"
+, Space
+, Text "LaTeX,"
+, Space
+, Text "LuaTeX"
+, Space
+, Text "and"
+, Space
+, Text "LuaLaTeX!"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 box(body: text(body: { text(body: [T]), 
+                                        h(amount: -0.145em), 
+                                        box(body: move(body: text(body: [E]), 
+                                                       dy: 0.233em)), 
+                                        h(amount: -0.135em), 
+                                        text(body: [X]) }, 
+                                font: "New Computer Modern")), 
+                 text(body: [, ]), 
+                 box(body: text(body: { text(body: [La]), 
+                                        text(body: [T]), 
+                                        h(amount: -0.145em), 
+                                        box(body: move(body: text(body: [E]), 
+                                                       dy: 0.233em)), 
+                                        h(amount: -0.135em), 
+                                        text(body: [X]) }, 
+                                font: "New Computer Modern")), 
+                 text(body: [, ]), 
+                 box(body: text(body: { text(body: [Lua]), 
+                                        text(body: [T]), 
+                                        h(amount: -0.145em), 
+                                        box(body: move(body: text(body: [E]), 
+                                                       dy: 0.233em)), 
+                                        h(amount: -0.135em), 
+                                        text(body: [X]) }, 
+                                font: "New Computer Modern")), 
+                 text(body: [ and ]), 
+                 box(body: text(body: { text(body: [LuaLa]), 
+                                        text(body: [T]), 
+                                        h(amount: -0.145em), 
+                                        box(body: move(body: text(body: [E]), 
+                                                       dy: 0.233em)), 
+                                        h(amount: -0.135em), 
+                                        text(body: [X]) }, 
+                                font: "New Computer Modern")), 
+                 text(body: [!]), 
+                 parbreak() })
diff --git a/test/typ/compiler/show-text-02.out b/test/typ/compiler/show-text-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/show-text-02.out
@@ -0,0 +1,71 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/show-text-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/show-text-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/show-text-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/show-text-02.typ"
+    ( line 3 , column 2 )
+    (Show
+       (Just (Literal (String "A"))) (Block (Content [ Text "BB" ])))
+, SoftBreak
+, Code
+    "typ/compiler/show-text-02.typ"
+    ( line 4 , column 2 )
+    (Show
+       (Just (Literal (String "B"))) (Block (Content [ Text "CC" ])))
+, SoftBreak
+, Text "AA"
+, Space
+, Text "("
+, Text "8)"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [BB]), 
+                 text(body: [BB]), 
+                 text(body: [ (8)]), 
+                 parbreak() })
diff --git a/test/typ/compiler/show-text-03.out b/test/typ/compiler/show-text-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/show-text-03.out
@@ -0,0 +1,80 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/show-text-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/show-text-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/show-text-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/show-text-03.typ"
+    ( line 3 , column 2 )
+    (Show
+       (Just
+          (FuncCall
+             (Ident (Identifier "regex"))
+             [ NormalArg (Literal (String "(?i)\\bworld\\b")) ]))
+       (Block (Content [ Text "\127757" ])))
+, ParBreak
+, Text "Treeworld,"
+, Space
+, Text "the"
+, Space
+, Text "World"
+, Space
+, Text "of"
+, Space
+, Text "worlds,"
+, Space
+, Text "is"
+, Space
+, Text "a"
+, Space
+, Text "world"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [Treeworld, the ]), 
+                 text(body: [🌍]), 
+                 text(body: [ of worlds, is a ]), 
+                 text(body: [🌍]), 
+                 text(body: [.]), 
+                 parbreak() })
diff --git a/test/typ/compiler/show-text-04.out b/test/typ/compiler/show-text-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/show-text-04.out
@@ -0,0 +1,157 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/show-text-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/show-text-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/show-text-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/show-text-04.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "par"))
+       [ KeyValArg (Identifier "justify") (Literal (Boolean True)) ])
+, SoftBreak
+, Code
+    "typ/compiler/show-text-04.typ"
+    ( line 4 , column 2 )
+    (Show
+       (Just
+          (FuncCall
+             (Ident (Identifier "regex"))
+             [ NormalArg (Literal (String "\\S")) ]))
+       (FuncExpr
+          [ NormalParam (Identifier "letter") ]
+          (FuncCall
+             (Ident (Identifier "box"))
+             [ KeyValArg (Identifier "stroke") (Literal (Numeric 1.0 Pt))
+             , KeyValArg (Identifier "inset") (Literal (Numeric 2.0 Pt))
+             , NormalArg
+                 (FuncCall
+                    (Ident (Identifier "upper"))
+                    [ NormalArg (Ident (Identifier "letter")) ])
+             ])))
+, SoftBreak
+, Code
+    "typ/compiler/show-text-04.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 5)) ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 box(body: upper(text: [L]), 
+                     inset: 2.0pt, 
+                     stroke: 1.0pt), 
+                 box(body: upper(text: [o]), 
+                     inset: 2.0pt, 
+                     stroke: 1.0pt), 
+                 box(body: upper(text: [r]), 
+                     inset: 2.0pt, 
+                     stroke: 1.0pt), 
+                 box(body: upper(text: [e]), 
+                     inset: 2.0pt, 
+                     stroke: 1.0pt), 
+                 box(body: upper(text: [m]), 
+                     inset: 2.0pt, 
+                     stroke: 1.0pt), 
+                 text(body: [ ]), 
+                 box(body: upper(text: [i]), 
+                     inset: 2.0pt, 
+                     stroke: 1.0pt), 
+                 box(body: upper(text: [p]), 
+                     inset: 2.0pt, 
+                     stroke: 1.0pt), 
+                 box(body: upper(text: [s]), 
+                     inset: 2.0pt, 
+                     stroke: 1.0pt), 
+                 box(body: upper(text: [u]), 
+                     inset: 2.0pt, 
+                     stroke: 1.0pt), 
+                 box(body: upper(text: [m]), 
+                     inset: 2.0pt, 
+                     stroke: 1.0pt), 
+                 text(body: [ ]), 
+                 box(body: upper(text: [d]), 
+                     inset: 2.0pt, 
+                     stroke: 1.0pt), 
+                 box(body: upper(text: [o]), 
+                     inset: 2.0pt, 
+                     stroke: 1.0pt), 
+                 box(body: upper(text: [l]), 
+                     inset: 2.0pt, 
+                     stroke: 1.0pt), 
+                 box(body: upper(text: [o]), 
+                     inset: 2.0pt, 
+                     stroke: 1.0pt), 
+                 box(body: upper(text: [r]), 
+                     inset: 2.0pt, 
+                     stroke: 1.0pt), 
+                 text(body: [ ]), 
+                 box(body: upper(text: [s]), 
+                     inset: 2.0pt, 
+                     stroke: 1.0pt), 
+                 box(body: upper(text: [i]), 
+                     inset: 2.0pt, 
+                     stroke: 1.0pt), 
+                 box(body: upper(text: [t]), 
+                     inset: 2.0pt, 
+                     stroke: 1.0pt), 
+                 text(body: [ ]), 
+                 box(body: upper(text: [a]), 
+                     inset: 2.0pt, 
+                     stroke: 1.0pt), 
+                 box(body: upper(text: [m]), 
+                     inset: 2.0pt, 
+                     stroke: 1.0pt), 
+                 box(body: upper(text: [e]), 
+                     inset: 2.0pt, 
+                     stroke: 1.0pt), 
+                 box(body: upper(text: [t]), 
+                     inset: 2.0pt, 
+                     stroke: 1.0pt), 
+                 box(body: upper(text: [,]), 
+                     inset: 2.0pt, 
+                     stroke: 1.0pt), 
+                 parbreak() })
diff --git a/test/typ/compiler/show-text-05.out b/test/typ/compiler/show-text-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/show-text-05.out
@@ -0,0 +1,104 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/show-text-05.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/show-text-05.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/show-text-05.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/show-text-05.typ"
+    ( line 3 , column 2 )
+    (Show
+       (Just
+          (FuncCall
+             (Ident (Identifier "regex"))
+             [ NormalArg (Literal (String "(?i)rust")) ]))
+       (FuncExpr
+          [ NormalParam (Identifier "it") ]
+          (Block
+             (Content
+                [ Code
+                    "typ/compiler/show-text-05.typ"
+                    ( line 3 , column 34 )
+                    (Ident (Identifier "it"))
+                , Space
+                , Text "("
+                , Text "\128640)"
+                ]))))
+, SoftBreak
+, Text "Rust"
+, Space
+, Text "is"
+, Space
+, Text "memory"
+, Text "-"
+, Text "safe"
+, Space
+, Text "and"
+, Space
+, Text "blazingly"
+, Space
+, Text "fast"
+, Text "."
+, Space
+, Text "Let"
+, Quote '\''
+, Text "s"
+, Space
+, Text "rewrite"
+, Space
+, Text "everything"
+, Space
+, Text "in"
+, Space
+, Text "rust"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [Rust]), 
+                 text(body: [ (🚀)]), 
+                 text(body: [ is memory-safe and blazingly fast. Let’s rewrite everything in ]), 
+                 text(body: [rust]), 
+                 text(body: [ (🚀)]), 
+                 text(body: [.]), 
+                 parbreak() })
diff --git a/test/typ/compiler/show-text-06.out b/test/typ/compiler/show-text-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/show-text-06.out
@@ -0,0 +1,79 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/show-text-06.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/show-text-06.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/show-text-06.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/show-text-06.typ"
+    ( line 3 , column 2 )
+    (Show
+       (Just (Literal (String "hello")))
+       (FuncExpr
+          [ NormalParam (Identifier "it") ]
+          (FuncCall
+             (FieldAccess
+                (Ident (Identifier "join"))
+                (FuncCall
+                   (FieldAccess
+                      (Ident (Identifier "map"))
+                      (FuncCall
+                         (FieldAccess
+                            (Ident (Identifier "split"))
+                            (FieldAccess
+                               (Ident (Identifier "text")) (Ident (Identifier "it"))))
+                         [ NormalArg (Literal (String "")) ]))
+                   [ NormalArg (Ident (Identifier "upper")) ]))
+             [ NormalArg (Literal (String "|")) ])))
+, SoftBreak
+, Text "Oh,"
+, Space
+, Text "hello"
+, Space
+, Text "there!"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+Oh, ]), 
+                 text(body: [|H|E|L|L|O|]), 
+                 text(body: [ there!]), 
+                 parbreak() })
diff --git a/test/typ/compiler/show-text-07.typ b/test/typ/compiler/show-text-07.typ
deleted file mode 100644
--- a/test/typ/compiler/show-text-07.typ
+++ /dev/null
@@ -1,9 +0,0 @@
-// Replace worlds but only in lists.
-#show list: it => [
-  #show "World": [🌎]
-  #it
-]
-
-World
-- World
-
diff --git a/test/typ/compiler/show-text-08.out b/test/typ/compiler/show-text-08.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/show-text-08.out
@@ -0,0 +1,72 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/show-text-08.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/show-text-08.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/show-text-08.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, SoftBreak
+, Code
+    "typ/compiler/show-text-08.typ"
+    ( line 4 , column 2 )
+    (Show
+       (Just (Literal (String "GRAPH")))
+       (FuncCall
+          (Ident (Identifier "image"))
+          [ NormalArg (Literal (String "/assets/files/graph.png")) ]))
+, ParBreak
+, Text "The"
+, Space
+, Text "GRAPH"
+, Space
+, Text "has"
+, Space
+, Text "nodes"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [The ]), 
+                 image(path: "/assets/files/graph.png"), 
+                 text(body: [ has nodes.]), 
+                 parbreak() })
diff --git a/test/typ/compiler/spread-00.out b/test/typ/compiler/spread-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/spread-00.out
@@ -0,0 +1,101 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/spread-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/spread-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/spread-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/spread-00.typ"
+    ( line 3 , column 2 )
+    (Block
+       (CodeBlock
+          [ LetFunc
+              (Identifier "f")
+              [ DefaultParam (Identifier "style") (Literal (String "normal"))
+              , DefaultParam (Identifier "weight") (Literal (String "regular"))
+              ]
+              (Block
+                 (CodeBlock
+                    [ Plus
+                        (Plus
+                           (Plus
+                              (Plus (Literal (String "(style: ")) (Ident (Identifier "style")))
+                              (Literal (String ", weight: ")))
+                           (Ident (Identifier "weight")))
+                        (Literal (String ")"))
+                    ]))
+          , LetFunc
+              (Identifier "myf")
+              [ SinkParam (Just (Identifier "args")) ]
+              (FuncCall
+                 (Ident (Identifier "f"))
+                 [ KeyValArg (Identifier "weight") (Literal (String "bold"))
+                 , SpreadArg (Ident (Identifier "args"))
+                 ])
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg (FuncCall (Ident (Identifier "myf")) [])
+              , NormalArg (Literal (String "(style: normal, weight: bold)"))
+              ]
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "myf"))
+                     [ KeyValArg (Identifier "weight") (Literal (String "black")) ])
+              , NormalArg (Literal (String "(style: normal, weight: black)"))
+              ]
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "myf"))
+                     [ KeyValArg (Identifier "style") (Literal (String "italic")) ])
+              , NormalArg (Literal (String "(style: italic, weight: bold)"))
+              ]
+          ]))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/spread-01.out b/test/typ/compiler/spread-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/spread-01.out
@@ -0,0 +1,82 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/spread-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/spread-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/spread-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/spread-01.typ"
+    ( line 3 , column 2 )
+    (Block
+       (CodeBlock
+          [ LetFunc
+              (Identifier "f")
+              [ NormalParam (Identifier "b")
+              , DefaultParam (Identifier "c") (Literal (String "!"))
+              ]
+              (Plus (Ident (Identifier "b")) (Ident (Identifier "c")))
+          , LetFunc
+              (Identifier "g")
+              [ NormalParam (Identifier "a")
+              , SinkParam (Just (Identifier "sink"))
+              ]
+              (Plus
+                 (Ident (Identifier "a"))
+                 (FuncCall
+                    (Ident (Identifier "f"))
+                    [ SpreadArg (Ident (Identifier "sink")) ]))
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "g"))
+                     [ NormalArg (Literal (String "a"))
+                     , NormalArg (Literal (String "b"))
+                     , KeyValArg (Identifier "c") (Literal (String "c"))
+                     ])
+              , NormalArg (Literal (String "abc"))
+              ]
+          ]))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/spread-02.out b/test/typ/compiler/spread-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/spread-02.out
@@ -0,0 +1,84 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/spread-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/spread-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/spread-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/spread-02.typ"
+    ( line 3 , column 2 )
+    (Block
+       (CodeBlock
+          [ LetFunc
+              (Identifier "save")
+              [ SinkParam (Just (Identifier "args")) ]
+              (Block
+                 (CodeBlock
+                    [ FuncCall
+                        (Ident (Identifier "test"))
+                        [ NormalArg
+                            (FuncCall
+                               (Ident (Identifier "type"))
+                               [ NormalArg (Ident (Identifier "args")) ])
+                        , NormalArg (Literal (String "arguments"))
+                        ]
+                    , FuncCall
+                        (Ident (Identifier "test"))
+                        [ NormalArg
+                            (FuncCall
+                               (Ident (Identifier "repr"))
+                               [ NormalArg (Ident (Identifier "args")) ])
+                        , NormalArg (Literal (String "(three: true, 1, 2)"))
+                        ]
+                    ]))
+          , FuncCall
+              (Ident (Identifier "save"))
+              [ NormalArg (Literal (Int 1))
+              , NormalArg (Literal (Int 2))
+              , KeyValArg (Identifier "three") (Literal (Boolean True))
+              ]
+          ]))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/spread-03.out b/test/typ/compiler/spread-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/spread-03.out
@@ -0,0 +1,131 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/spread-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/spread-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/spread-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/spread-03.typ"
+    ( line 3 , column 2 )
+    (Block
+       (CodeBlock
+          [ Let
+              (BasicBind (Just (Identifier "more")))
+              (Array
+                 [ Reg (Literal (Int 3))
+                 , Reg (Negated (Literal (Int 3)))
+                 , Reg (Literal (Int 6))
+                 , Reg (Literal (Int 10))
+                 ])
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg
+                  (FuncCall
+                     (FieldAccess
+                        (Ident (Identifier "min")) (Ident (Identifier "calc")))
+                     [ NormalArg (Literal (Int 1))
+                     , NormalArg (Literal (Int 2))
+                     , SpreadArg (Ident (Identifier "more"))
+                     ])
+              , NormalArg (Negated (Literal (Int 3)))
+              ]
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg
+                  (FuncCall
+                     (FieldAccess
+                        (Ident (Identifier "max")) (Ident (Identifier "calc")))
+                     [ SpreadArg (Ident (Identifier "more"))
+                     , NormalArg (Literal (Int 9))
+                     ])
+              , NormalArg (Literal (Int 10))
+              ]
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg
+                  (FuncCall
+                     (FieldAccess
+                        (Ident (Identifier "max")) (Ident (Identifier "calc")))
+                     [ SpreadArg (Ident (Identifier "more"))
+                     , NormalArg (Literal (Int 11))
+                     ])
+              , NormalArg (Literal (Int 11))
+              ]
+          ]))
+, ParBreak
+, Code
+    "typ/compiler/spread-03.typ"
+    ( line 10 , column 2 )
+    (Block
+       (CodeBlock
+          [ Let
+              (BasicBind (Just (Identifier "more")))
+              (Dict
+                 [ Reg ( Ident (Identifier "c") , Literal (Int 3) )
+                 , Reg ( Ident (Identifier "d") , Literal (Int 4) )
+                 ])
+          , LetFunc
+              (Identifier "tostr")
+              [ SinkParam (Just (Identifier "args")) ]
+              (FuncCall
+                 (Ident (Identifier "repr"))
+                 [ NormalArg (Ident (Identifier "args")) ])
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "tostr"))
+                     [ KeyValArg (Identifier "a") (Literal (Int 1))
+                     , SpreadArg (Ident (Identifier "more"))
+                     , KeyValArg (Identifier "b") (Literal (Int 2))
+                     ])
+              , NormalArg (Literal (String "(a: 1, c: 3, d: 4, b: 2)"))
+              ]
+          ]))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 parbreak(), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/spread-04.out b/test/typ/compiler/spread-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/spread-04.out
@@ -0,0 +1,84 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/spread-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/spread-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/spread-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/spread-04.typ"
+    ( line 3 , column 2 )
+    (LetFunc (Identifier "f") [] (Literal None))
+, SoftBreak
+, Code
+    "typ/compiler/spread-04.typ"
+    ( line 4 , column 2 )
+    (FuncCall (Ident (Identifier "f")) [ SpreadArg (Literal None) ])
+, SoftBreak
+, Code
+    "typ/compiler/spread-04.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "f"))
+       [ SpreadArg
+           (If [ ( Literal (Boolean False) , Block (CodeBlock []) ) ])
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/spread-04.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "f"))
+       [ SpreadArg
+           (For
+              (BasicBind (Just (Identifier "x")))
+              (Array [])
+              (Block (Content [])))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak() })
diff --git a/test/typ/compiler/spread-05.out b/test/typ/compiler/spread-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/spread-05.out
@@ -0,0 +1,73 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/spread-05.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/spread-05.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/spread-05.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/spread-05.typ"
+    ( line 3 , column 2 )
+    (LetFunc
+       (Identifier "f")
+       [ SinkParam Nothing , NormalParam (Identifier "a") ]
+       (Ident (Identifier "a")))
+, SoftBreak
+, Code
+    "typ/compiler/spread-05.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "f"))
+              [ NormalArg (Literal (Int 1))
+              , NormalArg (Literal (Int 2))
+              , NormalArg (Literal (Int 3))
+              ])
+       , NormalArg (Literal (Int 3))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/spread-06.out b/test/typ/compiler/spread-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/spread-06.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/spread-07.out b/test/typ/compiler/spread-07.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/spread-07.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/spread-08.out b/test/typ/compiler/spread-08.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/spread-08.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/spread-09.out b/test/typ/compiler/spread-09.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/spread-09.out
@@ -0,0 +1,127 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/spread-09.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/spread-09.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/spread-09.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/spread-09.typ"
+    ( line 3 , column 2 )
+    (Block
+       (CodeBlock
+          [ Let
+              (BasicBind (Just (Identifier "l")))
+              (Array
+                 [ Reg (Literal (Int 1))
+                 , Reg (Literal (Int 2))
+                 , Reg (Literal (Int 3))
+                 ])
+          , Let
+              (BasicBind (Just (Identifier "r")))
+              (Array
+                 [ Reg (Literal (Int 5))
+                 , Reg (Literal (Int 6))
+                 , Reg (Literal (Int 7))
+                 ])
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg
+                  (Array
+                     [ Spr (Ident (Identifier "l"))
+                     , Reg (Literal (Int 4))
+                     , Spr (Ident (Identifier "r"))
+                     ])
+              , NormalArg
+                  (FuncCall
+                     (Ident (Identifier "range"))
+                     [ NormalArg (Literal (Int 1)) , NormalArg (Literal (Int 8)) ])
+              ]
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg (Dict [ Spr (Literal None) ]) , NormalArg (Array []) ]
+          ]))
+, ParBreak
+, Code
+    "typ/compiler/spread-09.typ"
+    ( line 10 , column 2 )
+    (Block
+       (CodeBlock
+          [ Let
+              (BasicBind (Just (Identifier "x")))
+              (Dict [ Reg ( Ident (Identifier "a") , Literal (Int 1) ) ])
+          , Let
+              (BasicBind (Just (Identifier "y")))
+              (Dict [ Reg ( Ident (Identifier "b") , Literal (Int 2) ) ])
+          , Let
+              (BasicBind (Just (Identifier "z")))
+              (Dict [ Reg ( Ident (Identifier "a") , Literal (Int 3) ) ])
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg
+                  (Dict
+                     [ Spr (Ident (Identifier "x"))
+                     , Spr (Ident (Identifier "y"))
+                     , Spr (Ident (Identifier "z"))
+                     ])
+              , NormalArg
+                  (Dict
+                     [ Reg ( Ident (Identifier "a") , Literal (Int 3) )
+                     , Reg ( Ident (Identifier "b") , Literal (Int 2) )
+                     ])
+              ]
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg
+                  (Dict
+                     [ Spr (Dict [ Reg ( Ident (Identifier "a") , Literal (Int 1) ) ])
+                     , Reg ( Ident (Identifier "b") , Literal (Int 2) )
+                     ])
+              , NormalArg
+                  (Dict
+                     [ Reg ( Ident (Identifier "a") , Literal (Int 1) )
+                     , Reg ( Ident (Identifier "b") , Literal (Int 2) )
+                     ])
+              ]
+          ]))
+, ParBreak
+]
+"typ/compiler/spread-09.typ" (line 3, column 2):
+unexpected end of input
+expecting end of input
+Could not spread TNone into dictionary
diff --git a/test/typ/compiler/spread-10.out b/test/typ/compiler/spread-10.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/spread-10.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/spread-11.out b/test/typ/compiler/spread-11.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/spread-11.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/spread-12.out b/test/typ/compiler/spread-12.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/spread-12.out
@@ -0,0 +1,106 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/spread-12.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/spread-12.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/spread-12.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/spread-12.typ"
+    ( line 3 , column 2 )
+    (Block
+       (CodeBlock
+          [ LetFunc
+              (Identifier "f")
+              [ SinkParam (Just (Identifier "a"))
+              , NormalParam (Identifier "b")
+              ]
+              (Array
+                 [ Reg (Ident (Identifier "a")) , Reg (Ident (Identifier "b")) ])
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "repr"))
+                     [ NormalArg
+                         (FuncCall (Ident (Identifier "f")) [ NormalArg (Literal (Int 1)) ])
+                     ])
+              , NormalArg (Literal (String "((), 1)"))
+              ]
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "repr"))
+                     [ NormalArg
+                         (FuncCall
+                            (Ident (Identifier "f"))
+                            [ NormalArg (Literal (Int 1))
+                            , NormalArg (Literal (Int 2))
+                            , NormalArg (Literal (Int 3))
+                            ])
+                     ])
+              , NormalArg (Literal (String "((1, 2), 3)"))
+              ]
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "repr"))
+                     [ NormalArg
+                         (FuncCall
+                            (Ident (Identifier "f"))
+                            [ NormalArg (Literal (Int 1))
+                            , NormalArg (Literal (Int 2))
+                            , NormalArg (Literal (Int 3))
+                            , NormalArg (Literal (Int 4))
+                            , NormalArg (Literal (Int 5))
+                            ])
+                     ])
+              , NormalArg (Literal (String "((1, 2, 3, 4), 5)"))
+              ]
+          ]))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/spread-13.out b/test/typ/compiler/spread-13.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/spread-13.out
@@ -0,0 +1,96 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/spread-13.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/spread-13.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/spread-13.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/spread-13.typ"
+    ( line 3 , column 2 )
+    (Block
+       (CodeBlock
+          [ LetFunc
+              (Identifier "f")
+              [ NormalParam (Identifier "a")
+              , SinkParam (Just (Identifier "b"))
+              , NormalParam (Identifier "c")
+              ]
+              (Array
+                 [ Reg (Ident (Identifier "a"))
+                 , Reg (Ident (Identifier "b"))
+                 , Reg (Ident (Identifier "c"))
+                 ])
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "repr"))
+                     [ NormalArg
+                         (FuncCall
+                            (Ident (Identifier "f"))
+                            [ NormalArg (Literal (Int 1)) , NormalArg (Literal (Int 2)) ])
+                     ])
+              , NormalArg (Literal (String "(1, (), 2)"))
+              ]
+          , FuncCall
+              (Ident (Identifier "test"))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "repr"))
+                     [ NormalArg
+                         (FuncCall
+                            (Ident (Identifier "f"))
+                            [ NormalArg (Literal (Int 1))
+                            , NormalArg (Literal (Int 2))
+                            , NormalArg (Literal (Int 3))
+                            , NormalArg (Literal (Int 4))
+                            , NormalArg (Literal (Int 5))
+                            ])
+                     ])
+              , NormalArg (Literal (String "(1, (2, 3, 4), 5)"))
+              ]
+          ]))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/spread-14.out b/test/typ/compiler/spread-14.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/spread-14.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/string-00.out b/test/typ/compiler/string-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/string-00.out
@@ -0,0 +1,61 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/string-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/string-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/string-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/string-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "len")) (Literal (String "Hello World!")))
+              [])
+       , NormalArg (Literal (Int 12))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/string-01.out b/test/typ/compiler/string-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/string-01.out
@@ -0,0 +1,123 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/string-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/string-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/string-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/string-01.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "first")) (Literal (String "Hello")))
+              [])
+       , NormalArg (Literal (String "H"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-01.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "last")) (Literal (String "Hello")))
+              [])
+       , NormalArg (Literal (String "o"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-01.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "first"))
+                 (Literal
+                    (String
+                       "\127987\65039\8205\127752A\127987\65039\8205\9895\65039")))
+              [])
+       , NormalArg (Literal (String "\127987\65039\8205\127752"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-01.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "last"))
+                 (Literal
+                    (String
+                       "\127987\65039\8205\127752A\127987\65039\8205\9895\65039")))
+              [])
+       , NormalArg (Literal (String "\127987\65039\8205\9895\65039"))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [❌(]), 
+                 text(body: ["🏳"]), 
+                 text(body: [ /= ]), 
+                 text(body: ["🏳️‍🌈"]), 
+                 text(body: [)]), 
+                 text(body: [
+]), 
+                 text(body: [❌(]), 
+                 text(body: ["️"]), 
+                 text(body: [ /= ]), 
+                 text(body: ["🏳️‍⚧️"]), 
+                 text(body: [)]), 
+                 parbreak() })
diff --git a/test/typ/compiler/string-02.out b/test/typ/compiler/string-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/string-02.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/string-03.out b/test/typ/compiler/string-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/string-03.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/string-04.out b/test/typ/compiler/string-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/string-04.out
@@ -0,0 +1,126 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/string-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/string-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/string-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/string-04.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess (Ident (Identifier "at")) (Literal (String "Hello")))
+              [ NormalArg (Literal (Int 1)) ])
+       , NormalArg (Literal (String "e"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-04.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess (Ident (Identifier "at")) (Literal (String "Hello")))
+              [ NormalArg (Literal (Int 4)) ])
+       , NormalArg (Literal (String "o"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-04.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess (Ident (Identifier "at")) (Literal (String "Hello")))
+              [ NormalArg (Negated (Literal (Int 1))) ])
+       , NormalArg (Literal (String "o"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-04.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess (Ident (Identifier "at")) (Literal (String "Hello")))
+              [ NormalArg (Negated (Literal (Int 2))) ])
+       , NormalArg (Literal (String "l"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-04.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "at"))
+                 (Literal (String "Hey: \127987\65039\8205\127752 there!")))
+              [ NormalArg (Literal (Int 5)) ])
+       , NormalArg (Literal (String "\127987\65039\8205\127752"))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [❌(]), 
+                 text(body: ["🏳"]), 
+                 text(body: [ /= ]), 
+                 text(body: ["🏳️‍🌈"]), 
+                 text(body: [)]), 
+                 parbreak() })
diff --git a/test/typ/compiler/string-05.out b/test/typ/compiler/string-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/string-05.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/string-06.out b/test/typ/compiler/string-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/string-06.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/string-07.out b/test/typ/compiler/string-07.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/string-07.out
@@ -0,0 +1,116 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/string-07.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/string-07.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/string-07.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/string-07.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess (Ident (Identifier "slice")) (Literal (String "abc")))
+              [ NormalArg (Literal (Int 1)) , NormalArg (Literal (Int 2)) ])
+       , NormalArg (Literal (String "b"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-07.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "slice")) (Literal (String "abc\127969def")))
+              [ NormalArg (Literal (Int 2)) , NormalArg (Literal (Int 7)) ])
+       , NormalArg (Literal (String "c\127969"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-07.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "slice")) (Literal (String "abc\127969def")))
+              [ NormalArg (Literal (Int 2))
+              , NormalArg (Negated (Literal (Int 2)))
+              ])
+       , NormalArg (Literal (String "c\127969d"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-07.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "slice")) (Literal (String "abc\127969def")))
+              [ NormalArg (Negated (Literal (Int 3)))
+              , NormalArg (Negated (Literal (Int 1)))
+              ])
+       , NormalArg (Literal (String "de"))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [❌(]), 
+                 text(body: ["c🏡def"]), 
+                 text(body: [ /= ]), 
+                 text(body: ["c🏡"]), 
+                 text(body: [)]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/string-08.out b/test/typ/compiler/string-08.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/string-08.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/string-09.out b/test/typ/compiler/string-09.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/string-09.out
@@ -0,0 +1,136 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/string-09.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/string-09.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/string-09.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/string-09.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "clusters")) (Literal (String "abc")))
+              [])
+       , NormalArg
+           (Array
+              [ Reg (Literal (String "a"))
+              , Reg (Literal (String "b"))
+              , Reg (Literal (String "c"))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-09.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "clusters")) (Literal (String "abc")))
+              [])
+       , NormalArg
+           (Array
+              [ Reg (Literal (String "a"))
+              , Reg (Literal (String "b"))
+              , Reg (Literal (String "c"))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-09.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "clusters"))
+                 (Literal (String "\127987\65039\8205\127752!")))
+              [])
+       , NormalArg
+           (Array
+              [ Reg (Literal (String "\127987\65039\8205\127752"))
+              , Reg (Literal (String "!"))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-09.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "codepoints"))
+                 (Literal (String "\127987\65039\8205\127752!")))
+              [])
+       , NormalArg
+           (Array
+              [ Reg (Literal (String "\127987"))
+              , Reg (Literal (String "\65039"))
+              , Reg (Literal (String "\8205"))
+              , Reg (Literal (String "\127752"))
+              , Reg (Literal (String "!"))
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [❌(]), 
+                 text(body: [("🏳", "️", "‍", "🌈", "!")]), 
+                 text(body: [ /= ]), 
+                 text(body: [("🏳️‍🌈", "!")]), 
+                 text(body: [)]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/string-10.out b/test/typ/compiler/string-10.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/string-10.out
@@ -0,0 +1,181 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/string-10.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/string-10.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/string-10.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/string-10.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "contains")) (Literal (String "abc")))
+              [ NormalArg (Literal (String "b")) ])
+       , NormalArg (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-10.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (InCollection (Literal (String "b")) (Literal (String "abc")))
+       , NormalArg (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-10.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "contains")) (Literal (String "1234f")))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "regex"))
+                     [ NormalArg (Literal (String "\\d")) ])
+              ])
+       , NormalArg (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-10.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (InCollection
+              (FuncCall
+                 (Ident (Identifier "regex"))
+                 [ NormalArg (Literal (String "\\d")) ])
+              (Literal (String "1234f")))
+       , NormalArg (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-10.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "contains")) (Literal (String "abc")))
+              [ NormalArg (Literal (String "d")) ])
+       , NormalArg (Literal (Boolean False))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-10.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (InCollection
+              (Literal (String "1234g")) (Literal (String "1234f")))
+       , NormalArg (Literal (Boolean False))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-10.typ"
+    ( line 9 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "contains")) (Literal (String "abc")))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "regex"))
+                     [ NormalArg (Literal (String "^[abc]$")) ])
+              ])
+       , NormalArg (Literal (Boolean False))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-10.typ"
+    ( line 10 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "contains")) (Literal (String "abc")))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "regex"))
+                     [ NormalArg (Literal (String "^[abc]+$")) ])
+              ])
+       , NormalArg (Literal (Boolean True))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/string-11.out b/test/typ/compiler/string-11.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/string-11.out
@@ -0,0 +1,173 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/string-11.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/string-11.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/string-11.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/string-11.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "starts-with")) (Literal (String "Typst")))
+              [ NormalArg (Literal (String "Ty")) ])
+       , NormalArg (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-11.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "starts-with")) (Literal (String "Typst")))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "regex"))
+                     [ NormalArg (Literal (String "[Tt]ys")) ])
+              ])
+       , NormalArg (Literal (Boolean False))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-11.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "starts-with")) (Literal (String "Typst")))
+              [ NormalArg (Literal (String "st")) ])
+       , NormalArg (Literal (Boolean False))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-11.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "ends-with")) (Literal (String "Typst")))
+              [ NormalArg (Literal (String "st")) ])
+       , NormalArg (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-11.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "ends-with")) (Literal (String "Typst")))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "regex"))
+                     [ NormalArg (Literal (String "\\d*")) ])
+              ])
+       , NormalArg (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-11.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "ends-with")) (Literal (String "Typst")))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "regex"))
+                     [ NormalArg (Literal (String "\\d+")) ])
+              ])
+       , NormalArg (Literal (Boolean False))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-11.typ"
+    ( line 9 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "ends-with")) (Literal (String "Typ12")))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "regex"))
+                     [ NormalArg (Literal (String "\\d+")) ])
+              ])
+       , NormalArg (Literal (Boolean True))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/string-12.out b/test/typ/compiler/string-12.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/string-12.out
@@ -0,0 +1,121 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/string-12.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/string-12.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/string-12.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/string-12.typ"
+    ( line 3 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "date")))
+       (FuncCall
+          (Ident (Identifier "regex"))
+          [ NormalArg (Literal (String "\\d{2}:\\d{2}")) ]))
+, SoftBreak
+, Code
+    "typ/compiler/string-12.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "find")) (Literal (String "Hello World")))
+              [ NormalArg (Literal (String "World")) ])
+       , NormalArg (Literal (String "World"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-12.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "position")) (Literal (String "Hello World")))
+              [ NormalArg (Literal (String "World")) ])
+       , NormalArg (Literal (Int 6))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-12.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "find")) (Literal (String "It's 12:13 now")))
+              [ NormalArg (Ident (Identifier "date")) ])
+       , NormalArg (Literal (String "12:13"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-12.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "position"))
+                 (Literal (String "It's 12:13 now")))
+              [ NormalArg (Ident (Identifier "date")) ])
+       , NormalArg (Literal (Int 5))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/string-13.out b/test/typ/compiler/string-13.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/string-13.out
@@ -0,0 +1,255 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/string-13.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/string-13.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/string-13.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/string-13.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "match")) (Literal (String "Is there a")))
+              [ NormalArg (Literal (String "for this?")) ])
+       , NormalArg (Literal None)
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-13.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "match"))
+                 (Literal (String "The time of my life.")))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "regex"))
+                     [ NormalArg (Literal (String "[mit]+e")) ])
+              ])
+       , NormalArg
+           (Dict
+              [ Reg ( Ident (Identifier "start") , Literal (Int 4) )
+              , Reg ( Ident (Identifier "end") , Literal (Int 8) )
+              , Reg ( Ident (Identifier "text") , Literal (String "time") )
+              , Reg ( Ident (Identifier "captures") , Array [] )
+              ])
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/string-13.typ"
+    ( line 10 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "matches")) (Literal (String "Hello there")))
+              [ NormalArg (Literal (String "\\d")) ])
+       , NormalArg (Array [])
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-13.typ"
+    ( line 11 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "matches")) (Literal (String "Day by Day.")))
+              [ NormalArg (Literal (String "Day")) ])
+       , NormalArg
+           (Array
+              [ Reg
+                  (Dict
+                     [ Reg ( Ident (Identifier "start") , Literal (Int 0) )
+                     , Reg ( Ident (Identifier "end") , Literal (Int 3) )
+                     , Reg ( Ident (Identifier "text") , Literal (String "Day") )
+                     , Reg ( Ident (Identifier "captures") , Array [] )
+                     ])
+              , Reg
+                  (Dict
+                     [ Reg ( Ident (Identifier "start") , Literal (Int 7) )
+                     , Reg ( Ident (Identifier "end") , Literal (Int 10) )
+                     , Reg ( Ident (Identifier "text") , Literal (String "Day") )
+                     , Reg ( Ident (Identifier "captures") , Array [] )
+                     ])
+              ])
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/string-13.typ"
+    ( line 17 , column 2 )
+    (LetFunc
+       (Identifier "timesum")
+       [ NormalParam (Identifier "text") ]
+       (Block
+          (CodeBlock
+             [ Let (BasicBind (Just (Identifier "time"))) (Literal (Int 0))
+             , For
+                 (BasicBind (Just (Identifier "match")))
+                 (FuncCall
+                    (FieldAccess
+                       (Ident (Identifier "matches")) (Ident (Identifier "text")))
+                    [ NormalArg
+                        (FuncCall
+                           (Ident (Identifier "regex"))
+                           [ NormalArg (Literal (String "(\\d+):(\\d+)")) ])
+                    ])
+                 (Block
+                    (CodeBlock
+                       [ Let
+                           (BasicBind (Just (Identifier "caps")))
+                           (FieldAccess
+                              (Ident (Identifier "captures")) (Ident (Identifier "match")))
+                       , Assign
+                           (Ident (Identifier "time"))
+                           (Plus
+                              (Ident (Identifier "time"))
+                              (Plus
+                                 (Times
+                                    (Literal (Int 60))
+                                    (FuncCall
+                                       (Ident (Identifier "int"))
+                                       [ NormalArg
+                                           (FuncCall
+                                              (FieldAccess
+                                                 (Ident (Identifier "at"))
+                                                 (Ident (Identifier "caps")))
+                                              [ NormalArg (Literal (Int 0)) ])
+                                       ]))
+                                 (FuncCall
+                                    (Ident (Identifier "int"))
+                                    [ NormalArg
+                                        (FuncCall
+                                           (FieldAccess
+                                              (Ident (Identifier "at")) (Ident (Identifier "caps")))
+                                           [ NormalArg (Literal (Int 1)) ])
+                                    ])))
+                       ]))
+             , Plus
+                 (Plus
+                    (FuncCall
+                       (Ident (Identifier "str"))
+                       [ NormalArg
+                           (FuncCall
+                              (Ident (Identifier "int"))
+                              [ NormalArg
+                                  (Divided (Ident (Identifier "time")) (Literal (Int 60)))
+                              ])
+                       ])
+                    (Literal (String ":")))
+                 (FuncCall
+                    (Ident (Identifier "str"))
+                    [ NormalArg
+                        (FuncCall
+                           (FieldAccess
+                              (Ident (Identifier "rem")) (Ident (Identifier "calc")))
+                           [ NormalArg (Ident (Identifier "time"))
+                           , NormalArg (Literal (Int 60))
+                           ])
+                    ])
+             ])))
+, ParBreak
+, Code
+    "typ/compiler/string-13.typ"
+    ( line 26 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "timesum")) [ NormalArg (Literal (String "")) ])
+       , NormalArg (Literal (String "0:0"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-13.typ"
+    ( line 27 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "timesum"))
+              [ NormalArg (Literal (String "2:70")) ])
+       , NormalArg (Literal (String "3:10"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-13.typ"
+    ( line 28 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "timesum"))
+              [ NormalArg (Literal (String "1:20, 2:10, 0:40")) ])
+       , NormalArg (Literal (String "4:10"))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak(), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak(), 
+                 parbreak(), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/string-14.out b/test/typ/compiler/string-14.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/string-14.out
@@ -0,0 +1,198 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/string-14.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/string-14.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/string-14.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/string-14.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "replace")) (Literal (String "ABC")))
+              [ NormalArg (Literal (String ""))
+              , NormalArg (Literal (String "-"))
+              ])
+       , NormalArg (Literal (String "-A-B-C-"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-14.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "replace")) (Literal (String "Ok")))
+              [ NormalArg (Literal (String "Ok"))
+              , NormalArg (Literal (String "Nope"))
+              , KeyValArg (Identifier "count") (Literal (Int 0))
+              ])
+       , NormalArg (Literal (String "Ok"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-14.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "replace")) (Literal (String "to add?")))
+              [ NormalArg (Literal (String ""))
+              , NormalArg (Literal (String "How "))
+              , KeyValArg (Identifier "count") (Literal (Int 1))
+              ])
+       , NormalArg (Literal (String "How to add?"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-14.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "replace")) (Literal (String "AB C DEF GH J")))
+              [ NormalArg (Literal (String " "))
+              , NormalArg (Literal (String ","))
+              , KeyValArg (Identifier "count") (Literal (Int 2))
+              ])
+       , NormalArg (Literal (String "AB,C,DEF GH J"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-14.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "replace"))
+                 (FuncCall
+                    (FieldAccess
+                       (Ident (Identifier "replace"))
+                       (FuncCall
+                          (FieldAccess
+                             (Ident (Identifier "replace"))
+                             (FuncCall
+                                (FieldAccess
+                                   (Ident (Identifier "replace")) (Literal (String "Walcemo")))
+                                [ NormalArg (Literal (String "o"))
+                                , NormalArg (Literal (String "k"))
+                                ]))
+                          [ NormalArg (Literal (String "e"))
+                          , NormalArg (Literal (String "o"))
+                          ]))
+                    [ NormalArg (Literal (String "k"))
+                    , NormalArg (Literal (String "e"))
+                    ]))
+              [ NormalArg (Literal (String "a"))
+              , NormalArg (Literal (String "e"))
+              ])
+       , NormalArg (Literal (String "Welcome"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-14.typ"
+    ( line 14 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "replace")) (Literal (String "123")))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "regex"))
+                     [ NormalArg (Literal (String "\\d$")) ])
+              , NormalArg (Literal (String "_"))
+              ])
+       , NormalArg (Literal (String "12_"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-14.typ"
+    ( line 15 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "replace")) (Literal (String "123")))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "regex"))
+                     [ NormalArg (Literal (String "\\d{1,2}$")) ])
+              , NormalArg (Literal (String "__"))
+              ])
+       , NormalArg (Literal (String "1__"))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/string-15.out b/test/typ/compiler/string-15.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/string-15.out
@@ -0,0 +1,476 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/string-15.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/string-15.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/string-15.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, SoftBreak
+, Code
+    "typ/compiler/string-15.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "replace")) (Literal (String "abc")))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "regex"))
+                     [ NormalArg (Literal (String "[a-z]")) ])
+              , NormalArg
+                  (FuncExpr
+                     [ NormalParam (Identifier "m") ]
+                     (Block
+                        (CodeBlock
+                           [ Plus
+                               (Plus
+                                  (FuncCall
+                                     (Ident (Identifier "str"))
+                                     [ NormalArg
+                                         (FieldAccess
+                                            (Ident (Identifier "start")) (Ident (Identifier "m")))
+                                     ])
+                                  (FieldAccess
+                                     (Ident (Identifier "text")) (Ident (Identifier "m"))))
+                               (FuncCall
+                                  (Ident (Identifier "str"))
+                                  [ NormalArg
+                                      (FieldAccess
+                                         (Ident (Identifier "end")) (Ident (Identifier "m")))
+                                  ])
+                           ])))
+              ])
+       , NormalArg (Literal (String "0a11b22c3"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-15.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "replace")) (Literal (String "abcd, efgh")))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "regex"))
+                     [ NormalArg (Literal (String "\\w+")) ])
+              , NormalArg
+                  (FuncExpr
+                     [ NormalParam (Identifier "m") ]
+                     (Block
+                        (CodeBlock
+                           [ FuncCall
+                               (Ident (Identifier "upper"))
+                               [ NormalArg
+                                   (FieldAccess
+                                      (Ident (Identifier "text")) (Ident (Identifier "m")))
+                               ]
+                           ])))
+              ])
+       , NormalArg (Literal (String "ABCD, EFGH"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-15.typ"
+    ( line 10 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "replace")) (Literal (String "hello : world")))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "regex"))
+                     [ NormalArg (Literal (String "^(.+)\\s*(:)\\s*(.+)$")) ])
+              , NormalArg
+                  (FuncExpr
+                     [ NormalParam (Identifier "m") ]
+                     (Block
+                        (CodeBlock
+                           [ Plus
+                               (Plus
+                                  (Plus
+                                     (FuncCall
+                                        (Ident (Identifier "upper"))
+                                        [ NormalArg
+                                            (FuncCall
+                                               (FieldAccess
+                                                  (Ident (Identifier "at"))
+                                                  (FieldAccess
+                                                     (Ident (Identifier "captures"))
+                                                     (Ident (Identifier "m"))))
+                                               [ NormalArg (Literal (Int 0)) ])
+                                        ])
+                                     (FuncCall
+                                        (FieldAccess
+                                           (Ident (Identifier "at"))
+                                           (FieldAccess
+                                              (Ident (Identifier "captures"))
+                                              (Ident (Identifier "m"))))
+                                        [ NormalArg (Literal (Int 1)) ]))
+                                  (Literal (String " ")))
+                               (FuncCall
+                                  (Ident (Identifier "upper"))
+                                  [ NormalArg
+                                      (FuncCall
+                                         (FieldAccess
+                                            (Ident (Identifier "at"))
+                                            (FieldAccess
+                                               (Ident (Identifier "captures"))
+                                               (Ident (Identifier "m"))))
+                                         [ NormalArg (Literal (Int 2)) ])
+                                  ])
+                           ])))
+              ])
+       , NormalArg (Literal (String "HELLO : WORLD"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-15.typ"
+    ( line 13 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "replace"))
+                 (Literal (String "hello world, lorem ipsum")))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "regex"))
+                     [ NormalArg (Literal (String "(\\w+) (\\w+)")) ])
+              , NormalArg
+                  (FuncExpr
+                     [ NormalParam (Identifier "m") ]
+                     (Block
+                        (CodeBlock
+                           [ Plus
+                               (Plus
+                                  (FuncCall
+                                     (FieldAccess
+                                        (Ident (Identifier "at"))
+                                        (FieldAccess
+                                           (Ident (Identifier "captures"))
+                                           (Ident (Identifier "m"))))
+                                     [ NormalArg (Literal (Int 1)) ])
+                                  (Literal (String " ")))
+                               (FuncCall
+                                  (FieldAccess
+                                     (Ident (Identifier "at"))
+                                     (FieldAccess
+                                        (Ident (Identifier "captures")) (Ident (Identifier "m"))))
+                                  [ NormalArg (Literal (Int 0)) ])
+                           ])))
+              ])
+       , NormalArg (Literal (String "world hello, ipsum lorem"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-15.typ"
+    ( line 16 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "replace"))
+                 (Literal (String "hello world, lorem ipsum")))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "regex"))
+                     [ NormalArg (Literal (String "(\\w+) (\\w+)")) ])
+              , KeyValArg (Identifier "count") (Literal (Int 1))
+              , NormalArg
+                  (FuncExpr
+                     [ NormalParam (Identifier "m") ]
+                     (Block
+                        (CodeBlock
+                           [ Plus
+                               (Plus
+                                  (FuncCall
+                                     (FieldAccess
+                                        (Ident (Identifier "at"))
+                                        (FieldAccess
+                                           (Ident (Identifier "captures"))
+                                           (Ident (Identifier "m"))))
+                                     [ NormalArg (Literal (Int 1)) ])
+                                  (Literal (String " ")))
+                               (FuncCall
+                                  (FieldAccess
+                                     (Ident (Identifier "at"))
+                                     (FieldAccess
+                                        (Ident (Identifier "captures")) (Ident (Identifier "m"))))
+                                  [ NormalArg (Literal (Int 0)) ])
+                           ])))
+              ])
+       , NormalArg (Literal (String "world hello, lorem ipsum"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-15.typ"
+    ( line 19 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "replace")) (Literal (String "123 456")))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "regex"))
+                     [ NormalArg (Literal (String "[a-z]+")) ])
+              , NormalArg (Literal (String "a"))
+              ])
+       , NormalArg (Literal (String "123 456"))
+       ])
+, ParBreak
+, Code
+    "typ/compiler/string-15.typ"
+    ( line 21 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "replace")) (Literal (String "abc")))
+              [ NormalArg (Literal (String ""))
+              , NormalArg
+                  (FuncExpr [ NormalParam (Identifier "m") ] (Literal (String "-")))
+              ])
+       , NormalArg (Literal (String "-a-b-c-"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-15.typ"
+    ( line 22 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "replace")) (Literal (String "abc")))
+              [ NormalArg (Literal (String ""))
+              , NormalArg
+                  (FuncExpr [ NormalParam (Identifier "m") ] (Literal (String "-")))
+              , KeyValArg (Identifier "count") (Literal (Int 1))
+              ])
+       , NormalArg (Literal (String "-abc"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-15.typ"
+    ( line 23 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "replace")) (Literal (String "123")))
+              [ NormalArg (Literal (String "abc"))
+              , NormalArg
+                  (FuncExpr [ NormalParam (Identifier "m") ] (Literal (String "")))
+              ])
+       , NormalArg (Literal (String "123"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-15.typ"
+    ( line 24 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "replace")) (Literal (String "123")))
+              [ NormalArg (Literal (String "abc"))
+              , NormalArg
+                  (FuncExpr [ NormalParam (Identifier "m") ] (Literal (String "")))
+              , KeyValArg (Identifier "count") (Literal (Int 2))
+              ])
+       , NormalArg (Literal (String "123"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-15.typ"
+    ( line 25 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "replace")) (Literal (String "a123b123c")))
+              [ NormalArg (Literal (String "123"))
+              , NormalArg
+                  (FuncExpr
+                     [ NormalParam (Identifier "m") ]
+                     (Block
+                        (CodeBlock
+                           [ Plus
+                               (Plus
+                                  (FuncCall
+                                     (Ident (Identifier "str"))
+                                     [ NormalArg
+                                         (FieldAccess
+                                            (Ident (Identifier "start")) (Ident (Identifier "m")))
+                                     ])
+                                  (Literal (String "-")))
+                               (FuncCall
+                                  (Ident (Identifier "str"))
+                                  [ NormalArg
+                                      (FieldAccess
+                                         (Ident (Identifier "end")) (Ident (Identifier "m")))
+                                  ])
+                           ])))
+              ])
+       , NormalArg (Literal (String "a1-4b5-8c"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-15.typ"
+    ( line 28 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "replace")) (Literal (String "halla warld")))
+              [ NormalArg (Literal (String "a"))
+              , NormalArg
+                  (FuncExpr
+                     [ NormalParam (Identifier "m") ]
+                     (Block
+                        (CodeBlock
+                           [ If
+                               [ ( Equals
+                                     (FieldAccess
+                                        (Ident (Identifier "start")) (Ident (Identifier "m")))
+                                     (Literal (Int 1))
+                                 , Block (CodeBlock [ Literal (String "e") ])
+                                 )
+                               , ( Or
+                                     (Equals
+                                        (FieldAccess
+                                           (Ident (Identifier "start")) (Ident (Identifier "m")))
+                                        (Literal (Int 4)))
+                                     (Equals
+                                        (FieldAccess
+                                           (Ident (Identifier "start")) (Ident (Identifier "m")))
+                                        (Literal (Int 7)))
+                                 , Block (CodeBlock [ Literal (String "o") ])
+                                 )
+                               ]
+                           ])))
+              ])
+       , NormalArg (Literal (String "hello world"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-15.typ"
+    ( line 32 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "replace")) (Literal (String "aaa")))
+              [ NormalArg (Literal (String "a"))
+              , NormalArg
+                  (FuncExpr
+                     [ NormalParam (Identifier "m") ]
+                     (FuncCall
+                        (Ident (Identifier "str"))
+                        [ NormalArg
+                            (FuncCall
+                               (FieldAccess
+                                  (Ident (Identifier "len"))
+                                  (FieldAccess
+                                     (Ident (Identifier "captures")) (Ident (Identifier "m"))))
+                               [])
+                        ]))
+              ])
+       , NormalArg (Literal (String "000"))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak(), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/string-16.out b/test/typ/compiler/string-16.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/string-16.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/string-17.out b/test/typ/compiler/string-17.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/string-17.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/string-18.out b/test/typ/compiler/string-18.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/string-18.out
@@ -0,0 +1,420 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/string-18.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/string-18.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/string-18.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/string-18.typ"
+    ( line 3 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "str")))
+       (Literal (String "Typst, LaTeX, Word, InDesign")))
+, SoftBreak
+, Code
+    "typ/compiler/string-18.typ"
+    ( line 4 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "array")))
+       (Array
+          [ Reg (Literal (String "Typst"))
+          , Reg (Literal (String "LaTeX"))
+          , Reg (Literal (String "Word"))
+          , Reg (Literal (String "InDesign"))
+          ]))
+, SoftBreak
+, Code
+    "typ/compiler/string-18.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "map"))
+                 (FuncCall
+                    (FieldAccess
+                       (Ident (Identifier "split")) (Ident (Identifier "str")))
+                    [ NormalArg (Literal (String ",")) ]))
+              [ NormalArg
+                  (FuncExpr
+                     [ NormalParam (Identifier "s") ]
+                     (FuncCall
+                        (FieldAccess (Ident (Identifier "trim")) (Ident (Identifier "s")))
+                        []))
+              ])
+       , NormalArg (Ident (Identifier "array"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-18.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess (Ident (Identifier "trim")) (Literal (String ""))) [])
+       , NormalArg (Literal (String ""))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-18.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "trim")) (Literal (String " abc ")))
+              [ KeyValArg (Identifier "at") (Ident (Identifier "start")) ])
+       , NormalArg (Literal (String "abc "))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-18.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "trim")) (Literal (String " abc ")))
+              [ KeyValArg (Identifier "at") (Ident (Identifier "end"))
+              , KeyValArg (Identifier "repeat") (Literal (Boolean True))
+              ])
+       , NormalArg (Literal (String " abc"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-18.typ"
+    ( line 9 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "trim")) (Literal (String "  abc")))
+              [ KeyValArg (Identifier "at") (Ident (Identifier "start"))
+              , KeyValArg (Identifier "repeat") (Literal (Boolean False))
+              ])
+       , NormalArg (Literal (String "abc"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-18.typ"
+    ( line 10 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "trim")) (Literal (String "aabcaa")))
+              [ NormalArg (Literal (String "a"))
+              , KeyValArg (Identifier "repeat") (Literal (Boolean False))
+              ])
+       , NormalArg (Literal (String "abca"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-18.typ"
+    ( line 11 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "trim")) (Literal (String "aabca")))
+              [ NormalArg (Literal (String "a"))
+              , KeyValArg (Identifier "at") (Ident (Identifier "start"))
+              ])
+       , NormalArg (Literal (String "bca"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-18.typ"
+    ( line 12 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "trim")) (Literal (String "aabcaa")))
+              [ NormalArg (Literal (String "a"))
+              , KeyValArg (Identifier "at") (Ident (Identifier "end"))
+              , KeyValArg (Identifier "repeat") (Literal (Boolean False))
+              ])
+       , NormalArg (Literal (String "aabca"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-18.typ"
+    ( line 13 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess (Ident (Identifier "trim")) (Literal (String "")))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "regex")) [ NormalArg (Literal (String ".")) ])
+              ])
+       , NormalArg (Literal (String ""))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-18.typ"
+    ( line 14 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "trim")) (Literal (String "123abc456")))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "regex"))
+                     [ NormalArg (Literal (String "\\d")) ])
+              ])
+       , NormalArg (Literal (String "abc"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-18.typ"
+    ( line 15 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "trim")) (Literal (String "123abc456")))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "regex"))
+                     [ NormalArg (Literal (String "\\d")) ])
+              , KeyValArg (Identifier "repeat") (Literal (Boolean False))
+              ])
+       , NormalArg (Literal (String "23abc45"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-18.typ"
+    ( line 16 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "trim")) (Literal (String "123a4b5c678")))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "regex"))
+                     [ NormalArg (Literal (String "\\d")) ])
+              , KeyValArg (Identifier "repeat") (Literal (Boolean True))
+              ])
+       , NormalArg (Literal (String "a4b5c"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-18.typ"
+    ( line 17 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "trim")) (Literal (String "123a4b5c678")))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "regex"))
+                     [ NormalArg (Literal (String "\\d")) ])
+              , KeyValArg (Identifier "repeat") (Literal (Boolean False))
+              ])
+       , NormalArg (Literal (String "23a4b5c67"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-18.typ"
+    ( line 18 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "trim")) (Literal (String "123abc456")))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "regex"))
+                     [ NormalArg (Literal (String "\\d")) ])
+              , KeyValArg (Identifier "at") (Ident (Identifier "start"))
+              ])
+       , NormalArg (Literal (String "abc456"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-18.typ"
+    ( line 19 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "trim")) (Literal (String "123abc456")))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "regex"))
+                     [ NormalArg (Literal (String "\\d")) ])
+              , KeyValArg (Identifier "at") (Ident (Identifier "end"))
+              ])
+       , NormalArg (Literal (String "123abc"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-18.typ"
+    ( line 20 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "trim")) (Literal (String "123abc456")))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "regex"))
+                     [ NormalArg (Literal (String "\\d+")) ])
+              , KeyValArg (Identifier "at") (Ident (Identifier "end"))
+              , KeyValArg (Identifier "repeat") (Literal (Boolean False))
+              ])
+       , NormalArg (Literal (String "123abc"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-18.typ"
+    ( line 21 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "trim")) (Literal (String "123abc456")))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "regex"))
+                     [ NormalArg (Literal (String "\\d{1,2}$")) ])
+              , KeyValArg (Identifier "repeat") (Literal (Boolean False))
+              ])
+       , NormalArg (Literal (String "123abc4"))
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-18.typ"
+    ( line 22 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "trim")) (Literal (String "hello world")))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "regex")) [ NormalArg (Literal (String ".")) ])
+              ])
+       , NormalArg (Literal (String ""))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/string-19.out b/test/typ/compiler/string-19.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/string-19.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/string-20.out b/test/typ/compiler/string-20.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/string-20.out
@@ -0,0 +1,130 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/string-20.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/string-20.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/string-20.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/string-20.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess (Ident (Identifier "split")) (Literal (String "abc")))
+              [ NormalArg (Literal (String "")) ])
+       , NormalArg
+           (Array
+              [ Reg (Literal (String ""))
+              , Reg (Literal (String "a"))
+              , Reg (Literal (String "b"))
+              , Reg (Literal (String "c"))
+              , Reg (Literal (String ""))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-20.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess (Ident (Identifier "split")) (Literal (String "abc")))
+              [ NormalArg (Literal (String "b")) ])
+       , NormalArg
+           (Array [ Reg (Literal (String "a")) , Reg (Literal (String "c")) ])
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-20.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "split")) (Literal (String "a123c")))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "regex"))
+                     [ NormalArg (Literal (String "\\d")) ])
+              ])
+       , NormalArg
+           (Array
+              [ Reg (Literal (String "a"))
+              , Reg (Literal (String ""))
+              , Reg (Literal (String ""))
+              , Reg (Literal (String "c"))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/compiler/string-20.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "split")) (Literal (String "a123c")))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "regex"))
+                     [ NormalArg (Literal (String "\\d+")) ])
+              ])
+       , NormalArg
+           (Array [ Reg (Literal (String "a")) , Reg (Literal (String "c")) ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/string-21.out b/test/typ/compiler/string-21.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/string-21.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/while-00.out b/test/typ/compiler/while-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/while-00.out
@@ -0,0 +1,136 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/while-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/while-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/while-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compiler/while-00.typ"
+    ( line 3 , column 2 )
+    (Let (BasicBind (Just (Identifier "i"))) (Literal (Int 0)))
+, SoftBreak
+, Code
+    "typ/compiler/while-00.typ"
+    ( line 4 , column 2 )
+    (While
+       (LessThan (Ident (Identifier "i")) (Literal (Int 10)))
+       (Block
+          (Content
+             [ SoftBreak
+             , Code
+                 "typ/compiler/while-00.typ"
+                 ( line 5 , column 4 )
+                 (Assign
+                    (Ident (Identifier "i"))
+                    (Plus (Ident (Identifier "i")) (Literal (Int 2))))
+             , SoftBreak
+             , Code
+                 "typ/compiler/while-00.typ"
+                 ( line 6 , column 4 )
+                 (Ident (Identifier "i"))
+             , ParBreak
+             ])))
+, ParBreak
+, Comment
+, Code
+    "typ/compiler/while-00.typ"
+    ( line 10 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "iter"))) (Literal (Boolean True)))
+, SoftBreak
+, Code
+    "typ/compiler/while-00.typ"
+    ( line 11 , column 2 )
+    (While
+       (Ident (Identifier "iter"))
+       (Block
+          (CodeBlock
+             [ Assign (Ident (Identifier "iter")) (Literal (Boolean False))
+             , Literal (String "Hi.")
+             ])))
+, ParBreak
+, Code
+    "typ/compiler/while-00.typ"
+    ( line 16 , column 2 )
+    (While
+       (Literal (Boolean False))
+       (Block (CodeBlock [ Ident (Identifier "dont-care") ])))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [2]), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [4]), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [6]), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [8]), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [10]), 
+                 parbreak(), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 text(body: [Hi.]), 
+                 parbreak(), 
+                 parbreak() })
diff --git a/test/typ/compiler/while-01.out b/test/typ/compiler/while-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/while-01.out
@@ -0,0 +1,95 @@
+--- parse tree ---
+[ Code
+    "typ/compiler/while-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compiler/while-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compiler/while-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, SoftBreak
+, Code
+    "typ/compiler/while-01.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (While (Literal (Boolean False)) (Block (CodeBlock [])))
+       , NormalArg (Literal None)
+       ])
+, ParBreak
+, Code
+    "typ/compiler/while-01.typ"
+    ( line 7 , column 2 )
+    (Let (BasicBind (Just (Identifier "i"))) (Literal (Int 0)))
+, SoftBreak
+, Code
+    "typ/compiler/while-01.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "type"))
+              [ NormalArg
+                  (While
+                     (LessThan (Ident (Identifier "i")) (Literal (Int 1)))
+                     (Block
+                        (Content
+                           [ Code
+                               "typ/compiler/while-01.typ"
+                               ( line 8 , column 26 )
+                               (Assign
+                                  (Ident (Identifier "i"))
+                                  (Plus (Ident (Identifier "i")) (Literal (Int 1))))
+                           ])))
+              ])
+       , NormalArg (Literal (String "content"))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compiler/while-02.out b/test/typ/compiler/while-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/while-02.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/while-03.out b/test/typ/compiler/while-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/while-03.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/while-04.out b/test/typ/compiler/while-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/while-04.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compiler/while-05.out b/test/typ/compiler/while-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compiler/while-05.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/calc-00.out b/test/typ/compute/calc-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/calc-00.out
@@ -0,0 +1,181 @@
+--- parse tree ---
+[ Code
+    "typ/compute/calc-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compute/calc-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compute/calc-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compute/calc-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "int")) [ NormalArg (Literal (Boolean False)) ])
+       , NormalArg (Literal (Int 0))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-00.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "int")) [ NormalArg (Literal (Boolean True)) ])
+       , NormalArg (Literal (Int 1))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-00.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "int")) [ NormalArg (Literal (Int 10)) ])
+       , NormalArg (Literal (Int 10))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-00.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "int")) [ NormalArg (Literal (String "150")) ])
+       , NormalArg (Literal (Int 150))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-00.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "int"))
+              [ NormalArg (Divided (Literal (Int 10)) (Literal (Int 3))) ])
+       , NormalArg (Literal (Int 3))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-00.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "float")) [ NormalArg (Literal (Int 10)) ])
+       , NormalArg (Literal (Float 10.0))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-00.typ"
+    ( line 9 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "float"))
+              [ NormalArg
+                  (Times
+                     (Literal (Numeric 50.0 Percent)) (Literal (Numeric 30.0 Percent)))
+              ])
+       , NormalArg (Literal (Float 0.15))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-00.typ"
+    ( line 10 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "float"))
+              [ NormalArg (Literal (String "31.4e-1")) ])
+       , NormalArg (Literal (Float 3.14))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-00.typ"
+    ( line 11 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "type"))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "float")) [ NormalArg (Literal (Int 10)) ])
+              ])
+       , NormalArg (Literal (String "float"))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compute/calc-01.out b/test/typ/compute/calc-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/calc-01.out
@@ -0,0 +1,82 @@
+--- parse tree ---
+[ Code
+    "typ/compute/calc-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compute/calc-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compute/calc-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/compute/calc-01.typ"
+    ( line 2 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "round")) (Ident (Identifier "calc")))
+              [ NormalArg
+                  (FieldAccess (Ident (Identifier "e")) (Ident (Identifier "calc")))
+              , KeyValArg (Identifier "digits") (Literal (Int 2))
+              ])
+       , NormalArg (Literal (Float 2.72))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-01.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "round")) (Ident (Identifier "calc")))
+              [ NormalArg
+                  (FieldAccess (Ident (Identifier "pi")) (Ident (Identifier "calc")))
+              , KeyValArg (Identifier "digits") (Literal (Int 2))
+              ])
+       , NormalArg (Literal (Float 3.14))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compute/calc-02.out b/test/typ/compute/calc-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/calc-02.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/calc-03.out b/test/typ/compute/calc-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/calc-03.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/calc-04.out b/test/typ/compute/calc-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/calc-04.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/calc-05.out b/test/typ/compute/calc-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/calc-05.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/calc-06.out b/test/typ/compute/calc-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/calc-06.out
@@ -0,0 +1,157 @@
+--- parse tree ---
+[ Code
+    "typ/compute/calc-06.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compute/calc-06.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compute/calc-06.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compute/calc-06.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "abs")) (Ident (Identifier "calc")))
+              [ NormalArg (Negated (Literal (Int 3))) ])
+       , NormalArg (Literal (Int 3))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-06.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "abs")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Int 3)) ])
+       , NormalArg (Literal (Int 3))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-06.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "abs")) (Ident (Identifier "calc")))
+              [ NormalArg (Negated (Literal (Float 0.0))) ])
+       , NormalArg (Literal (Float 0.0))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-06.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "abs")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Float 0.0)) ])
+       , NormalArg (Negated (Literal (Float 0.0)))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-06.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "abs")) (Ident (Identifier "calc")))
+              [ NormalArg (Negated (Literal (Float 3.14))) ])
+       , NormalArg (Literal (Float 3.14))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-06.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "abs")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Numeric 50.0 Percent)) ])
+       , NormalArg (Literal (Numeric 50.0 Percent))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-06.typ"
+    ( line 9 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "abs")) (Ident (Identifier "calc")))
+              [ NormalArg (Negated (Literal (Numeric 25.0 Percent))) ])
+       , NormalArg (Literal (Numeric 25.0 Percent))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compute/calc-07.out b/test/typ/compute/calc-07.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/calc-07.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/calc-08.out b/test/typ/compute/calc-08.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/calc-08.out
@@ -0,0 +1,109 @@
+--- parse tree ---
+[ Code
+    "typ/compute/calc-08.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compute/calc-08.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compute/calc-08.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compute/calc-08.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "even")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Int 2)) ])
+       , NormalArg (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-08.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "odd")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Int 2)) ])
+       , NormalArg (Literal (Boolean False))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-08.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "odd")) (Ident (Identifier "calc")))
+              [ NormalArg (Negated (Literal (Int 1))) ])
+       , NormalArg (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-08.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "even")) (Ident (Identifier "calc")))
+              [ NormalArg (Negated (Literal (Int 11))) ])
+       , NormalArg (Literal (Boolean False))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compute/calc-09.out b/test/typ/compute/calc-09.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/calc-09.out
@@ -0,0 +1,133 @@
+--- parse tree ---
+[ Code
+    "typ/compute/calc-09.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compute/calc-09.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compute/calc-09.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compute/calc-09.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "rem")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Int 1)) , NormalArg (Literal (Int 1)) ])
+       , NormalArg (Literal (Int 0))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-09.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "rem")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Int 5)) , NormalArg (Literal (Int 3)) ])
+       , NormalArg (Literal (Int 2))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-09.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "rem")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Int 5))
+              , NormalArg (Negated (Literal (Int 3)))
+              ])
+       , NormalArg (Literal (Int 2))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-09.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "rem")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Float 22.5))
+              , NormalArg (Literal (Int 10))
+              ])
+       , NormalArg (Literal (Float 2.5))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-09.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "rem")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Int 9)) , NormalArg (Literal (Float 4.5)) ])
+       , NormalArg (Literal (Int 0))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [❌(]), 
+                 text(body: [1]), 
+                 text(body: [ /= ]), 
+                 text(body: [0]), 
+                 text(body: [)]), 
+                 parbreak() })
diff --git a/test/typ/compute/calc-10.out b/test/typ/compute/calc-10.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/calc-10.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/calc-11.out b/test/typ/compute/calc-11.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/calc-11.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/calc-12.out b/test/typ/compute/calc-12.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/calc-12.out
@@ -0,0 +1,129 @@
+--- parse tree ---
+[ Code
+    "typ/compute/calc-12.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compute/calc-12.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compute/calc-12.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compute/calc-12.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "quo")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Int 1)) , NormalArg (Literal (Int 1)) ])
+       , NormalArg (Literal (Int 1))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-12.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "quo")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Int 5)) , NormalArg (Literal (Int 3)) ])
+       , NormalArg (Literal (Int 1))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-12.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "quo")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Int 5))
+              , NormalArg (Negated (Literal (Int 3)))
+              ])
+       , NormalArg (Negated (Literal (Int 1)))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-12.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "quo")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Float 22.5))
+              , NormalArg (Literal (Int 10))
+              ])
+       , NormalArg (Literal (Int 2))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-12.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "quo")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Int 9)) , NormalArg (Literal (Float 4.5)) ])
+       , NormalArg (Literal (Int 2))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compute/calc-13.out b/test/typ/compute/calc-13.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/calc-13.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/calc-14.out b/test/typ/compute/calc-14.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/calc-14.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/calc-15.out b/test/typ/compute/calc-15.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/calc-15.out
@@ -0,0 +1,117 @@
+--- parse tree ---
+[ Code
+    "typ/compute/calc-15.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compute/calc-15.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compute/calc-15.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compute/calc-15.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "min")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Int 2))
+              , NormalArg (Negated (Literal (Int 4)))
+              ])
+       , NormalArg (Negated (Literal (Int 4)))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-15.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "min")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Float 3.5))
+              , NormalArg (Literal (Float 100.0))
+              , NormalArg (Negated (Literal (Float 0.1)))
+              , NormalArg (Literal (Int 3))
+              ])
+       , NormalArg (Negated (Literal (Float 0.1)))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-15.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "max")) (Ident (Identifier "calc")))
+              [ NormalArg (Negated (Literal (Int 3)))
+              , NormalArg (Literal (Int 11))
+              ])
+       , NormalArg (Literal (Int 11))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-15.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "min")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (String "hi")) ])
+       , NormalArg (Literal (String "hi"))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compute/calc-16.out b/test/typ/compute/calc-16.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/calc-16.out
@@ -0,0 +1,77 @@
+--- parse tree ---
+[ Code
+    "typ/compute/calc-16.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compute/calc-16.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compute/calc-16.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compute/calc-16.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "pow")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Int 10)) , NormalArg (Literal (Int 0)) ])
+       , NormalArg (Literal (Int 1))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-16.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "pow")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Int 2)) , NormalArg (Literal (Int 4)) ])
+       , NormalArg (Literal (Int 16))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compute/calc-17.out b/test/typ/compute/calc-17.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/calc-17.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/calc-18.out b/test/typ/compute/calc-18.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/calc-18.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/calc-19.out b/test/typ/compute/calc-19.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/calc-19.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/calc-20.out b/test/typ/compute/calc-20.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/calc-20.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/calc-21.out b/test/typ/compute/calc-21.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/calc-21.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/calc-22.out b/test/typ/compute/calc-22.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/calc-22.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/calc-23.out b/test/typ/compute/calc-23.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/calc-23.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/calc-24.out b/test/typ/compute/calc-24.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/calc-24.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/calc-25.out b/test/typ/compute/calc-25.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/calc-25.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/calc-26.out b/test/typ/compute/calc-26.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/calc-26.out
@@ -0,0 +1,77 @@
+--- parse tree ---
+[ Code
+    "typ/compute/calc-26.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compute/calc-26.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compute/calc-26.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compute/calc-26.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "fact")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Int 0)) ])
+       , NormalArg (Literal (Int 1))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-26.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "fact")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Int 5)) ])
+       , NormalArg (Literal (Int 120))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compute/calc-27.out b/test/typ/compute/calc-27.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/calc-27.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/calc-28.out b/test/typ/compute/calc-28.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/calc-28.out
@@ -0,0 +1,109 @@
+--- parse tree ---
+[ Code
+    "typ/compute/calc-28.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compute/calc-28.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compute/calc-28.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compute/calc-28.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "perm")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Int 0)) , NormalArg (Literal (Int 0)) ])
+       , NormalArg (Literal (Int 1))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-28.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "perm")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Int 5)) , NormalArg (Literal (Int 3)) ])
+       , NormalArg (Literal (Int 60))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-28.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "perm")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Int 5)) , NormalArg (Literal (Int 5)) ])
+       , NormalArg (Literal (Int 120))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-28.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "perm")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Int 5)) , NormalArg (Literal (Int 6)) ])
+       , NormalArg (Literal (Int 0))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compute/calc-29.out b/test/typ/compute/calc-29.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/calc-29.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/calc-30.out b/test/typ/compute/calc-30.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/calc-30.out
@@ -0,0 +1,125 @@
+--- parse tree ---
+[ Code
+    "typ/compute/calc-30.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compute/calc-30.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compute/calc-30.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compute/calc-30.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "binom")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Int 0)) , NormalArg (Literal (Int 0)) ])
+       , NormalArg (Literal (Int 1))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-30.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "binom")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Int 5)) , NormalArg (Literal (Int 3)) ])
+       , NormalArg (Literal (Int 10))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-30.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "binom")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Int 5)) , NormalArg (Literal (Int 5)) ])
+       , NormalArg (Literal (Int 1))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-30.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "binom")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Int 5)) , NormalArg (Literal (Int 6)) ])
+       , NormalArg (Literal (Int 0))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-30.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "binom")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Int 6)) , NormalArg (Literal (Int 2)) ])
+       , NormalArg (Literal (Int 15))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compute/calc-31.out b/test/typ/compute/calc-31.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/calc-31.out
@@ -0,0 +1,161 @@
+--- parse tree ---
+[ Code
+    "typ/compute/calc-31.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compute/calc-31.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compute/calc-31.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compute/calc-31.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "gcd")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Int 112)) , NormalArg (Literal (Int 77)) ])
+       , NormalArg (Literal (Int 7))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-31.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "gcd")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Int 12)) , NormalArg (Literal (Int 96)) ])
+       , NormalArg (Literal (Int 12))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-31.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "gcd")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Int 13)) , NormalArg (Literal (Int 9)) ])
+       , NormalArg (Literal (Int 1))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-31.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "gcd")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Int 13))
+              , NormalArg (Negated (Literal (Int 9)))
+              ])
+       , NormalArg (Literal (Int 1))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-31.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "gcd")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Int 272557))
+              , NormalArg (Literal (Int 272557))
+              ])
+       , NormalArg (Literal (Int 272557))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-31.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "gcd")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Int 0)) , NormalArg (Literal (Int 0)) ])
+       , NormalArg (Literal (Int 0))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-31.typ"
+    ( line 9 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "gcd")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Int 7)) , NormalArg (Literal (Int 0)) ])
+       , NormalArg (Literal (Int 7))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compute/calc-32.out b/test/typ/compute/calc-32.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/calc-32.out
@@ -0,0 +1,161 @@
+--- parse tree ---
+[ Code
+    "typ/compute/calc-32.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compute/calc-32.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compute/calc-32.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compute/calc-32.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "lcm")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Int 112)) , NormalArg (Literal (Int 77)) ])
+       , NormalArg (Literal (Int 1232))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-32.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "lcm")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Int 12)) , NormalArg (Literal (Int 96)) ])
+       , NormalArg (Literal (Int 96))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-32.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "lcm")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Int 13)) , NormalArg (Literal (Int 9)) ])
+       , NormalArg (Literal (Int 117))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-32.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "lcm")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Int 13))
+              , NormalArg (Negated (Literal (Int 9)))
+              ])
+       , NormalArg (Literal (Int 117))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-32.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "lcm")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Int 272557))
+              , NormalArg (Literal (Int 272557))
+              ])
+       , NormalArg (Literal (Int 272557))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-32.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "lcm")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Int 0)) , NormalArg (Literal (Int 0)) ])
+       , NormalArg (Literal (Int 0))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-32.typ"
+    ( line 9 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "lcm")) (Ident (Identifier "calc")))
+              [ NormalArg (Literal (Int 8)) , NormalArg (Literal (Int 0)) ])
+       , NormalArg (Literal (Int 0))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compute/calc-33.out b/test/typ/compute/calc-33.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/calc-33.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/calc-34.out b/test/typ/compute/calc-34.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/calc-34.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/calc-35.out b/test/typ/compute/calc-35.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/calc-35.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/calc-36.out b/test/typ/compute/calc-36.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/calc-36.out
@@ -0,0 +1,242 @@
+--- parse tree ---
+[ Code
+    "typ/compute/calc-36.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compute/calc-36.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compute/calc-36.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compute/calc-36.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "range")) [ NormalArg (Literal (Int 4)) ])
+       , NormalArg
+           (Array
+              [ Reg (Literal (Int 0))
+              , Reg (Literal (Int 1))
+              , Reg (Literal (Int 2))
+              , Reg (Literal (Int 3))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-36.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "range"))
+              [ NormalArg (Literal (Int 1)) , NormalArg (Literal (Int 4)) ])
+       , NormalArg
+           (Array
+              [ Reg (Literal (Int 1))
+              , Reg (Literal (Int 2))
+              , Reg (Literal (Int 3))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-36.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "range"))
+              [ NormalArg (Negated (Literal (Int 4)))
+              , NormalArg (Literal (Int 2))
+              ])
+       , NormalArg
+           (Array
+              [ Reg (Negated (Literal (Int 4)))
+              , Reg (Negated (Literal (Int 3)))
+              , Reg (Negated (Literal (Int 2)))
+              , Reg (Negated (Literal (Int 1)))
+              , Reg (Literal (Int 0))
+              , Reg (Literal (Int 1))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-36.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "range"))
+              [ NormalArg (Literal (Int 10)) , NormalArg (Literal (Int 5)) ])
+       , NormalArg (Array [])
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-36.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "range"))
+              [ NormalArg (Literal (Int 10))
+              , KeyValArg (Identifier "step") (Literal (Int 3))
+              ])
+       , NormalArg
+           (Array
+              [ Reg (Literal (Int 0))
+              , Reg (Literal (Int 3))
+              , Reg (Literal (Int 6))
+              , Reg (Literal (Int 9))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-36.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "range"))
+              [ NormalArg (Literal (Int 1))
+              , NormalArg (Literal (Int 4))
+              , KeyValArg (Identifier "step") (Literal (Int 1))
+              ])
+       , NormalArg
+           (Array
+              [ Reg (Literal (Int 1))
+              , Reg (Literal (Int 2))
+              , Reg (Literal (Int 3))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-36.typ"
+    ( line 9 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "range"))
+              [ NormalArg (Literal (Int 1))
+              , NormalArg (Literal (Int 8))
+              , KeyValArg (Identifier "step") (Literal (Int 2))
+              ])
+       , NormalArg
+           (Array
+              [ Reg (Literal (Int 1))
+              , Reg (Literal (Int 3))
+              , Reg (Literal (Int 5))
+              , Reg (Literal (Int 7))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-36.typ"
+    ( line 10 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "range"))
+              [ NormalArg (Literal (Int 5))
+              , NormalArg (Literal (Int 2))
+              , KeyValArg (Identifier "step") (Negated (Literal (Int 1)))
+              ])
+       , NormalArg
+           (Array
+              [ Reg (Literal (Int 5))
+              , Reg (Literal (Int 4))
+              , Reg (Literal (Int 3))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/compute/calc-36.typ"
+    ( line 11 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "range"))
+              [ NormalArg (Literal (Int 10))
+              , NormalArg (Literal (Int 0))
+              , KeyValArg (Identifier "step") (Negated (Literal (Int 3)))
+              ])
+       , NormalArg
+           (Array
+              [ Reg (Literal (Int 10))
+              , Reg (Literal (Int 7))
+              , Reg (Literal (Int 4))
+              , Reg (Literal (Int 1))
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compute/calc-37.out b/test/typ/compute/calc-37.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/calc-37.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/calc-38.out b/test/typ/compute/calc-38.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/calc-38.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/calc-39.out b/test/typ/compute/calc-39.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/calc-39.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/calc-40.out b/test/typ/compute/calc-40.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/calc-40.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/construct-00.out b/test/typ/compute/construct-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/construct-00.out
@@ -0,0 +1,193 @@
+--- parse tree ---
+[ Code
+    "typ/compute/construct-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compute/construct-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compute/construct-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compute/construct-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "rgb"))
+              [ NormalArg (Literal (Numeric 0.0 Percent))
+              , NormalArg (Literal (Numeric 30.0 Percent))
+              , NormalArg (Literal (Numeric 70.0 Percent))
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rgb"))
+              [ NormalArg (Literal (String "004db3")) ])
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/compute/construct-00.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "rgb"))
+              [ NormalArg (Literal (Int 255))
+              , NormalArg (Literal (Int 0))
+              , NormalArg (Literal (Int 0))
+              , NormalArg (Literal (Numeric 50.0 Percent))
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rgb"))
+              [ NormalArg (Literal (String "ff000080")) ])
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/compute/construct-00.typ"
+    ( line 9 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "lighten"))
+                 (FuncCall
+                    (Ident (Identifier "rgb"))
+                    [ NormalArg (Literal (Int 25))
+                    , NormalArg (Literal (Int 35))
+                    , NormalArg (Literal (Int 45))
+                    ]))
+              [ NormalArg (Literal (Numeric 10.0 Percent)) ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rgb"))
+              [ NormalArg (Literal (Int 48))
+              , NormalArg (Literal (Int 57))
+              , NormalArg (Literal (Int 66))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/compute/construct-00.typ"
+    ( line 10 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "darken"))
+                 (FuncCall
+                    (Ident (Identifier "rgb"))
+                    [ NormalArg (Literal (Int 40))
+                    , NormalArg (Literal (Int 30))
+                    , NormalArg (Literal (Int 20))
+                    ]))
+              [ NormalArg (Literal (Numeric 10.0 Percent)) ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rgb"))
+              [ NormalArg (Literal (Int 36))
+              , NormalArg (Literal (Int 27))
+              , NormalArg (Literal (Int 18))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/compute/construct-00.typ"
+    ( line 11 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "negate"))
+                 (FuncCall
+                    (Ident (Identifier "rgb"))
+                    [ NormalArg (Literal (String "#133337")) ]))
+              [])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rgb"))
+              [ NormalArg (Literal (Int 236))
+              , NormalArg (Literal (Int 204))
+              , NormalArg (Literal (Int 200))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/compute/construct-00.typ"
+    ( line 12 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "lighten")) (Ident (Identifier "white")))
+              [ NormalArg (Literal (Numeric 100.0 Percent)) ])
+       , NormalArg (Ident (Identifier "white"))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [❌(]), 
+                 text(body: [rgb(0%,30%,70%,100%)]), 
+                 text(body: [ /= ]), 
+                 text(body: [rgb(0%,30%,70%,100%)]), 
+                 text(body: [)]), 
+                 parbreak(), 
+                 text(body: [❌(]), 
+                 text(body: [rgb(100%,0%,0%,50%)]), 
+                 text(body: [ /= ]), 
+                 text(body: [rgb(100%,0%,0%,50%)]), 
+                 text(body: [)]), 
+                 parbreak(), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compute/construct-01.out b/test/typ/compute/construct-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/construct-01.out
@@ -0,0 +1,76 @@
+--- parse tree ---
+[ Code
+    "typ/compute/construct-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compute/construct-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compute/construct-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/compute/construct-01.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "stack"))
+       [ KeyValArg (Identifier "dir") (Ident (Identifier "ltr"))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg
+                  (Identifier "fill")
+                  (FuncCall
+                     (Ident (Identifier "luma")) [ NormalArg (Literal (Int 0)) ])
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg
+                  (Identifier "fill")
+                  (FuncCall
+                     (Ident (Identifier "luma"))
+                     [ NormalArg (Literal (Numeric 80.0 Percent)) ])
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 stack(children: (rect(fill: luma(0%)), 
+                                  rect(fill: luma(80%))), 
+                       dir: ltr), 
+                 parbreak() })
diff --git a/test/typ/compute/construct-02.out b/test/typ/compute/construct-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/construct-02.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/construct-03.out b/test/typ/compute/construct-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/construct-03.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/construct-04.out b/test/typ/compute/construct-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/construct-04.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/construct-05.out b/test/typ/compute/construct-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/construct-05.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/construct-06.out b/test/typ/compute/construct-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/construct-06.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/construct-07.out b/test/typ/compute/construct-07.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/construct-07.out
@@ -0,0 +1,131 @@
+--- parse tree ---
+[ Code
+    "typ/compute/construct-07.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compute/construct-07.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compute/construct-07.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compute/construct-07.typ"
+    ( line 3 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "envelope")))
+       (FuncCall
+          (Ident (Identifier "symbol"))
+          [ NormalArg (Literal (String "\128386"))
+          , NormalArg
+              (Array
+                 [ Reg (Literal (String "stamped"))
+                 , Reg (Literal (String "\128387"))
+                 ])
+          , NormalArg
+              (Array
+                 [ Reg (Literal (String "stamped.pen"))
+                 , Reg (Literal (String "\128390"))
+                 ])
+          , NormalArg
+              (Array
+                 [ Reg (Literal (String "lightning"))
+                 , Reg (Literal (String "\128388"))
+                 ])
+          , NormalArg
+              (Array
+                 [ Reg (Literal (String "fly"))
+                 , Reg (Literal (String "\128389"))
+                 ])
+          ]))
+, ParBreak
+, Code
+    "typ/compute/construct-07.typ"
+    ( line 11 , column 2 )
+    (Ident (Identifier "envelope"))
+, SoftBreak
+, Code
+    "typ/compute/construct-07.typ"
+    ( line 12 , column 2 )
+    (FieldAccess
+       (Ident (Identifier "stamped")) (Ident (Identifier "envelope")))
+, SoftBreak
+, Code
+    "typ/compute/construct-07.typ"
+    ( line 13 , column 2 )
+    (FieldAccess
+       (Ident (Identifier "pen")) (Ident (Identifier "envelope")))
+, SoftBreak
+, Code
+    "typ/compute/construct-07.typ"
+    ( line 14 , column 2 )
+    (FieldAccess
+       (Ident (Identifier "pen"))
+       (FieldAccess
+          (Ident (Identifier "stamped")) (Ident (Identifier "envelope"))))
+, SoftBreak
+, Code
+    "typ/compute/construct-07.typ"
+    ( line 15 , column 2 )
+    (FieldAccess
+       (Ident (Identifier "lightning")) (Ident (Identifier "envelope")))
+, SoftBreak
+, Code
+    "typ/compute/construct-07.typ"
+    ( line 16 , column 2 )
+    (FieldAccess
+       (Ident (Identifier "fly")) (Ident (Identifier "envelope")))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [🖂]), 
+                 text(body: [
+]), 
+                 text(body: [🖃]), 
+                 text(body: [
+]), 
+                 text(body: [🖆]), 
+                 text(body: [
+]), 
+                 text(body: [🖆]), 
+                 text(body: [
+]), 
+                 text(body: [🖄]), 
+                 text(body: [
+]), 
+                 text(body: [🖅]), 
+                 parbreak() })
diff --git a/test/typ/compute/construct-08.out b/test/typ/compute/construct-08.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/construct-08.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/construct-09.out b/test/typ/compute/construct-09.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/construct-09.out
@@ -0,0 +1,94 @@
+--- parse tree ---
+[ Code
+    "typ/compute/construct-09.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compute/construct-09.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compute/construct-09.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compute/construct-09.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "str")) [ NormalArg (Literal (Int 123)) ])
+       , NormalArg (Literal (String "123"))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/construct-09.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "str")) [ NormalArg (Literal (Float 50.14)) ])
+       , NormalArg (Literal (String "50.14"))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/construct-09.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (GreaterThan
+              (FuncCall
+                 (FieldAccess
+                    (Ident (Identifier "len"))
+                    (FuncCall
+                       (Ident (Identifier "str"))
+                       [ NormalArg (Divided (Literal (Int 10)) (Literal (Int 3))) ]))
+                 [])
+              (Literal (Int 10)))
+       , NormalArg (Literal (Boolean True))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compute/construct-10.out b/test/typ/compute/construct-10.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/construct-10.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/construct-11.out b/test/typ/compute/construct-11.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/construct-11.out
@@ -0,0 +1,63 @@
+--- parse tree ---
+[ Code
+    "typ/compute/construct-11.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compute/construct-11.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compute/construct-11.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/compute/construct-11.typ"
+    ( line 2 , column 2 )
+    (FuncCall
+       (Ident (Identifier "assert"))
+       [ NormalArg
+           (Equals
+              (FuncCall
+                 (Ident (Identifier "range"))
+                 [ NormalArg (Literal (Int 2)) , NormalArg (Literal (Int 5)) ])
+              (Array
+                 [ Reg (Literal (Int 2))
+                 , Reg (Literal (Int 3))
+                 , Reg (Literal (Int 4))
+                 ]))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak() })
diff --git a/test/typ/compute/data-00.out b/test/typ/compute/data-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/data-00.out
@@ -0,0 +1,68 @@
+--- parse tree ---
+[ Code
+    "typ/compute/data-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compute/data-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compute/data-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compute/data-00.typ"
+    ( line 3 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "data")))
+       (FuncCall
+          (Ident (Identifier "read"))
+          [ NormalArg (Literal (String "/assets/files/hello.txt")) ]))
+, SoftBreak
+, Code
+    "typ/compute/data-00.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "data"))
+       , NormalArg (Literal (String "Hello, world!"))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compute/data-01.out b/test/typ/compute/data-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/data-01.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/data-02.out b/test/typ/compute/data-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/data-02.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/data-03.out b/test/typ/compute/data-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/data-03.out
@@ -0,0 +1,126 @@
+--- parse tree ---
+[ Code
+    "typ/compute/data-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compute/data-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compute/data-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/compute/data-03.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal Auto) ])
+, SoftBreak
+, Code
+    "typ/compute/data-03.typ"
+    ( line 5 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "data")))
+       (FuncCall
+          (Ident (Identifier "csv"))
+          [ NormalArg (Literal (String "/assets/files/zoo.csv")) ]))
+, SoftBreak
+, Code
+    "typ/compute/data-03.typ"
+    ( line 6 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "cells")))
+       (Plus
+          (FuncCall
+             (FieldAccess
+                (Ident (Identifier "map"))
+                (FuncCall
+                   (FieldAccess (Ident (Identifier "at")) (Ident (Identifier "data")))
+                   [ NormalArg (Literal (Int 0)) ]))
+             [ NormalArg (Ident (Identifier "strong")) ])
+          (FuncCall
+             (FieldAccess
+                (Ident (Identifier "flatten"))
+                (FuncCall
+                   (FieldAccess
+                      (Ident (Identifier "slice")) (Ident (Identifier "data")))
+                   [ NormalArg (Literal (Int 1)) ]))
+             [])))
+, SoftBreak
+, Code
+    "typ/compute/data-03.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "table"))
+       [ KeyValArg
+           (Identifier "columns")
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "len"))
+                 (FuncCall
+                    (FieldAccess (Ident (Identifier "at")) (Ident (Identifier "data")))
+                    [ NormalArg (Literal (Int 0)) ]))
+              [])
+       , SpreadArg (Ident (Identifier "cells"))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 table(children: (strong(body: [Name]), 
+                                  strong(body: [Species]), 
+                                  strong(body: [Weight]), 
+                                  strong(body: [Length]), 
+                                  [Debby], 
+                                  [Rhinoceros], 
+                                  [1900kg], 
+                                  [390cm], 
+                                  [Fluffy], 
+                                  [Tiger], 
+                                  [115kg], 
+                                  [310cm], 
+                                  [Sleepy], 
+                                  [Dolphin], 
+                                  [150kg], 
+                                  [180cm]), 
+                       columns: 4), 
+                 parbreak() })
diff --git a/test/typ/compute/data-04.out b/test/typ/compute/data-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/data-04.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/data-05.out b/test/typ/compute/data-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/data-05.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/data-06.out b/test/typ/compute/data-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/data-06.out
@@ -0,0 +1,106 @@
+--- parse tree ---
+[ Code
+    "typ/compute/data-06.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compute/data-06.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compute/data-06.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compute/data-06.typ"
+    ( line 3 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "data")))
+       (FuncCall
+          (Ident (Identifier "json"))
+          [ NormalArg (Literal (String "/assets/files/zoo.json")) ]))
+, SoftBreak
+, Code
+    "typ/compute/data-06.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "len")) (Ident (Identifier "data")))
+              [])
+       , NormalArg (Literal (Int 3))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/data-06.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FieldAccess
+              (Ident (Identifier "name"))
+              (FuncCall
+                 (FieldAccess (Ident (Identifier "at")) (Ident (Identifier "data")))
+                 [ NormalArg (Literal (Int 0)) ]))
+       , NormalArg (Literal (String "Debby"))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/data-06.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FieldAccess
+              (Ident (Identifier "weight"))
+              (FuncCall
+                 (FieldAccess (Ident (Identifier "at")) (Ident (Identifier "data")))
+                 [ NormalArg (Literal (Int 2)) ]))
+       , NormalArg (Literal (Int 150))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compute/data-07.out b/test/typ/compute/data-07.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/data-07.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/data-08.out b/test/typ/compute/data-08.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/data-08.out
@@ -0,0 +1,201 @@
+--- parse tree ---
+[ Code
+    "typ/compute/data-08.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compute/data-08.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compute/data-08.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compute/data-08.typ"
+    ( line 3 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "data")))
+       (FuncCall
+          (Ident (Identifier "toml"))
+          [ NormalArg (Literal (String "/assets/files/toml-types.toml")) ]))
+, SoftBreak
+, Code
+    "typ/compute/data-08.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FieldAccess
+              (Ident (Identifier "string")) (Ident (Identifier "data")))
+       , NormalArg (Literal (String "wonderful"))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/data-08.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FieldAccess
+              (Ident (Identifier "integer")) (Ident (Identifier "data")))
+       , NormalArg (Literal (Int 42))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/data-08.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FieldAccess
+              (Ident (Identifier "float")) (Ident (Identifier "data")))
+       , NormalArg (Literal (Float 3.14))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/data-08.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FieldAccess
+              (Ident (Identifier "boolean")) (Ident (Identifier "data")))
+       , NormalArg (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/data-08.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FieldAccess
+              (Ident (Identifier "date_time")) (Ident (Identifier "data")))
+       , NormalArg (Literal (String "2023-02-01T15:38:57Z"))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/data-08.typ"
+    ( line 9 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FieldAccess
+              (Ident (Identifier "array")) (Ident (Identifier "data")))
+       , NormalArg
+           (Array
+              [ Reg (Literal (Int 1))
+              , Reg (Literal (String "string"))
+              , Reg (Literal (Float 3.0))
+              , Reg (Literal (Boolean False))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/compute/data-08.typ"
+    ( line 10 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FieldAccess
+              (Ident (Identifier "inline_table")) (Ident (Identifier "data")))
+       , NormalArg
+           (Dict
+              [ Reg ( Literal (String "first") , Literal (String "amazing") )
+              , Reg ( Literal (String "second") , Literal (String "greater") )
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/compute/data-08.typ"
+    ( line 11 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FieldAccess
+              (Ident (Identifier "element"))
+              (FieldAccess
+                 (Ident (Identifier "table")) (Ident (Identifier "data"))))
+       , NormalArg (Literal (Int 5))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/data-08.typ"
+    ( line 12 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FieldAccess
+              (Ident (Identifier "others"))
+              (FieldAccess
+                 (Ident (Identifier "table")) (Ident (Identifier "data"))))
+       , NormalArg
+           (Array
+              [ Reg (Literal (Boolean False))
+              , Reg (Literal (String "indeed"))
+              , Reg (Literal (Int 7))
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compute/data-09.out b/test/typ/compute/data-09.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/data-09.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/data-10.out b/test/typ/compute/data-10.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/data-10.out
@@ -0,0 +1,208 @@
+--- parse tree ---
+[ Code
+    "typ/compute/data-10.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compute/data-10.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compute/data-10.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compute/data-10.typ"
+    ( line 3 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "data")))
+       (FuncCall
+          (Ident (Identifier "yaml"))
+          [ NormalArg (Literal (String "/assets/files/yaml-types.yaml")) ]))
+, SoftBreak
+, Code
+    "typ/compute/data-10.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "len")) (Ident (Identifier "data")))
+              [])
+       , NormalArg (Literal (Int 7))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/data-10.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FieldAccess
+              (Ident (Identifier "null_key")) (Ident (Identifier "data")))
+       , NormalArg (Array [ Reg (Literal None) , Reg (Literal None) ])
+       ])
+, SoftBreak
+, Code
+    "typ/compute/data-10.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FieldAccess
+              (Ident (Identifier "string")) (Ident (Identifier "data")))
+       , NormalArg (Literal (String "text"))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/data-10.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FieldAccess
+              (Ident (Identifier "integer")) (Ident (Identifier "data")))
+       , NormalArg (Literal (Int 5))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/data-10.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FieldAccess
+              (Ident (Identifier "float")) (Ident (Identifier "data")))
+       , NormalArg (Literal (Float 1.12))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/data-10.typ"
+    ( line 9 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FieldAccess
+              (Ident (Identifier "mapping")) (Ident (Identifier "data")))
+       , NormalArg
+           (Dict
+              [ Reg ( Literal (String "1") , Literal (String "one") )
+              , Reg ( Literal (String "2") , Literal (String "two") )
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/compute/data-10.typ"
+    ( line 10 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FieldAccess
+              (Ident (Identifier "seq")) (Ident (Identifier "data")))
+       , NormalArg
+           (Array
+              [ Reg (Literal (Int 1))
+              , Reg (Literal (Int 2))
+              , Reg (Literal (Int 3))
+              , Reg (Literal (Int 4))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/compute/data-10.typ"
+    ( line 11 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FieldAccess
+              (Ident (Identifier "bool")) (Ident (Identifier "data")))
+       , NormalArg (Literal (Boolean False))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/data-10.typ"
+    ( line 12 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "contains"))
+                 (FuncCall
+                    (FieldAccess
+                       (Ident (Identifier "keys")) (Ident (Identifier "data")))
+                    []))
+              [ NormalArg (Literal (String "true")) ])
+       , NormalArg (Literal (Boolean False))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [❌(]), 
+                 text(body: [8]), 
+                 text(body: [ /= ]), 
+                 text(body: [7]), 
+                 text(body: [)]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [❌(]), 
+                 text(body: [true]), 
+                 text(body: [ /= ]), 
+                 text(body: [false]), 
+                 text(body: [)]), 
+                 parbreak() })
diff --git a/test/typ/compute/data-11.out b/test/typ/compute/data-11.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/data-11.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/data-12.out b/test/typ/compute/data-12.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/data-12.out
@@ -0,0 +1,137 @@
+--- parse tree ---
+[ Code
+    "typ/compute/data-12.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compute/data-12.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compute/data-12.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compute/data-12.typ"
+    ( line 3 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "data")))
+       (FuncCall
+          (Ident (Identifier "xml"))
+          [ NormalArg (Literal (String "/assets/files/data.xml")) ]))
+, SoftBreak
+, Code
+    "typ/compute/data-12.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "data"))
+       , NormalArg
+           (Array
+              [ Reg
+                  (Dict
+                     [ Reg ( Ident (Identifier "tag") , Literal (String "data") )
+                     , Reg ( Ident (Identifier "attrs") , Dict [] )
+                     , Reg
+                         ( Ident (Identifier "children")
+                         , Array
+                             [ Reg (Literal (String "\n  "))
+                             , Reg
+                                 (Dict
+                                    [ Reg ( Ident (Identifier "tag") , Literal (String "hello") )
+                                    , Reg
+                                        ( Ident (Identifier "attrs")
+                                        , Dict
+                                            [ Reg
+                                                ( Ident (Identifier "name")
+                                                , Literal (String "hi")
+                                                )
+                                            ]
+                                        )
+                                    , Reg
+                                        ( Ident (Identifier "children")
+                                        , Array [ Reg (Literal (String "1")) ]
+                                        )
+                                    ])
+                             , Reg (Literal (String "\n  "))
+                             , Reg
+                                 (Dict
+                                    [ Reg ( Ident (Identifier "tag") , Literal (String "data") )
+                                    , Reg ( Ident (Identifier "attrs") , Dict [] )
+                                    , Reg
+                                        ( Ident (Identifier "children")
+                                        , Array
+                                            [ Reg (Literal (String "\n    "))
+                                            , Reg
+                                                (Dict
+                                                   [ Reg
+                                                       ( Ident (Identifier "tag")
+                                                       , Literal (String "hello")
+                                                       )
+                                                   , Reg ( Ident (Identifier "attrs") , Dict [] )
+                                                   , Reg
+                                                       ( Ident (Identifier "children")
+                                                       , Array [ Reg (Literal (String "World")) ]
+                                                       )
+                                                   ])
+                                            , Reg (Literal (String "\n    "))
+                                            , Reg
+                                                (Dict
+                                                   [ Reg
+                                                       ( Ident (Identifier "tag")
+                                                       , Literal (String "hello")
+                                                       )
+                                                   , Reg ( Ident (Identifier "attrs") , Dict [] )
+                                                   , Reg
+                                                       ( Ident (Identifier "children")
+                                                       , Array [ Reg (Literal (String "World")) ]
+                                                       )
+                                                   ])
+                                            , Reg (Literal (String "\n  "))
+                                            ]
+                                        )
+                                    ])
+                             , Reg (Literal (String "\n"))
+                             ]
+                         )
+                     ])
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compute/data-13.out b/test/typ/compute/data-13.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/data-13.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/foundations-00.out b/test/typ/compute/foundations-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/foundations-00.out
@@ -0,0 +1,88 @@
+--- parse tree ---
+[ Code
+    "typ/compute/foundations-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compute/foundations-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compute/foundations-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/compute/foundations-00.typ"
+    ( line 2 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "type")) [ NormalArg (Literal (Int 1)) ])
+       , NormalArg (Literal (String "integer"))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/foundations-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "type"))
+              [ NormalArg (Ident (Identifier "ltr")) ])
+       , NormalArg (Literal (String "direction"))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/foundations-00.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "type"))
+              [ NormalArg (Divided (Literal (Int 10)) (Literal (Int 3))) ])
+       , NormalArg (Literal (String "float"))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compute/foundations-01.out b/test/typ/compute/foundations-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/foundations-01.out
@@ -0,0 +1,80 @@
+--- parse tree ---
+[ Code
+    "typ/compute/foundations-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compute/foundations-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compute/foundations-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/compute/foundations-01.typ"
+    ( line 2 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "repr"))
+              [ NormalArg (Ident (Identifier "ltr")) ])
+       , NormalArg (Literal (String "ltr"))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/foundations-01.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "repr"))
+              [ NormalArg
+                  (Array
+                     [ Reg (Literal (Int 1))
+                     , Reg (Literal (Int 2))
+                     , Reg (Literal (Boolean False))
+                     ])
+              ])
+       , NormalArg (Literal (String "(1, 2, false)"))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compute/foundations-02.out b/test/typ/compute/foundations-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/foundations-02.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/foundations-03.out b/test/typ/compute/foundations-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/foundations-03.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/foundations-04.out b/test/typ/compute/foundations-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/foundations-04.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/foundations-05.out b/test/typ/compute/foundations-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/foundations-05.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/foundations-06.out b/test/typ/compute/foundations-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/foundations-06.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/foundations-07.out b/test/typ/compute/foundations-07.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/foundations-07.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/foundations-08.out b/test/typ/compute/foundations-08.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/foundations-08.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/foundations-09.out b/test/typ/compute/foundations-09.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/foundations-09.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/foundations-10.out b/test/typ/compute/foundations-10.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/foundations-10.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/foundations-11.out b/test/typ/compute/foundations-11.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/foundations-11.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/foundations-12.out b/test/typ/compute/foundations-12.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/foundations-12.out
@@ -0,0 +1,74 @@
+--- parse tree ---
+[ Code
+    "typ/compute/foundations-12.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compute/foundations-12.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compute/foundations-12.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compute/foundations-12.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "assert"))
+       [ NormalArg (GreaterThan (Literal (Int 5)) (Literal (Int 3))) ])
+, SoftBreak
+, Code
+    "typ/compute/foundations-12.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (FieldAccess
+          (Ident (Identifier "eq")) (Ident (Identifier "assert")))
+       [ NormalArg (Literal (Int 15)) , NormalArg (Literal (Int 15)) ])
+, SoftBreak
+, Code
+    "typ/compute/foundations-12.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (FieldAccess
+          (Ident (Identifier "ne")) (Ident (Identifier "assert")))
+       [ NormalArg (Literal (Int 10)) , NormalArg (Literal (Int 12)) ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak() })
diff --git a/test/typ/compute/foundations-13.out b/test/typ/compute/foundations-13.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/foundations-13.out
@@ -0,0 +1,89 @@
+--- parse tree ---
+[ Code
+    "typ/compute/foundations-13.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compute/foundations-13.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compute/foundations-13.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/compute/foundations-13.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "type")) [ NormalArg (Literal (Int 1)) ])
+       , NormalArg (Literal (String "integer"))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/foundations-13.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "type"))
+              [ NormalArg (Ident (Identifier "ltr")) ])
+       , NormalArg (Literal (String "direction"))
+       ])
+, SoftBreak
+, Code
+    "typ/compute/foundations-13.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "type"))
+              [ NormalArg (Divided (Literal (Int 10)) (Literal (Int 3))) ])
+       , NormalArg (Literal (String "float"))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/compute/foundations-14.out b/test/typ/compute/foundations-14.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/foundations-14.out
@@ -0,0 +1,56 @@
+--- parse tree ---
+[ Code
+    "typ/compute/foundations-14.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compute/foundations-14.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compute/foundations-14.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/compute/foundations-14.typ"
+    ( line 2 , column 2 )
+    (FuncCall
+       (Ident (Identifier "eval"))
+       [ NormalArg
+           (Plus (Literal (String "[_Hello")) (Literal (String " World!_]")))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 emph(body: text(body: [Hello World!])), 
+                 parbreak() })
diff --git a/test/typ/compute/foundations-15.out b/test/typ/compute/foundations-15.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/foundations-15.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/foundations-16.out b/test/typ/compute/foundations-16.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/foundations-16.out
@@ -0,0 +1,84 @@
+--- parse tree ---
+[ Code
+    "typ/compute/foundations-16.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/compute/foundations-16.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/compute/foundations-16.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/compute/foundations-16.typ"
+    ( line 2 , column 2 )
+    (Show
+       (Just (Ident (Identifier "raw")))
+       (FuncExpr
+          [ NormalParam (Identifier "it") ]
+          (FuncCall
+             (Ident (Identifier "text"))
+             [ KeyValArg (Identifier "font") (Literal (String "PT Sans"))
+             , NormalArg
+                 (FuncCall
+                    (Ident (Identifier "eval"))
+                    [ NormalArg
+                        (Plus
+                           (Plus
+                              (Literal (String "["))
+                              (FieldAccess
+                                 (Ident (Identifier "text")) (Ident (Identifier "it"))))
+                           (Literal (String "]")))
+                    ])
+             ])))
+, ParBreak
+, Text "Interacting"
+, SoftBreak
+, RawBlock "" "#set text(blue)\nBlue #move(dy: -0.15em)[\127754]\n"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [Interacting
+]), 
+                 text(body: { text(body: [
+Blue ], 
+                                   color: rgb(0%,45%,85%,100%)), 
+                              move(body: text(body: [🌊], 
+                                              color: rgb(0%,45%,85%,100%)), 
+                                   dy: -0.15em), 
+                              parbreak() }, 
+                      font: "PT Sans"), 
+                 parbreak() })
diff --git a/test/typ/compute/foundations-17.out b/test/typ/compute/foundations-17.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/foundations-17.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/foundations-18.out b/test/typ/compute/foundations-18.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/foundations-18.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/foundations-19.out b/test/typ/compute/foundations-19.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/foundations-19.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/foundations-20.out b/test/typ/compute/foundations-20.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/foundations-20.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/foundations-21.out b/test/typ/compute/foundations-21.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/foundations-21.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/compute/foundations-22.out b/test/typ/compute/foundations-22.out
new file mode 100644
--- /dev/null
+++ b/test/typ/compute/foundations-22.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/layout/align-00.out b/test/typ/layout/align-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/align-00.out
@@ -0,0 +1,165 @@
+--- parse tree ---
+[ Code
+    "typ/layout/align-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/align-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/align-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/layout/align-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 100.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/layout/align-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "stack"))
+       [ KeyValArg (Identifier "dir") (Ident (Identifier "ltr"))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "align"))
+              [ NormalArg (Ident (Identifier "left"))
+              , NormalArg
+                  (FuncCall
+                     (Ident (Identifier "square"))
+                     [ KeyValArg (Identifier "size") (Literal (Numeric 15.0 Pt))
+                     , KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
+                     ])
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "align"))
+              [ NormalArg (Ident (Identifier "center"))
+              , NormalArg
+                  (FuncCall
+                     (Ident (Identifier "square"))
+                     [ KeyValArg (Identifier "size") (Literal (Numeric 20.0 Pt))
+                     , KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
+                     ])
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "align"))
+              [ NormalArg (Ident (Identifier "right"))
+              , NormalArg
+                  (FuncCall
+                     (Ident (Identifier "square"))
+                     [ KeyValArg (Identifier "size") (Literal (Numeric 15.0 Pt))
+                     , KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
+                     ])
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/layout/align-00.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "align"))
+       [ NormalArg
+           (Plus (Ident (Identifier "center")) (Ident (Identifier "horizon")))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
+              , KeyValArg (Identifier "height") (Literal (Numeric 10.0 Pt))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/layout/align-00.typ"
+    ( line 9 , column 2 )
+    (FuncCall
+       (Ident (Identifier "align"))
+       [ NormalArg (Ident (Identifier "bottom"))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "stack"))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "align"))
+                     [ NormalArg (Ident (Identifier "center"))
+                     , NormalArg
+                         (FuncCall
+                            (Ident (Identifier "rect"))
+                            [ KeyValArg (Identifier "fill") (Ident (Identifier "green"))
+                            , KeyValArg (Identifier "height") (Literal (Numeric 10.0 Pt))
+                            ])
+                     ])
+              , NormalArg
+                  (FuncCall
+                     (Ident (Identifier "rect"))
+                     [ KeyValArg (Identifier "fill") (Ident (Identifier "red"))
+                     , KeyValArg (Identifier "height") (Literal (Numeric 10.0 Pt))
+                     , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
+                     ])
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 stack(children: (align(alignment: left, 
+                                        body: square(fill: rgb(13%,61%,67%,100%), 
+                                                     size: 15.0pt)), 
+                                  align(alignment: center, 
+                                        body: square(fill: rgb(13%,61%,67%,100%), 
+                                                     size: 20.0pt)), 
+                                  align(alignment: right, 
+                                        body: square(fill: rgb(13%,61%,67%,100%), 
+                                                     size: 15.0pt))), 
+                       dir: ltr), 
+                 text(body: [
+]), 
+                 align(alignment: Axes(center, horizon), 
+                       body: rect(fill: rgb(13%,61%,67%,100%), 
+                                  height: 10.0pt)), 
+                 text(body: [
+]), 
+                 align(alignment: bottom, 
+                       body: stack(children: (align(alignment: center, 
+                                                    body: rect(fill: rgb(18%,80%,25%,100%), 
+                                                               height: 10.0pt)), 
+                                              rect(fill: rgb(100%,25%,21%,100%), 
+                                                   height: 10.0pt, 
+                                                   width: 100%)))), 
+                 parbreak() })
diff --git a/test/typ/layout/align-01.out b/test/typ/layout/align-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/align-01.out
@@ -0,0 +1,70 @@
+--- parse tree ---
+[ Code
+    "typ/layout/align-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/align-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/align-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/align-01.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "align"))
+       [ NormalArg (Ident (Identifier "center"))
+       , BlockArg
+           [ SoftBreak
+           , Text "Lorem"
+           , Space
+           , Text "Ipsum"
+           , ParBreak
+           , Text "Dolor"
+           , ParBreak
+           ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 align(alignment: center, 
+                       body: { text(body: [
+Lorem Ipsum]), 
+                               parbreak(), 
+                               text(body: [Dolor]), 
+                               parbreak() }), 
+                 parbreak() })
diff --git a/test/typ/layout/align-02.out b/test/typ/layout/align-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/align-02.out
@@ -0,0 +1,134 @@
+--- parse tree ---
+[ Code
+    "typ/layout/align-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/align-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/align-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/align-02.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "rotate"))
+       [ NormalArg (Negated (Literal (Numeric 30.0 Deg)))
+       , KeyValArg
+           (Identifier "origin")
+           (Plus (Ident (Identifier "end")) (Ident (Identifier "horizon")))
+       , BlockArg [ Text "Hello" ]
+       ])
+, ParBreak
+, Code
+    "typ/layout/align-02.typ"
+    ( line 5 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "lang") (Literal (String "de")) ])
+, SoftBreak
+, Code
+    "typ/layout/align-02.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "align"))
+       [ NormalArg (Ident (Identifier "start"))
+       , BlockArg [ Text "Start" ]
+       ])
+, SoftBreak
+, Code
+    "typ/layout/align-02.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "align"))
+       [ NormalArg (Ident (Identifier "end"))
+       , BlockArg [ Text "Ende" ]
+       ])
+, ParBreak
+, Code
+    "typ/layout/align-02.typ"
+    ( line 9 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "lang") (Literal (String "ar")) ])
+, SoftBreak
+, Code
+    "typ/layout/align-02.typ"
+    ( line 10 , column 2 )
+    (FuncCall
+       (Ident (Identifier "align"))
+       [ NormalArg (Ident (Identifier "start"))
+       , BlockArg [ Text "\1610\1576\1583\1571" ]
+       ])
+, SoftBreak
+, Code
+    "typ/layout/align-02.typ"
+    ( line 11 , column 2 )
+    (FuncCall
+       (Ident (Identifier "align"))
+       [ NormalArg (Ident (Identifier "end"))
+       , BlockArg [ Text "\1606\1607\1575\1610\1577" ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 rotate(angle: -30.0deg, 
+                        body: text(body: [Hello]), 
+                        origin: Axes(end, horizon)), 
+                 parbreak(), 
+                 text(body: [
+], lang: "de"), 
+                 align(alignment: start, 
+                       body: text(body: [Start], 
+                                  lang: "de")), 
+                 text(body: [
+], lang: "de"), 
+                 align(alignment: end, 
+                       body: text(body: [Ende], 
+                                  lang: "de")), 
+                 parbreak(), 
+                 text(body: [
+], lang: "ar"), 
+                 align(alignment: start, 
+                       body: text(body: [يبدأ], 
+                                  lang: "ar")), 
+                 text(body: [
+], lang: "ar"), 
+                 align(alignment: end, 
+                       body: text(body: [نهاية], 
+                                  lang: "ar")), 
+                 parbreak() })
diff --git a/test/typ/layout/align-03.out b/test/typ/layout/align-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/align-03.out
@@ -0,0 +1,96 @@
+--- parse tree ---
+[ Code
+    "typ/layout/align-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/align-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/align-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/align-03.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "type"))
+              [ NormalArg (Ident (Identifier "center")) ])
+       , NormalArg (Literal (String "alignment"))
+       ])
+, SoftBreak
+, Code
+    "typ/layout/align-03.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "type"))
+              [ NormalArg (Ident (Identifier "horizon")) ])
+       , NormalArg (Literal (String "alignment"))
+       ])
+, SoftBreak
+, Code
+    "typ/layout/align-03.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "type"))
+              [ NormalArg
+                  (Plus (Ident (Identifier "center")) (Ident (Identifier "horizon")))
+              ])
+       , NormalArg (Literal (String "2d alignment"))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [❌(]), 
+                 text(body: [alignment]), 
+                 text(body: [ /= ]), 
+                 text(body: ["2d alignment"]), 
+                 text(body: [)]), 
+                 parbreak() })
diff --git a/test/typ/layout/align-04.out b/test/typ/layout/align-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/align-04.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/layout/align-05.out b/test/typ/layout/align-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/align-05.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/layout/block-sizing-00.out b/test/typ/layout/block-sizing-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/block-sizing-00.out
@@ -0,0 +1,118 @@
+--- parse tree ---
+[ Code
+    "typ/layout/block-sizing-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/block-sizing-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/block-sizing-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/layout/block-sizing-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 100.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/layout/block-sizing-00.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "align"))
+       [ NormalArg (Ident (Identifier "center")) ])
+, ParBreak
+, Code
+    "typ/layout/block-sizing-00.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 10)) ])
+, SoftBreak
+, Code
+    "typ/layout/block-sizing-00.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "block"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 80.0 Percent))
+       , KeyValArg (Identifier "height") (Literal (Numeric 60.0 Pt))
+       , KeyValArg (Identifier "fill") (Ident (Identifier "aqua"))
+       ])
+, SoftBreak
+, Code
+    "typ/layout/block-sizing-00.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 6)) ])
+, SoftBreak
+, Code
+    "typ/layout/block-sizing-00.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "block"))
+       [ KeyValArg (Identifier "breakable") (Literal (Boolean False))
+       , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
+       , KeyValArg (Identifier "inset") (Literal (Numeric 4.0 Pt))
+       , KeyValArg (Identifier "fill") (Ident (Identifier "aqua"))
+       , NormalArg
+           (Plus
+              (FuncCall
+                 (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 8)) ])
+              (FuncCall (Ident (Identifier "colbreak")) []))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do]), 
+                 text(body: [
+]), 
+                 block(fill: rgb(49%,85%,100%,100%), 
+                       height: 60.0pt, 
+                       width: 80%), 
+                 text(body: [
+]), 
+                 text(body: [Lorem ipsum dolor sit amet, consectetur]), 
+                 text(body: [
+]), 
+                 block(body: { [Lorem ipsum dolor sit amet, consectetur adipiscing elit,], 
+                               colbreak() }, 
+                       breakable: false, 
+                       fill: rgb(49%,85%,100%,100%), 
+                       inset: 4.0pt, 
+                       width: 100%), 
+                 parbreak() })
diff --git a/test/typ/layout/block-sizing-01.out b/test/typ/layout/block-sizing-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/block-sizing-01.out
@@ -0,0 +1,112 @@
+--- parse tree ---
+[ Code
+    "typ/layout/block-sizing-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/block-sizing-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/block-sizing-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, SoftBreak
+, Code
+    "typ/layout/block-sizing-01.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 120.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/layout/block-sizing-01.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "block"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 60.0 Pt))
+       , KeyValArg (Identifier "height") (Literal (Numeric 80.0 Pt))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "layout"))
+              [ NormalArg
+                  (FuncExpr
+                     [ NormalParam (Identifier "size") ]
+                     (Block
+                        (Content
+                           [ SoftBreak
+                           , Text "This"
+                           , Space
+                           , Text "block"
+                           , Space
+                           , Text "has"
+                           , Space
+                           , Text "a"
+                           , Space
+                           , Text "width"
+                           , Space
+                           , Text "of"
+                           , Space
+                           , Code
+                               "typ/layout/block-sizing-01.typ"
+                               ( line 6 , column 30 )
+                               (FieldAccess
+                                  (Ident (Identifier "width")) (Ident (Identifier "size")))
+                           , Space
+                           , Text "and"
+                           , Space
+                           , Text "height"
+                           , Space
+                           , Text "of"
+                           , Space
+                           , Code
+                               "typ/layout/block-sizing-01.typ"
+                               ( line 6 , column 56 )
+                               (FieldAccess
+                                  (Ident (Identifier "height")) (Ident (Identifier "size")))
+                           , ParBreak
+                           ])))
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 block(body: layout(func: ), 
+                       height: 80.0pt, 
+                       width: 60.0pt), 
+                 parbreak() })
diff --git a/test/typ/layout/block-spacing-00.out b/test/typ/layout/block-spacing-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/block-spacing-00.out
@@ -0,0 +1,73 @@
+--- parse tree ---
+[ Code
+    "typ/layout/block-spacing-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/block-spacing-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/block-spacing-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/layout/block-spacing-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "block"))
+       [ KeyValArg (Identifier "spacing") (Literal (Numeric 10.0 Pt)) ])
+, SoftBreak
+, Text "Hello"
+, ParBreak
+, Text "There"
+, ParBreak
+, Code
+    "typ/layout/block-spacing-00.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "block"))
+       [ KeyValArg (Identifier "spacing") (Literal (Numeric 20.0 Pt))
+       , BlockArg [ Text "Further" , Space , Text "down" ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+Hello]), 
+                 parbreak(), 
+                 text(body: [There]), 
+                 parbreak(), 
+                 block(body: text(body: [Further down]), 
+                       spacing: 20.0pt), 
+                 parbreak() })
diff --git a/test/typ/layout/clip-00.out b/test/typ/layout/clip-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/clip-00.out
@@ -0,0 +1,125 @@
+--- parse tree ---
+[ Code
+    "typ/layout/clip-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/clip-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/clip-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "Hello"
+, Space
+, Code
+    "typ/layout/clip-00.typ"
+    ( line 3 , column 8 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 1.0 Em))
+       , KeyValArg (Identifier "height") (Literal (Numeric 1.0 Em))
+       , KeyValArg (Identifier "clip") (Literal (Boolean False))
+       , BlockArg
+           [ Code
+               "typ/layout/clip-00.typ"
+               ( line 3 , column 51 )
+               (FuncCall
+                  (Ident (Identifier "rect"))
+                  [ KeyValArg (Identifier "width") (Literal (Numeric 3.0 Em))
+                  , KeyValArg (Identifier "height") (Literal (Numeric 3.0 Em))
+                  , KeyValArg (Identifier "fill") (Ident (Identifier "red"))
+                  ])
+           ]
+       ])
+, SoftBreak
+, Text "world"
+, Space
+, Text "1"
+, ParBreak
+, Text "Space"
+, ParBreak
+, Text "Hello"
+, Space
+, Code
+    "typ/layout/clip-00.typ"
+    ( line 8 , column 8 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 1.0 Em))
+       , KeyValArg (Identifier "height") (Literal (Numeric 1.0 Em))
+       , KeyValArg (Identifier "clip") (Literal (Boolean True))
+       , BlockArg
+           [ Code
+               "typ/layout/clip-00.typ"
+               ( line 8 , column 50 )
+               (FuncCall
+                  (Ident (Identifier "rect"))
+                  [ KeyValArg (Identifier "width") (Literal (Numeric 3.0 Em))
+                  , KeyValArg (Identifier "height") (Literal (Numeric 3.0 Em))
+                  , KeyValArg (Identifier "fill") (Ident (Identifier "red"))
+                  ])
+           ]
+       ])
+, Space
+, SoftBreak
+, Text "world"
+, Space
+, Text "2"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [Hello ]), 
+                 box(body: rect(fill: rgb(100%,25%,21%,100%), 
+                                height: 3.0em, 
+                                width: 3.0em), 
+                     clip: false, 
+                     height: 1.0em, 
+                     width: 1.0em), 
+                 text(body: [
+world 1]), 
+                 parbreak(), 
+                 text(body: [Space]), 
+                 parbreak(), 
+                 text(body: [Hello ]), 
+                 box(body: rect(fill: rgb(100%,25%,21%,100%), 
+                                height: 3.0em, 
+                                width: 3.0em), 
+                     clip: true, 
+                     height: 1.0em, 
+                     width: 1.0em), 
+                 text(body: [ 
+world 2]), 
+                 parbreak() })
diff --git a/test/typ/layout/clip-01.out b/test/typ/layout/clip-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/clip-01.out
@@ -0,0 +1,151 @@
+--- parse tree ---
+[ Code
+    "typ/layout/clip-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/clip-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/clip-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/clip-01.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "block"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 5.0 Em))
+       , KeyValArg (Identifier "height") (Literal (Numeric 2.0 Em))
+       , KeyValArg (Identifier "clip") (Literal (Boolean False))
+       , KeyValArg
+           (Identifier "stroke")
+           (Plus (Literal (Numeric 1.0 Pt)) (Ident (Identifier "black")))
+       , BlockArg
+           [ SoftBreak
+           , Text "But,"
+           , Space
+           , Text "soft!"
+           , Space
+           , Text "what"
+           , Space
+           , Text "light"
+           , Space
+           , Text "through"
+           , Space
+           , ParBreak
+           ]
+       ])
+, ParBreak
+, Code
+    "typ/layout/clip-01.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 2.0 Em)) ])
+, ParBreak
+, Code
+    "typ/layout/clip-01.typ"
+    ( line 9 , column 2 )
+    (FuncCall
+       (Ident (Identifier "block"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 5.0 Em))
+       , KeyValArg (Identifier "height") (Literal (Numeric 2.0 Em))
+       , KeyValArg (Identifier "clip") (Literal (Boolean True))
+       , KeyValArg
+           (Identifier "stroke")
+           (Plus (Literal (Numeric 1.0 Pt)) (Ident (Identifier "black")))
+       , BlockArg
+           [ SoftBreak
+           , Text "But,"
+           , Space
+           , Text "soft!"
+           , Space
+           , Text "what"
+           , Space
+           , Text "light"
+           , Space
+           , Text "through"
+           , Space
+           , Text "yonder"
+           , Space
+           , Text "window"
+           , Space
+           , Text "breaks?"
+           , Space
+           , Text "It"
+           , Space
+           , Text "is"
+           , Space
+           , Text "the"
+           , Space
+           , Text "east,"
+           , Space
+           , Text "and"
+           , Space
+           , Text "Juliet"
+           , SoftBreak
+           , Text "is"
+           , Space
+           , Text "the"
+           , Space
+           , Text "sun"
+           , Text "."
+           , ParBreak
+           ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 block(body: { text(body: [
+But, soft! what light through ]), 
+                               parbreak() }, 
+                       clip: false, 
+                       height: 2.0em, 
+                       stroke: (thickness: 1.0pt,
+                                color: rgb(0%,0%,0%,100%)), 
+                       width: 5.0em), 
+                 parbreak(), 
+                 v(amount: 2.0em), 
+                 parbreak(), 
+                 block(body: { text(body: [
+But, soft! what light through yonder window breaks? It is the east, and Juliet
+is the sun.]), 
+                               parbreak() }, 
+                       clip: true, 
+                       height: 2.0em, 
+                       stroke: (thickness: 1.0pt,
+                                color: rgb(0%,0%,0%,100%)), 
+                       width: 5.0em), 
+                 parbreak() })
diff --git a/test/typ/layout/clip-02.out b/test/typ/layout/clip-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/clip-02.out
@@ -0,0 +1,102 @@
+--- parse tree ---
+[ Code
+    "typ/layout/clip-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/clip-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/clip-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "Emoji"
+, Text ":"
+, Space
+, Code
+    "typ/layout/clip-02.typ"
+    ( line 3 , column 9 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 0.5 Em))
+       , KeyValArg
+           (Identifier "stroke")
+           (Plus (Literal (Numeric 1.0 Pt)) (Ident (Identifier "black")))
+       , BlockArg
+           [ Text "\128042,"
+           , Space
+           , Text "\127755,"
+           , Space
+           , Text "\127966"
+           ]
+       ])
+, ParBreak
+, Text "Emoji"
+, Text ":"
+, Space
+, Code
+    "typ/layout/clip-02.typ"
+    ( line 5 , column 9 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 0.5 Em))
+       , KeyValArg (Identifier "clip") (Literal (Boolean True))
+       , KeyValArg
+           (Identifier "stroke")
+           (Plus (Literal (Numeric 1.0 Pt)) (Ident (Identifier "black")))
+       , BlockArg
+           [ Text "\128042,"
+           , Space
+           , Text "\127755,"
+           , Space
+           , Text "\127966"
+           ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [Emoji: ]), 
+                 box(body: text(body: [🐪, 🌋, 🏞]), 
+                     height: 0.5em, 
+                     stroke: (thickness: 1.0pt,
+                              color: rgb(0%,0%,0%,100%))), 
+                 parbreak(), 
+                 text(body: [Emoji: ]), 
+                 box(body: text(body: [🐪, 🌋, 🏞]), 
+                     clip: true, 
+                     height: 0.5em, 
+                     stroke: (thickness: 1.0pt,
+                              color: rgb(0%,0%,0%,100%))), 
+                 parbreak() })
diff --git a/test/typ/layout/clip-03.out b/test/typ/layout/clip-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/clip-03.out
@@ -0,0 +1,120 @@
+--- parse tree ---
+[ Code
+    "typ/layout/clip-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/clip-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/clip-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, SoftBreak
+, Code
+    "typ/layout/clip-03.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 60.0 Pt)) ])
+, ParBreak
+, Text "First!"
+, ParBreak
+, Code
+    "typ/layout/clip-03.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "block"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 4.0 Em))
+       , KeyValArg (Identifier "clip") (Literal (Boolean True))
+       , KeyValArg
+           (Identifier "stroke")
+           (Plus (Literal (Numeric 1.0 Pt)) (Ident (Identifier "black")))
+       , BlockArg
+           [ SoftBreak
+           , Text "But,"
+           , Space
+           , Text "soft!"
+           , Space
+           , Text "what"
+           , Space
+           , Text "light"
+           , Space
+           , Text "through"
+           , Space
+           , Text "yonder"
+           , Space
+           , Text "window"
+           , Space
+           , Text "breaks?"
+           , Space
+           , Text "It"
+           , Space
+           , Text "is"
+           , Space
+           , Text "the"
+           , Space
+           , Text "east,"
+           , Space
+           , Text "and"
+           , Space
+           , Text "Juliet"
+           , SoftBreak
+           , Text "is"
+           , Space
+           , Text "the"
+           , Space
+           , Text "sun"
+           , Text "."
+           , ParBreak
+           ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [First!]), 
+                 parbreak(), 
+                 block(body: { text(body: [
+But, soft! what light through yonder window breaks? It is the east, and Juliet
+is the sun.]), 
+                               parbreak() }, 
+                       clip: true, 
+                       height: 4.0em, 
+                       stroke: (thickness: 1.0pt,
+                                color: rgb(0%,0%,0%,100%))), 
+                 parbreak() })
diff --git a/test/typ/layout/columns-00.out b/test/typ/layout/columns-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/columns-00.out
@@ -0,0 +1,177 @@
+--- parse tree ---
+[ Code
+    "typ/layout/columns-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/columns-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/columns-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/columns-00.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 3.25 Cm))
+       , KeyValArg (Identifier "width") (Literal (Numeric 7.05 Cm))
+       , KeyValArg (Identifier "columns") (Literal (Int 2))
+       ])
+, SoftBreak
+, Code
+    "typ/layout/columns-00.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "lang") (Literal (String "ar"))
+       , KeyValArg
+           (Identifier "font")
+           (Array
+              [ Reg (Literal (String "Noto Sans Arabic"))
+              , Reg (Literal (String "Linux Libertine"))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/layout/columns-00.typ"
+    ( line 5 , column 2 )
+    (Set
+       (Ident (Identifier "columns"))
+       [ KeyValArg (Identifier "gutter") (Literal (Numeric 30.0 Pt)) ])
+, ParBreak
+, Code
+    "typ/layout/columns-00.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ KeyValArg (Identifier "fill") (Ident (Identifier "green"))
+       , KeyValArg (Identifier "height") (Literal (Numeric 8.0 Pt))
+       , KeyValArg (Identifier "width") (Literal (Numeric 6.0 Pt))
+       ])
+, Space
+, Text "\1608\1578\1581\1601\1610\1586"
+, SoftBreak
+, Text "\1575\1604\1593\1583\1610\1583"
+, Space
+, Text "\1605\1606"
+, Space
+, Text "\1575\1604\1578\1601\1575\1593\1604\1575\1578"
+, Space
+, Text "\1575\1604\1603\1610\1605\1610\1575\1574\1610\1577"
+, Text "."
+, Space
+, Text "("
+, Text "DNA)"
+, Space
+, Text "\1605\1606"
+, Space
+, Text "\1571\1607\1605"
+, Space
+, Text "\1575\1604\1571\1581\1605\1575\1590"
+, Space
+, Text "\1575\1604\1606\1608\1608\1610\1577"
+, Space
+, Text "\1575\1604\1578\1610"
+, Space
+, Text "\1578\1615\1588\1603\1616\1617\1604"
+, SoftBreak
+, Text "\1573\1604\1609"
+, Space
+, Text "\1580\1575\1606\1576"
+, Space
+, Text "\1603\1604"
+, Space
+, Text "\1605\1606"
+, Space
+, Text "\1575\1604\1576\1585\1608\1578\1610\1606\1575\1578"
+, Space
+, Text "\1608\1575\1604\1604\1610\1576\1610\1583\1575\1578"
+, Space
+, Text "\1608\1575\1604\1587\1603\1585\1610\1575\1578"
+, Space
+, Text "\1575\1604\1605\1578\1593\1583\1583\1577"
+, SoftBreak
+, Code
+    "typ/layout/columns-00.typ"
+    ( line 10 , column 2 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
+       , KeyValArg (Identifier "height") (Literal (Numeric 8.0 Pt))
+       , KeyValArg (Identifier "width") (Literal (Numeric 6.0 Pt))
+       ])
+, SoftBreak
+, Text "\1575\1604\1580\1586\1610\1574\1575\1578"
+, Space
+, Text "\1575\1604\1590\1582\1605\1577"
+, Space
+, Text "\1575\1604\1571\1585\1576\1593\1577"
+, Space
+, Text "\1575\1604\1590\1585\1608\1585\1610\1577"
+, Space
+, Text "\1604\1604\1581\1610\1575\1577"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+], 
+                      font: ("Noto Sans Arabic", 
+                             "Linux Libertine"), 
+                      lang: "ar"), 
+                 parbreak(), 
+                 box(fill: rgb(18%,80%,25%,100%), 
+                     height: 8.0pt, 
+                     width: 6.0pt), 
+                 text(body: [ وتحفيز
+العديد من التفاعلات الكيميائية. (DNA) من أهم الأحماض النووية التي تُشكِّل
+إلى جانب كل من البروتينات والليبيدات والسكريات المتعددة
+], 
+                      font: ("Noto Sans Arabic", 
+                             "Linux Libertine"), 
+                      lang: "ar"), 
+                 box(fill: rgb(13%,61%,67%,100%), 
+                     height: 8.0pt, 
+                     width: 6.0pt), 
+                 text(body: [
+الجزيئات الضخمة الأربعة الضرورية للحياة.], 
+                      font: ("Noto Sans Arabic", 
+                             "Linux Libertine"), 
+                      lang: "ar"), 
+                 parbreak() })
diff --git a/test/typ/layout/columns-01.out b/test/typ/layout/columns-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/columns-01.out
@@ -0,0 +1,152 @@
+--- parse tree ---
+[ Code
+    "typ/layout/columns-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/columns-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/columns-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/columns-01.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal Auto) ])
+, ParBreak
+, Code
+    "typ/layout/columns-01.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "rect"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 180.0 Pt))
+       , KeyValArg (Identifier "height") (Literal (Numeric 100.0 Pt))
+       , KeyValArg (Identifier "inset") (Literal (Numeric 8.0 Pt))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "columns"))
+              [ NormalArg (Literal (Int 2))
+              , NormalArg
+                  (Block
+                     (Content
+                        [ SoftBreak
+                        , Text "A"
+                        , Space
+                        , Text "special"
+                        , Space
+                        , Text "plight"
+                        , Space
+                        , Text "has"
+                        , Space
+                        , Text "befallen"
+                        , Space
+                        , Text "our"
+                        , Space
+                        , Text "document"
+                        , Text "."
+                        , SoftBreak
+                        , Text "Columns"
+                        , Space
+                        , Text "in"
+                        , Space
+                        , Text "text"
+                        , Space
+                        , Text "boxes"
+                        , Space
+                        , Text "reigned"
+                        , Space
+                        , Text "down"
+                        , Space
+                        , Text "unto"
+                        , Space
+                        , Text "the"
+                        , Space
+                        , Text "soil"
+                        , SoftBreak
+                        , Text "to"
+                        , Space
+                        , Text "waste"
+                        , Space
+                        , Text "a"
+                        , Space
+                        , Text "year"
+                        , Quote '\''
+                        , Text "s"
+                        , Space
+                        , Text "crop"
+                        , Space
+                        , Text "of"
+                        , Space
+                        , Text "rich"
+                        , Space
+                        , Text "layouts"
+                        , Text "."
+                        , SoftBreak
+                        , Text "The"
+                        , Space
+                        , Text "columns"
+                        , Space
+                        , Text "at"
+                        , Space
+                        , Text "least"
+                        , Space
+                        , Text "were"
+                        , Space
+                        , Text "graciously"
+                        , Space
+                        , Text "balanced"
+                        , Text "."
+                        , ParBreak
+                        ]))
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 rect(body: columns(body: { text(body: [
+A special plight has befallen our document.
+Columns in text boxes reigned down unto the soil
+to waste a year’s crop of rich layouts.
+The columns at least were graciously balanced.]), 
+                                            parbreak() }, 
+                                    count: 2), 
+                      height: 100.0pt, 
+                      inset: 8.0pt, 
+                      width: 180.0pt), 
+                 parbreak() })
diff --git a/test/typ/layout/columns-02.out b/test/typ/layout/columns-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/columns-02.out
@@ -0,0 +1,204 @@
+--- parse tree ---
+[ Code
+    "typ/layout/columns-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/columns-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/columns-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/columns-02.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 5.0 Cm))
+       , KeyValArg (Identifier "width") (Literal (Numeric 7.05 Cm))
+       , KeyValArg (Identifier "columns") (Literal (Int 2))
+       ])
+, ParBreak
+, Text "Lorem"
+, Space
+, Text "ipsum"
+, Space
+, Text "dolor"
+, Space
+, Text "sit"
+, Space
+, Text "amet"
+, Space
+, Text "is"
+, Space
+, Text "a"
+, Space
+, Text "common"
+, Space
+, Text "blind"
+, Space
+, Text "text"
+, SoftBreak
+, Text "and"
+, Space
+, Text "I"
+, Space
+, Text "again"
+, Space
+, Text "am"
+, Space
+, Text "in"
+, Space
+, Text "need"
+, Space
+, Text "of"
+, Space
+, Text "filling"
+, Space
+, Text "up"
+, Space
+, Text "this"
+, Space
+, Text "page"
+, SoftBreak
+, Code
+    "typ/layout/columns-02.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "align"))
+       [ NormalArg (Ident (Identifier "bottom"))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
+              , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
+              , KeyValArg (Identifier "height") (Literal (Numeric 12.0 Pt))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/layout/columns-02.typ"
+    ( line 8 , column 2 )
+    (FuncCall (Ident (Identifier "colbreak")) [])
+, ParBreak
+, Text "so"
+, Space
+, Text "I"
+, Quote '\''
+, Text "m"
+, Space
+, Text "returning"
+, Space
+, Text "to"
+, Space
+, Text "this"
+, Space
+, Text "trusty"
+, Space
+, Text "tool"
+, Space
+, Text "of"
+, Space
+, Text "tangible"
+, Space
+, Text "terror"
+, Text "."
+, SoftBreak
+, Text "Sure,"
+, Space
+, Text "it"
+, Space
+, Text "is"
+, Space
+, Text "not"
+, Space
+, Text "the"
+, Space
+, Text "most"
+, Space
+, Text "creative"
+, Space
+, Text "way"
+, Space
+, Text "of"
+, Space
+, Text "filling"
+, Space
+, Text "up"
+, SoftBreak
+, Text "a"
+, Space
+, Text "page"
+, Space
+, Text "for"
+, Space
+, Text "a"
+, Space
+, Text "test"
+, Space
+, Text "but"
+, Space
+, Text "it"
+, Space
+, Text "does"
+, Space
+, Text "get"
+, Space
+, Text "the"
+, Space
+, Text "job"
+, Space
+, Text "done"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [Lorem ipsum dolor sit amet is a common blind text
+and I again am in need of filling up this page
+]), 
+                 align(alignment: bottom, 
+                       body: rect(fill: rgb(13%,61%,67%,100%), 
+                                  height: 12.0pt, 
+                                  width: 100%)), 
+                 text(body: [
+]), 
+                 colbreak(), 
+                 parbreak(), 
+                 text(body: [so I’m returning to this trusty tool of tangible terror.
+Sure, it is not the most creative way of filling up
+a page for a test but it does get the job done.]), 
+                 parbreak() })
diff --git a/test/typ/layout/columns-03.out b/test/typ/layout/columns-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/columns-03.out
@@ -0,0 +1,98 @@
+--- parse tree ---
+[ Code
+    "typ/layout/columns-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/columns-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/columns-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/columns-03.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 2.5 Cm))
+       , KeyValArg (Identifier "width") (Literal (Numeric 7.05 Cm))
+       ])
+, ParBreak
+, Code
+    "typ/layout/columns-03.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "rect"))
+       [ KeyValArg (Identifier "inset") (Literal (Numeric 6.0 Pt))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "columns"))
+              [ NormalArg (Literal (Int 2))
+              , NormalArg
+                  (Block
+                     (Content
+                        [ SoftBreak
+                        , Text "ABC"
+                        , Space
+                        , HardBreak
+                        , Text "BCD"
+                        , SoftBreak
+                        , Code
+                            "typ/layout/columns-03.typ"
+                            ( line 8 , column 6 )
+                            (FuncCall (Ident (Identifier "colbreak")) [])
+                        , SoftBreak
+                        , Text "DEF"
+                        , ParBreak
+                        ]))
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 rect(body: columns(body: { text(body: [
+ABC ]), 
+                                            linebreak(), 
+                                            text(body: [BCD
+]), 
+                                            colbreak(), 
+                                            text(body: [
+DEF]), 
+                                            parbreak() }, 
+                                    count: 2), 
+                      inset: 6.0pt), 
+                 parbreak() })
diff --git a/test/typ/layout/columns-04.out b/test/typ/layout/columns-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/columns-04.out
@@ -0,0 +1,119 @@
+--- parse tree ---
+[ Code
+    "typ/layout/columns-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/columns-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/columns-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/columns-04.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 3.25 Cm))
+       , KeyValArg (Identifier "width") (Literal (Numeric 7.05 Cm))
+       , KeyValArg (Identifier "columns") (Literal (Int 3))
+       ])
+, SoftBreak
+, Code
+    "typ/layout/columns-04.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "columns"))
+       [ KeyValArg (Identifier "gutter") (Literal (Numeric 30.0 Pt)) ])
+, ParBreak
+, Code
+    "typ/layout/columns-04.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "rect"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
+       , KeyValArg (Identifier "height") (Literal (Numeric 2.5 Cm))
+       , KeyValArg (Identifier "fill") (Ident (Identifier "green"))
+       ])
+, Space
+, Code
+    "typ/layout/columns-04.typ"
+    ( line 6 , column 49 )
+    (FuncCall (Ident (Identifier "parbreak")) [])
+, SoftBreak
+, Code
+    "typ/layout/columns-04.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "rect"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
+       , KeyValArg (Identifier "height") (Literal (Numeric 2.0 Cm))
+       , KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
+       ])
+, Space
+, Code
+    "typ/layout/columns-04.typ"
+    ( line 7 , column 49 )
+    (FuncCall (Ident (Identifier "parbreak")) [])
+, SoftBreak
+, Code
+    "typ/layout/columns-04.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "circle"))
+       [ KeyValArg (Identifier "fill") (Ident (Identifier "eastern")) ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 rect(fill: rgb(18%,80%,25%,100%), 
+                      height: 2.5cm, 
+                      width: 100%), 
+                 text(body: [ ]), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 rect(fill: rgb(13%,61%,67%,100%), 
+                      height: 2.0cm, 
+                      width: 100%), 
+                 text(body: [ ]), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 circle(fill: rgb(13%,61%,67%,100%)), 
+                 parbreak() })
diff --git a/test/typ/layout/columns-05.out b/test/typ/layout/columns-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/columns-05.out
@@ -0,0 +1,102 @@
+--- parse tree ---
+[ Code
+    "typ/layout/columns-05.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/columns-05.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/columns-05.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/columns-05.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 1.0 Cm))
+       , KeyValArg (Identifier "width") (Literal (Numeric 7.05 Cm))
+       , KeyValArg (Identifier "columns") (Literal (Int 2))
+       ])
+, ParBreak
+, Text "A"
+, SoftBreak
+, Code
+    "typ/layout/columns-05.typ"
+    ( line 6 , column 2 )
+    (FuncCall (Ident (Identifier "colbreak")) [])
+, SoftBreak
+, Code
+    "typ/layout/columns-05.typ"
+    ( line 7 , column 2 )
+    (FuncCall (Ident (Identifier "colbreak")) [])
+, SoftBreak
+, Text "B"
+, SoftBreak
+, Code
+    "typ/layout/columns-05.typ"
+    ( line 9 , column 2 )
+    (FuncCall (Ident (Identifier "pagebreak")) [])
+, SoftBreak
+, Text "C"
+, SoftBreak
+, Code
+    "typ/layout/columns-05.typ"
+    ( line 11 , column 2 )
+    (FuncCall (Ident (Identifier "colbreak")) [])
+, SoftBreak
+, Text "D"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [A
+]), 
+                 colbreak(), 
+                 text(body: [
+]), 
+                 colbreak(), 
+                 text(body: [
+B
+]), 
+                 pagebreak(), 
+                 text(body: [
+C
+]), 
+                 colbreak(), 
+                 text(body: [
+D]), 
+                 parbreak() })
diff --git a/test/typ/layout/columns-06.out b/test/typ/layout/columns-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/columns-06.out
@@ -0,0 +1,88 @@
+--- parse tree ---
+[ Code
+    "typ/layout/columns-06.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/columns-06.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/columns-06.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/columns-06.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 7.05 Cm))
+       , KeyValArg (Identifier "columns") (Literal (Int 2))
+       ])
+, ParBreak
+, Code
+    "typ/layout/columns-06.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "rect"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
+       , KeyValArg (Identifier "inset") (Literal (Numeric 3.0 Pt))
+       , BlockArg
+           [ Text "So"
+           , Space
+           , Text "there"
+           , Space
+           , Text "isn"
+           , Quote '\''
+           , Text "t"
+           , Space
+           , Text "anything"
+           , Space
+           , Text "in"
+           , Space
+           , Text "the"
+           , Space
+           , Text "second"
+           , Space
+           , Text "column?"
+           ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 rect(body: text(body: [So there isn’t anything in the second column?]), 
+                      inset: 3.0pt, 
+                      width: 100%), 
+                 parbreak() })
diff --git a/test/typ/layout/columns-07.out b/test/typ/layout/columns-07.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/columns-07.out
@@ -0,0 +1,65 @@
+--- parse tree ---
+[ Code
+    "typ/layout/columns-07.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/columns-07.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/columns-07.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/columns-07.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal Auto)
+       , KeyValArg (Identifier "columns") (Literal (Int 3))
+       ])
+, ParBreak
+, Text "Arbitrary"
+, Space
+, Text "horizontal"
+, Space
+, Text "growth"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [Arbitrary horizontal growth.]), 
+                 parbreak() })
diff --git a/test/typ/layout/columns-08.out b/test/typ/layout/columns-08.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/columns-08.out
@@ -0,0 +1,151 @@
+--- parse tree ---
+[ Code
+    "typ/layout/columns-08.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/columns-08.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/columns-08.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/columns-08.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 7.05 Cm))
+       , KeyValArg (Identifier "columns") (Literal (Int 2))
+       ])
+, ParBreak
+, Text "There"
+, Space
+, Text "can"
+, Space
+, Text "be"
+, Space
+, Text "as"
+, Space
+, Text "much"
+, Space
+, Text "content"
+, Space
+, Text "as"
+, Space
+, Text "you"
+, Space
+, Text "want"
+, Space
+, Text "in"
+, Space
+, Text "the"
+, Space
+, Text "left"
+, Space
+, Text "column"
+, SoftBreak
+, Text "and"
+, Space
+, Text "the"
+, Space
+, Text "document"
+, Space
+, Text "will"
+, Space
+, Text "grow"
+, Space
+, Text "with"
+, Space
+, Text "it"
+, Text "."
+, ParBreak
+, Code
+    "typ/layout/columns-08.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "rect"))
+       [ KeyValArg (Identifier "fill") (Ident (Identifier "green"))
+       , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
+       , KeyValArg (Identifier "height") (Literal (Numeric 30.0 Pt))
+       ])
+, ParBreak
+, Text "Only"
+, Space
+, Text "an"
+, Space
+, Text "explicit"
+, Space
+, Code
+    "typ/layout/columns-08.typ"
+    ( line 10 , column 19 )
+    (FuncCall (Ident (Identifier "colbreak")) [])
+, Space
+, RawInline "#colbreak()"
+, Space
+, Text "can"
+, Space
+, Text "put"
+, Space
+, Text "content"
+, Space
+, Text "in"
+, Space
+, Text "the"
+, SoftBreak
+, Text "second"
+, Space
+, Text "column"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [There can be as much content as you want in the left column
+and the document will grow with it.]), 
+                 parbreak(), 
+                 rect(fill: rgb(18%,80%,25%,100%), 
+                      height: 30.0pt, 
+                      width: 100%), 
+                 parbreak(), 
+                 text(body: [Only an explicit ]), 
+                 colbreak(), 
+                 text(body: [ ]), 
+                 raw(block: false, 
+                     lang: none, 
+                     text: "#colbreak()"), 
+                 text(body: [ can put content in the
+second column.]), 
+                 parbreak() })
diff --git a/test/typ/layout/columns-09.out b/test/typ/layout/columns-09.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/columns-09.out
@@ -0,0 +1,75 @@
+--- parse tree ---
+[ Code
+    "typ/layout/columns-09.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/columns-09.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/columns-09.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/columns-09.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal Auto)
+       , KeyValArg (Identifier "width") (Literal (Numeric 7.05 Cm))
+       , KeyValArg (Identifier "columns") (Literal (Int 1))
+       ])
+, ParBreak
+, Text "This"
+, Space
+, Text "is"
+, Space
+, Text "a"
+, Space
+, Text "normal"
+, Space
+, Text "page"
+, Text "."
+, Space
+, Text "Very"
+, Space
+, Text "normal"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [This is a normal page. Very normal.]), 
+                 parbreak() })
diff --git a/test/typ/layout/columns-10.out b/test/typ/layout/columns-10.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/columns-10.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/layout/container-00.out b/test/typ/layout/container-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/container-00.out
@@ -0,0 +1,85 @@
+--- parse tree ---
+[ Code
+    "typ/layout/container-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/container-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/container-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "A"
+, Space
+, Code
+    "typ/layout/container-00.typ"
+    ( line 3 , column 4 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ BlockArg [ Text "B" , Space , HardBreak , Text "C" ] ])
+, Space
+, Text "D"
+, Text "."
+, ParBreak
+, Comment
+, Text "Spaced"
+, Space
+, HardBreak
+, Code
+    "typ/layout/container-00.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 0.5 Cm)) ])
+, Space
+, HardBreak
+, Text "Apart"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [A ]), 
+                 box(body: { text(body: [B ]), 
+                             linebreak(), 
+                             text(body: [C]) }), 
+                 text(body: [ D.]), 
+                 parbreak(), 
+                 text(body: [Spaced ]), 
+                 linebreak(), 
+                 box(height: 0.5cm), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 text(body: [Apart]), 
+                 parbreak() })
diff --git a/test/typ/layout/container-01.out b/test/typ/layout/container-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/container-01.out
@@ -0,0 +1,115 @@
+--- parse tree ---
+[ Code
+    "typ/layout/container-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/container-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/container-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/container-01.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 120.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/layout/container-01.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "block"))
+       [ KeyValArg (Identifier "spacing") (Literal (Numeric 0.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/layout/container-01.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "block"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 90.0 Pt))
+       , KeyValArg (Identifier "height") (Literal (Numeric 80.0 Pt))
+       , KeyValArg (Identifier "fill") (Ident (Identifier "red"))
+       , BlockArg
+           [ SoftBreak
+           , Code
+               "typ/layout/container-01.typ"
+               ( line 6 , column 4 )
+               (FuncCall
+                  (Ident (Identifier "block"))
+                  [ KeyValArg (Identifier "width") (Literal (Numeric 60.0 Percent))
+                  , KeyValArg (Identifier "height") (Literal (Numeric 60.0 Percent))
+                  , KeyValArg (Identifier "fill") (Ident (Identifier "green"))
+                  ])
+           , SoftBreak
+           , Code
+               "typ/layout/container-01.typ"
+               ( line 7 , column 4 )
+               (FuncCall
+                  (Ident (Identifier "block"))
+                  [ KeyValArg (Identifier "width") (Literal (Numeric 50.0 Percent))
+                  , KeyValArg (Identifier "height") (Literal (Numeric 60.0 Percent))
+                  , KeyValArg (Identifier "fill") (Ident (Identifier "blue"))
+                  ])
+           , ParBreak
+           ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 block(body: { text(body: [
+]), 
+                               block(fill: rgb(18%,80%,25%,100%), 
+                                     height: 60%, 
+                                     spacing: 0.0pt, 
+                                     width: 60%), 
+                               text(body: [
+]), 
+                               block(fill: rgb(0%,45%,85%,100%), 
+                                     height: 60%, 
+                                     spacing: 0.0pt, 
+                                     width: 50%), 
+                               parbreak() }, 
+                       fill: rgb(100%,25%,21%,100%), 
+                       height: 80.0pt, 
+                       spacing: 0.0pt, 
+                       width: 90.0pt), 
+                 parbreak() })
diff --git a/test/typ/layout/container-02.out b/test/typ/layout/container-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/container-02.out
@@ -0,0 +1,92 @@
+--- parse tree ---
+[ Code
+    "typ/layout/container-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/container-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/container-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/container-02.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 50.0 Pt))
+       , KeyValArg (Identifier "height") (Literal (Numeric 50.0 Pt))
+       , KeyValArg (Identifier "fill") (Ident (Identifier "yellow"))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "path"))
+              [ KeyValArg (Identifier "fill") (Ident (Identifier "purple"))
+              , NormalArg
+                  (Array
+                     [ Reg (Literal (Numeric 0.0 Pt))
+                     , Reg (Literal (Numeric 0.0 Pt))
+                     ])
+              , NormalArg
+                  (Array
+                     [ Reg (Literal (Numeric 30.0 Pt))
+                     , Reg (Literal (Numeric 30.0 Pt))
+                     ])
+              , NormalArg
+                  (Array
+                     [ Reg (Literal (Numeric 0.0 Pt))
+                     , Reg (Literal (Numeric 30.0 Pt))
+                     ])
+              , NormalArg
+                  (Array
+                     [ Reg (Literal (Numeric 30.0 Pt))
+                     , Reg (Literal (Numeric 0.0 Pt))
+                     ])
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 box(body: path(fill: rgb(69%,5%,78%,100%), 
+                                vertices: ((0.0pt, 0.0pt), 
+                                           (30.0pt, 
+                                            30.0pt), 
+                                           (0.0pt, 30.0pt), 
+                                           (30.0pt, 
+                                            0.0pt))), 
+                     fill: rgb(100%,86%,0%,100%), 
+                     height: 50.0pt, 
+                     width: 50.0pt), 
+                 parbreak() })
diff --git a/test/typ/layout/container-03.out b/test/typ/layout/container-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/container-03.out
@@ -0,0 +1,70 @@
+--- parse tree ---
+[ Code
+    "typ/layout/container-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/container-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/container-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "Hello"
+, Space
+, Code
+    "typ/layout/container-03.typ"
+    ( line 3 , column 8 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 1.0 Fr))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg (Identifier "height") (Literal (Numeric 0.7 Em))
+              , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
+              ])
+       ])
+, Space
+, Text "World"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [Hello ]), 
+                 box(body: rect(height: 0.7em, 
+                                width: 100%), 
+                     width: 1.0fr), 
+                 text(body: [ World]), 
+                 parbreak() })
diff --git a/test/typ/layout/container-04.out b/test/typ/layout/container-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/container-04.out
@@ -0,0 +1,111 @@
+--- parse tree ---
+[ Code
+    "typ/layout/container-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/container-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/container-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, SoftBreak
+, Code
+    "typ/layout/container-04.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 60.0 Pt)) ])
+, ParBreak
+, Text "First!"
+, ParBreak
+, Code
+    "typ/layout/container-04.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "block"))
+       [ BlockArg
+           [ SoftBreak
+           , Text "But,"
+           , Space
+           , Text "soft!"
+           , Space
+           , Text "what"
+           , Space
+           , Text "light"
+           , Space
+           , Text "through"
+           , Space
+           , Text "yonder"
+           , Space
+           , Text "window"
+           , Space
+           , Text "breaks?"
+           , Space
+           , Text "It"
+           , Space
+           , Text "is"
+           , Space
+           , Text "the"
+           , Space
+           , Text "east,"
+           , Space
+           , Text "and"
+           , Space
+           , Text "Juliet"
+           , SoftBreak
+           , Text "is"
+           , Space
+           , Text "the"
+           , Space
+           , Text "sun"
+           , Text "."
+           , ParBreak
+           ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [First!]), 
+                 parbreak(), 
+                 block(body: { text(body: [
+But, soft! what light through yonder window breaks? It is the east, and Juliet
+is the sun.]), 
+                               parbreak() }), 
+                 parbreak() })
diff --git a/test/typ/layout/container-fill-00.out b/test/typ/layout/container-fill-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/container-fill-00.out
@@ -0,0 +1,138 @@
+--- parse tree ---
+[ Code
+    "typ/layout/container-fill-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/container-fill-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/container-fill-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/layout/container-fill-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 100.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/layout/container-fill-00.typ"
+    ( line 3 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "words")))
+       (FuncCall
+          (FieldAccess
+             (Ident (Identifier "split"))
+             (FuncCall
+                (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 18)) ]))
+          []))
+, SoftBreak
+, Code
+    "typ/layout/container-fill-00.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "block"))
+       [ KeyValArg (Identifier "inset") (Literal (Numeric 8.0 Pt))
+       , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
+       , KeyValArg (Identifier "fill") (Ident (Identifier "aqua"))
+       , KeyValArg
+           (Identifier "stroke")
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "darken")) (Ident (Identifier "aqua")))
+              [ NormalArg (Literal (Numeric 30.0 Percent)) ])
+       , BlockArg
+           [ SoftBreak
+           , Code
+               "typ/layout/container-fill-00.typ"
+               ( line 5 , column 4 )
+               (FuncCall
+                  (FieldAccess
+                     (Ident (Identifier "join"))
+                     (FuncCall
+                        (FieldAccess
+                           (Ident (Identifier "slice")) (Ident (Identifier "words")))
+                        [ NormalArg (Literal (Int 0)) , NormalArg (Literal (Int 13)) ]))
+                  [ NormalArg (Literal (String " ")) ])
+           , SoftBreak
+           , Code
+               "typ/layout/container-fill-00.typ"
+               ( line 6 , column 4 )
+               (FuncCall
+                  (Ident (Identifier "box"))
+                  [ KeyValArg (Identifier "fill") (Ident (Identifier "teal"))
+                  , KeyValArg (Identifier "outset") (Literal (Numeric 2.0 Pt))
+                  , BlockArg [ Text "tempor" ]
+                  ])
+           , SoftBreak
+           , Code
+               "typ/layout/container-fill-00.typ"
+               ( line 7 , column 4 )
+               (FuncCall
+                  (FieldAccess
+                     (Ident (Identifier "join"))
+                     (FuncCall
+                        (FieldAccess
+                           (Ident (Identifier "slice")) (Ident (Identifier "words")))
+                        [ NormalArg (Literal (Int 13)) ]))
+                  [ NormalArg (Literal (String " ")) ])
+           , ParBreak
+           ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 block(body: { text(body: [
+]), 
+                               text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt]), 
+                               text(body: [
+]), 
+                               box(body: text(body: [tempor]), 
+                                   fill: rgb(22%,80%,80%,100%), 
+                                   outset: 2.0pt), 
+                               text(body: [
+]), 
+                               text(body: [ut labore et dolore magna]), 
+                               parbreak() }, 
+                       fill: rgb(49%,85%,100%,100%), 
+                       inset: 8.0pt, 
+                       stroke: rgb(34%,60%,70%,100%), 
+                       width: 100%), 
+                 parbreak() })
diff --git a/test/typ/layout/enum-00.out b/test/typ/layout/enum-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/enum-00.out
@@ -0,0 +1,59 @@
+--- parse tree ---
+[ Code
+    "typ/layout/enum-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/enum-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/enum-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/layout/enum-00.typ"
+    ( line 2 , column 2 )
+    (FuncCall
+       (Ident (Identifier "enum"))
+       [ BlockArg [ Text "Embrace" ]
+       , BlockArg [ Text "Extend" ]
+       , BlockArg [ Text "Extinguish" ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 enum(children: (text(body: [Embrace]), 
+                                 text(body: [Extend]), 
+                                 text(body: [Extinguish]))), 
+                 parbreak() })
diff --git a/test/typ/layout/enum-01.out b/test/typ/layout/enum-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/enum-01.out
@@ -0,0 +1,65 @@
+--- parse tree ---
+[ Code
+    "typ/layout/enum-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/enum-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/enum-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, EnumListItem (Just 0) [ Text "Before" , Space , Text "first!" ]
+, SoftBreak
+, EnumListItem
+    (Just 1)
+    [ Text "First"
+    , Text "."
+    , SoftBreak
+    , EnumListItem (Just 2) [ Text "Indented" , SoftBreak ]
+    ]
+, SoftBreak
+, EnumListItem Nothing [ Text "Second" , ParBreak ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 enum(children: (text(body: [Before first!]), 
+                                 { text(body: [First.
+]), 
+                                   enum(children: (text(body: [Indented
+])), 
+                                        start: 2) }, 
+                                 { text(body: [Second]), 
+                                   parbreak() }), 
+                      start: 0) })
diff --git a/test/typ/layout/enum-02.out b/test/typ/layout/enum-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/enum-02.out
@@ -0,0 +1,82 @@
+--- parse tree ---
+[ Code
+    "typ/layout/enum-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/enum-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/enum-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/enum-02.typ"
+    ( line 3 , column 2 )
+    (For
+       (BasicBind (Just (Identifier "i")))
+       (FuncCall
+          (Ident (Identifier "range")) [ NormalArg (Literal (Int 5)) ])
+       (Block
+          (CodeBlock
+             [ Block
+                 (Content
+                    [ EnumListItem
+                        Nothing
+                        [ Code
+                            "typ/layout/enum-02.typ"
+                            ( line 4 , column 8 )
+                            (FuncCall
+                               (Ident (Identifier "numbering"))
+                               [ NormalArg (Literal (String "I"))
+                               , NormalArg (Plus (Literal (Int 1)) (Ident (Identifier "i")))
+                               ])
+                        ]
+                    ])
+             ])))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 enum(children: (numbering(numbering: "I", 
+                                           numbers: (1)))), 
+                 enum(children: (numbering(numbering: "I", 
+                                           numbers: (2)))), 
+                 enum(children: (numbering(numbering: "I", 
+                                           numbers: (3)))), 
+                 enum(children: (numbering(numbering: "I", 
+                                           numbers: (4)))), 
+                 enum(children: (numbering(numbering: "I", 
+                                           numbers: (5)))), 
+                 parbreak() })
diff --git a/test/typ/layout/enum-03.out b/test/typ/layout/enum-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/enum-03.out
@@ -0,0 +1,56 @@
+--- parse tree ---
+[ Code
+    "typ/layout/enum-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/enum-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/enum-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, BulletListItem [ Text "Bullet" , Space , Text "List" ]
+, SoftBreak
+, EnumListItem Nothing [ Text "Numbered" , Space , Text "List" ]
+, SoftBreak
+, DescListItem [ Text "Term" ] [ Text "List" , ParBreak ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 list(children: (text(body: [Bullet List]))), 
+                 enum(children: (text(body: [Numbered List]))), 
+                 terms(children: ((text(body: [Term]), 
+                                   { text(body: [List]), 
+                                     parbreak() }))) })
diff --git a/test/typ/layout/enum-04.out b/test/typ/layout/enum-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/enum-04.out
@@ -0,0 +1,75 @@
+--- parse tree ---
+[ Code
+    "typ/layout/enum-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/enum-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/enum-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "1"
+, Text "."
+, Text "2"
+, Space
+, HardBreak
+, Text "This"
+, Space
+, Text "is"
+, Space
+, Text "0"
+, Text "."
+, Space
+, HardBreak
+, Text "See"
+, Space
+, Text "0"
+, Text "."
+, Text "3"
+, Text "."
+, Space
+, HardBreak
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [1.2 ]), 
+                 linebreak(), 
+                 text(body: [This is 0. ]), 
+                 linebreak(), 
+                 text(body: [See 0.3. ]), 
+                 linebreak(), 
+                 parbreak() })
diff --git a/test/typ/layout/enum-05.out b/test/typ/layout/enum-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/enum-05.out
@@ -0,0 +1,68 @@
+--- parse tree ---
+[ Code
+    "typ/layout/enum-05.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/enum-05.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/enum-05.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, EnumListItem Nothing []
+, SoftBreak
+, Text "Empty"
+, Space
+, HardBreak
+, Text "+Nope"
+, Space
+, HardBreak
+, Text "a"
+, Space
+, Text "+"
+, Space
+, Text "0"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 enum(children: ({  })), 
+                 text(body: [Empty ]), 
+                 linebreak(), 
+                 text(body: [+Nope ]), 
+                 linebreak(), 
+                 text(body: [a + 0.]), 
+                 parbreak() })
diff --git a/test/typ/layout/enum-06.out b/test/typ/layout/enum-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/enum-06.out
@@ -0,0 +1,81 @@
+--- parse tree ---
+[ Code
+    "typ/layout/enum-06.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/enum-06.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/enum-06.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, EnumListItem (Just 1) [ Text "first" ]
+, SoftBreak
+, EnumListItem Nothing [ Text "second" ]
+, SoftBreak
+, EnumListItem (Just 5) [ Text "fifth" , SoftBreak ]
+, SoftBreak
+, Code
+    "typ/layout/enum-06.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "enum"))
+       [ NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "item")) (Ident (Identifier "enum")))
+              [ NormalArg (Literal (Int 1)) , BlockArg [ Text "First" ] ])
+       , NormalArg (Block (Content [ Text "Second" ]))
+       , NormalArg
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "item")) (Ident (Identifier "enum")))
+              [ NormalArg (Literal (Int 5)) , BlockArg [ Text "Fifth" ] ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 enum(children: (text(body: [first]), 
+                                 text(body: [second]), 
+                                 text(body: [fifth
+])), 
+                      start: 1), 
+                 enum(children: (enum.item(body: text(body: [First]), 
+                                           number: 1), 
+                                 text(body: [Second]), 
+                                 enum.item(body: text(body: [Fifth]), 
+                                           number: 5))), 
+                 parbreak() })
diff --git a/test/typ/layout/enum-align-00.out b/test/typ/layout/enum-align-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/enum-align-00.out
@@ -0,0 +1,89 @@
+--- parse tree ---
+[ Code
+    "typ/layout/enum-align-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/enum-align-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/enum-align-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/enum-align-00.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "align"))
+       [ NormalArg (Ident (Identifier "horizon")) ])
+, ParBreak
+, EnumListItem
+    Nothing
+    [ Text "ABCDEF"
+    , HardBreak
+    , Text "GHIJKL"
+    , HardBreak
+    , Text "MNOPQR"
+    , SoftBreak
+    , EnumListItem
+        Nothing
+        [ Text "INNER"
+        , HardBreak
+        , Text "INNER"
+        , HardBreak
+        , Text "INNER"
+        ]
+    ]
+, SoftBreak
+, EnumListItem
+    Nothing [ Text "BACK" , HardBreak , Text "HERE" , ParBreak ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 enum(children: ({ text(body: [ABCDEF]), 
+                                   linebreak(), 
+                                   text(body: [GHIJKL]), 
+                                   linebreak(), 
+                                   text(body: [MNOPQR
+]), 
+                                   enum(children: ({ text(body: [INNER]), 
+                                                     linebreak(), 
+                                                     text(body: [INNER]), 
+                                                     linebreak(), 
+                                                     text(body: [INNER]) })) }, 
+                                 { text(body: [BACK]), 
+                                   linebreak(), 
+                                   text(body: [HERE]), 
+                                   parbreak() })) })
diff --git a/test/typ/layout/enum-align-01.out b/test/typ/layout/enum-align-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/enum-align-01.out
@@ -0,0 +1,79 @@
+--- parse tree ---
+[ Code
+    "typ/layout/enum-align-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/enum-align-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/enum-align-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, EnumListItem (Just 1) [ Text "a" ]
+, SoftBreak
+, EnumListItem (Just 10) [ Text "b" ]
+, SoftBreak
+, EnumListItem (Just 100) [ Text "c" , SoftBreak ]
+, SoftBreak
+, Code
+    "typ/layout/enum-align-01.typ"
+    ( line 7 , column 2 )
+    (Set
+       (Ident (Identifier "enum"))
+       [ KeyValArg
+           (Identifier "number-align") (Ident (Identifier "start"))
+       ])
+, SoftBreak
+, EnumListItem (Just 1) [ Space , Text "a" ]
+, SoftBreak
+, EnumListItem (Just 8) [ Space , Text "b" ]
+, SoftBreak
+, EnumListItem (Just 16) [ Text "c" , ParBreak ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 enum(children: (text(body: [a]), 
+                                 text(body: [b]), 
+                                 text(body: [c
+])), 
+                      start: 1), 
+                 text(body: [
+]), 
+                 enum(children: (text(body: [ a]), 
+                                 text(body: [ b]), 
+                                 { text(body: [c]), 
+                                   parbreak() }), 
+                      number-align: start, 
+                      start: 1) })
diff --git a/test/typ/layout/enum-align-02.out b/test/typ/layout/enum-align-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/enum-align-02.out
@@ -0,0 +1,97 @@
+--- parse tree ---
+[ Code
+    "typ/layout/enum-align-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/enum-align-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/enum-align-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/enum-align-02.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "align"))
+       [ NormalArg (Ident (Identifier "center")) ])
+, SoftBreak
+, Code
+    "typ/layout/enum-align-02.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "enum"))
+       [ KeyValArg
+           (Identifier "number-align") (Ident (Identifier "start"))
+       ])
+, ParBreak
+, EnumListItem (Just 4) [ Space , Text "c" ]
+, SoftBreak
+, EnumListItem (Just 8) [ Space , Text "d" ]
+, SoftBreak
+, EnumListItem
+    (Just 16)
+    [ Text "e"
+    , HardBreak
+    , Text "f"
+    , SoftBreak
+    , EnumListItem (Just 2) [ Space , Text "f" , HardBreak , Text "g" ]
+    , SoftBreak
+    , EnumListItem (Just 32) [ Text "g" ]
+    , SoftBreak
+    , EnumListItem (Just 64) [ Text "h" , ParBreak ]
+    ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 enum(children: (text(body: [ c]), 
+                                 text(body: [ d]), 
+                                 { text(body: [e]), 
+                                   linebreak(), 
+                                   text(body: [f
+]), 
+                                   enum(children: ({ text(body: [ f]), 
+                                                     linebreak(), 
+                                                     text(body: [g]) }, 
+                                                   text(body: [g]), 
+                                                   { text(body: [h]), 
+                                                     parbreak() }), 
+                                        number-align: start, 
+                                        start: 2) }), 
+                      number-align: start, 
+                      start: 4) })
diff --git a/test/typ/layout/enum-align-03.out b/test/typ/layout/enum-align-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/enum-align-03.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/layout/enum-numbering-00.out b/test/typ/layout/enum-numbering-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/enum-numbering-00.out
@@ -0,0 +1,83 @@
+--- parse tree ---
+[ Code
+    "typ/layout/enum-numbering-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/enum-numbering-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/enum-numbering-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/enum-numbering-00.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "enum"))
+       [ KeyValArg (Identifier "numbering") (Literal (String "(1.a.*)"))
+       ])
+, SoftBreak
+, EnumListItem Nothing [ Text "First" ]
+, SoftBreak
+, EnumListItem
+    Nothing
+    [ Text "Second"
+    , SoftBreak
+    , EnumListItem
+        (Just 2)
+        [ Text "Nested"
+        , SoftBreak
+        , EnumListItem Nothing [ Text "Deep" ]
+        ]
+    ]
+, SoftBreak
+, EnumListItem Nothing [ Text "Normal" , ParBreak ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 enum(children: (text(body: [First]), 
+                                 { text(body: [Second
+]), 
+                                   enum(children: ({ text(body: [Nested
+]), 
+                                                     enum(children: (text(body: [Deep])), 
+                                                          numbering: "(1.a.*)") }), 
+                                        numbering: "(1.a.*)", 
+                                        start: 2) }, 
+                                 { text(body: [Normal]), 
+                                   parbreak() }), 
+                      numbering: "(1.a.*)") })
diff --git a/test/typ/layout/enum-numbering-01.out b/test/typ/layout/enum-numbering-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/enum-numbering-01.out
@@ -0,0 +1,71 @@
+--- parse tree ---
+[ Code
+    "typ/layout/enum-numbering-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/enum-numbering-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/enum-numbering-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/enum-numbering-01.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "enum"))
+       [ KeyValArg (Identifier "numbering") (Literal (String "1.a."))
+       , KeyValArg (Identifier "full") (Literal (Boolean True))
+       ])
+, SoftBreak
+, EnumListItem
+    Nothing
+    [ Text "First"
+    , SoftBreak
+    , EnumListItem Nothing [ Text "Nested" , ParBreak ]
+    ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 enum(children: ({ text(body: [First
+]), 
+                                   enum(children: ({ text(body: [Nested]), 
+                                                     parbreak() }), 
+                                        full: true, 
+                                        numbering: "1.a.") }), 
+                      full: true, 
+                      numbering: "1.a.") })
diff --git a/test/typ/layout/enum-numbering-02.out b/test/typ/layout/enum-numbering-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/enum-numbering-02.out
@@ -0,0 +1,102 @@
+--- parse tree ---
+[ Code
+    "typ/layout/enum-numbering-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/enum-numbering-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/enum-numbering-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/enum-numbering-02.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "enum"))
+       [ KeyValArg (Identifier "start") (Literal (Int 3))
+       , KeyValArg
+           (Identifier "spacing")
+           (Minus (Literal (Numeric 0.65 Em)) (Literal (Numeric 3.0 Pt)))
+       , KeyValArg (Identifier "tight") (Literal (Boolean False))
+       , KeyValArg
+           (Identifier "numbering")
+           (FuncExpr
+              [ NormalParam (Identifier "n") ]
+              (FuncCall
+                 (Ident (Identifier "text"))
+                 [ KeyValArg
+                     (Identifier "fill")
+                     (FuncCall
+                        (FieldAccess
+                           (Ident (Identifier "at"))
+                           (Array
+                              [ Reg (Ident (Identifier "red"))
+                              , Reg (Ident (Identifier "green"))
+                              , Reg (Ident (Identifier "blue"))
+                              ]))
+                        [ NormalArg
+                            (FuncCall
+                               (FieldAccess
+                                  (Ident (Identifier "rem")) (Ident (Identifier "calc")))
+                               [ NormalArg (Ident (Identifier "n"))
+                               , NormalArg (Literal (Int 3))
+                               ])
+                        ])
+                 , NormalArg
+                     (FuncCall
+                        (Ident (Identifier "numbering"))
+                        [ NormalArg (Literal (String "A"))
+                        , NormalArg (Ident (Identifier "n"))
+                        ])
+                 ]))
+       , NormalArg (Block (Content [ Text "Red" ]))
+       , NormalArg (Block (Content [ Text "Green" ]))
+       , NormalArg (Block (Content [ Text "Blue" ]))
+       , NormalArg (Block (Content [ Text "Red" ]))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 enum(children: (text(body: [Red]), 
+                                 text(body: [Green]), 
+                                 text(body: [Blue]), 
+                                 text(body: [Red])), 
+                      numbering: , 
+                      spacing: 0.65em + -3.0pt, 
+                      start: 3, 
+                      tight: false), 
+                 parbreak() })
diff --git a/test/typ/layout/enum-numbering-03.out b/test/typ/layout/enum-numbering-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/enum-numbering-03.out
@@ -0,0 +1,80 @@
+--- parse tree ---
+[ Code
+    "typ/layout/enum-numbering-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/enum-numbering-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/enum-numbering-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/enum-numbering-03.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "enum"))
+       [ KeyValArg
+           (Identifier "numbering")
+           (FuncExpr
+              [ NormalParam (Identifier "n") ]
+              (FuncCall
+                 (Ident (Identifier "super"))
+                 [ BlockArg
+                     [ Code
+                         "typ/layout/enum-numbering-03.typ"
+                         ( line 3 , column 34 )
+                         (Ident (Identifier "n"))
+                     ]
+                 ]))
+       ])
+, SoftBreak
+, EnumListItem
+    Nothing
+    [ Text "A" , SoftBreak , EnumListItem Nothing [ Text "B" ] ]
+, SoftBreak
+, EnumListItem Nothing [ Text "C" , ParBreak ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 enum(children: ({ text(body: [A
+]), 
+                                   enum(children: (text(body: [B])), 
+                                        numbering: ) }, 
+                                 { text(body: [C]), 
+                                   parbreak() }), 
+                      numbering: ) })
diff --git a/test/typ/layout/enum-numbering-04.out b/test/typ/layout/enum-numbering-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/enum-numbering-04.out
@@ -0,0 +1,117 @@
+--- parse tree ---
+[ Code
+    "typ/layout/enum-numbering-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/enum-numbering-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/enum-numbering-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/enum-numbering-04.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg
+           (Identifier "font") (Literal (String "New Computer Modern"))
+       ])
+, SoftBreak
+, Code
+    "typ/layout/enum-numbering-04.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "enum"))
+       [ KeyValArg
+           (Identifier "numbering")
+           (FuncExpr
+              [ SinkParam (Just (Identifier "args")) ]
+              (FuncCall
+                 (FieldAccess
+                    (Ident (Identifier "mat")) (Ident (Identifier "math")))
+                 [ NormalArg
+                     (FuncCall
+                        (FieldAccess
+                           (Ident (Identifier "pos")) (Ident (Identifier "args")))
+                        [])
+                 ]))
+       , KeyValArg (Identifier "full") (Literal (Boolean True))
+       ])
+, SoftBreak
+, EnumListItem
+    Nothing
+    [ Text "A"
+    , SoftBreak
+    , EnumListItem Nothing [ Text "B" ]
+    , SoftBreak
+    , EnumListItem
+        Nothing
+        [ Text "C" , SoftBreak , EnumListItem Nothing [ Text "D" ] ]
+    ]
+, SoftBreak
+, EnumListItem Nothing [ Text "E" ]
+, SoftBreak
+, EnumListItem Nothing [ Text "F" , ParBreak ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+], 
+                      font: "New Computer Modern"), 
+                 text(body: [
+], 
+                      font: "New Computer Modern"), 
+                 enum(children: ({ text(body: [A
+], 
+                                        font: "New Computer Modern"), 
+                                   enum(children: (text(body: [B], 
+                                                        font: "New Computer Modern"), 
+                                                   { text(body: [C
+], 
+                                                          font: "New Computer Modern"), 
+                                                     enum(children: (text(body: [D], 
+                                                                          font: "New Computer Modern")), 
+                                                          full: true, 
+                                                          numbering: ) }), 
+                                        full: true, 
+                                        numbering: ) }, 
+                                 text(body: [E], 
+                                      font: "New Computer Modern"), 
+                                 { text(body: [F], 
+                                        font: "New Computer Modern"), 
+                                   parbreak() }), 
+                      full: true, 
+                      numbering: ) })
diff --git a/test/typ/layout/enum-numbering-05.out b/test/typ/layout/enum-numbering-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/enum-numbering-05.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/layout/enum-numbering-06.out b/test/typ/layout/enum-numbering-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/enum-numbering-06.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/layout/flow-orphan-00.out b/test/typ/layout/flow-orphan-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/flow-orphan-00.out
@@ -0,0 +1,84 @@
+--- parse tree ---
+[ Code
+    "typ/layout/flow-orphan-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/flow-orphan-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/flow-orphan-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/layout/flow-orphan-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 100.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/layout/flow-orphan-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 12)) ])
+, ParBreak
+, Heading 1 [ Text "Introduction" ]
+, Text "This"
+, Space
+, Text "is"
+, Space
+, Text "the"
+, Space
+, Text "start"
+, Space
+, Text "and"
+, Space
+, Text "it"
+, Space
+, Text "goes"
+, Space
+, Text "on"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor]), 
+                 parbreak(), 
+                 heading(body: text(body: [Introduction]), 
+                         level: 1), 
+                 text(body: [This is the start and it goes on.]), 
+                 parbreak() })
diff --git a/test/typ/layout/flow-orphan-01.out b/test/typ/layout/flow-orphan-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/flow-orphan-01.out
@@ -0,0 +1,152 @@
+--- parse tree ---
+[ Code
+    "typ/layout/flow-orphan-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/flow-orphan-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/flow-orphan-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/layout/flow-orphan-01.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ NormalArg (Literal (String "a8"))
+       , KeyValArg (Identifier "height") (Literal (Numeric 140.0 Pt))
+       ])
+, SoftBreak
+, Code
+    "typ/layout/flow-orphan-01.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "weight") (Literal (Int 700)) ])
+, ParBreak
+, Comment
+, Code
+    "typ/layout/flow-orphan-01.typ"
+    ( line 6 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ NormalArg (Ident (Identifier "blue")) ])
+, SoftBreak
+, Code
+    "typ/layout/flow-orphan-01.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 27)) ])
+, ParBreak
+, Comment
+, Code
+    "typ/layout/flow-orphan-01.typ"
+    ( line 10 , column 2 )
+    (FuncCall
+       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 20)) ])
+, ParBreak
+, Comment
+, Comment
+, Code
+    "typ/layout/flow-orphan-01.typ"
+    ( line 14 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ NormalArg (Ident (Identifier "maroon")) ])
+, SoftBreak
+, Code
+    "typ/layout/flow-orphan-01.typ"
+    ( line 15 , column 2 )
+    (FuncCall
+       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 11)) ])
+, ParBreak
+, Code
+    "typ/layout/flow-orphan-01.typ"
+    ( line 17 , column 2 )
+    (FuncCall
+       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 13)) ])
+, ParBreak
+, Comment
+, Code
+    "typ/layout/flow-orphan-01.typ"
+    ( line 20 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ NormalArg (Ident (Identifier "olive")) ])
+, SoftBreak
+, Code
+    "typ/layout/flow-orphan-01.typ"
+    ( line 21 , column 2 )
+    (FuncCall
+       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 10)) ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [
+], 
+                      color: rgb(0%,45%,85%,100%), 
+                      weight: 700), 
+                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation], 
+                      color: rgb(0%,45%,85%,100%), 
+                      weight: 700), 
+                 parbreak(), 
+                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut], 
+                      color: rgb(0%,45%,85%,100%), 
+                      weight: 700), 
+                 parbreak(), 
+                 text(body: [
+], 
+                      color: rgb(52%,7%,29%,100%), 
+                      weight: 700), 
+                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod], 
+                      color: rgb(52%,7%,29%,100%), 
+                      weight: 700), 
+                 parbreak(), 
+                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt], 
+                      color: rgb(52%,7%,29%,100%), 
+                      weight: 700), 
+                 parbreak(), 
+                 text(body: [
+], 
+                      color: rgb(23%,60%,43%,100%), 
+                      weight: 700), 
+                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do], 
+                      color: rgb(23%,60%,43%,100%), 
+                      weight: 700), 
+                 parbreak() })
diff --git a/test/typ/layout/grid-1-00.out b/test/typ/layout/grid-1-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/grid-1-00.out
@@ -0,0 +1,230 @@
+--- parse tree ---
+[ Code
+    "typ/layout/grid-1-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/grid-1-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/grid-1-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/layout/grid-1-00.typ"
+    ( line 2 , column 2 )
+    (LetFunc
+       (Identifier "cell")
+       [ NormalParam (Identifier "width")
+       , NormalParam (Identifier "color")
+       ]
+       (FuncCall
+          (Ident (Identifier "rect"))
+          [ KeyValArg (Identifier "width") (Ident (Identifier "width"))
+          , KeyValArg (Identifier "height") (Literal (Numeric 2.0 Cm))
+          , KeyValArg (Identifier "fill") (Ident (Identifier "color"))
+          ]))
+, SoftBreak
+, Code
+    "typ/layout/grid-1-00.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Pt))
+       , KeyValArg (Identifier "height") (Literal (Numeric 140.0 Pt))
+       ])
+, SoftBreak
+, Code
+    "typ/layout/grid-1-00.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "grid"))
+       [ KeyValArg
+           (Identifier "columns")
+           (Array
+              [ Reg (Literal Auto)
+              , Reg (Literal (Numeric 1.0 Fr))
+              , Reg (Literal (Numeric 3.0 Fr))
+              , Reg (Literal (Numeric 0.25 Cm))
+              , Reg (Literal (Numeric 3.0 Percent))
+              , Reg
+                  (Plus (Literal (Numeric 2.0 Mm)) (Literal (Numeric 10.0 Percent)))
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "cell"))
+              [ NormalArg (Literal (Numeric 0.5 Cm))
+              , NormalArg
+                  (FuncCall
+                     (Ident (Identifier "rgb"))
+                     [ NormalArg (Literal (String "2a631a")) ])
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "cell"))
+              [ NormalArg (Literal (Numeric 100.0 Percent))
+              , NormalArg (Ident (Identifier "red"))
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "cell"))
+              [ NormalArg (Literal (Numeric 100.0 Percent))
+              , NormalArg (Ident (Identifier "green"))
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "cell"))
+              [ NormalArg (Literal (Numeric 100.0 Percent))
+              , NormalArg
+                  (FuncCall
+                     (Ident (Identifier "rgb"))
+                     [ NormalArg (Literal (String "ff0000")) ])
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "cell"))
+              [ NormalArg (Literal (Numeric 100.0 Percent))
+              , NormalArg
+                  (FuncCall
+                     (Ident (Identifier "rgb"))
+                     [ NormalArg (Literal (String "00ff00")) ])
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "cell"))
+              [ NormalArg (Literal (Numeric 80.0 Percent))
+              , NormalArg
+                  (FuncCall
+                     (Ident (Identifier "rgb"))
+                     [ NormalArg (Literal (String "00faf0")) ])
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "cell"))
+              [ NormalArg (Literal (Numeric 1.0 Cm))
+              , NormalArg
+                  (FuncCall
+                     (Ident (Identifier "rgb"))
+                     [ NormalArg (Literal (String "00ff00")) ])
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "cell"))
+              [ NormalArg (Literal (Numeric 0.5 Cm))
+              , NormalArg
+                  (FuncCall
+                     (Ident (Identifier "rgb"))
+                     [ NormalArg (Literal (String "2a631a")) ])
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "cell"))
+              [ NormalArg (Literal (Numeric 100.0 Percent))
+              , NormalArg (Ident (Identifier "red"))
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "cell"))
+              [ NormalArg (Literal (Numeric 100.0 Percent))
+              , NormalArg (Ident (Identifier "green"))
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "cell"))
+              [ NormalArg (Literal (Numeric 100.0 Percent))
+              , NormalArg
+                  (FuncCall
+                     (Ident (Identifier "rgb"))
+                     [ NormalArg (Literal (String "ff0000")) ])
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "cell"))
+              [ NormalArg (Literal (Numeric 100.0 Percent))
+              , NormalArg
+                  (FuncCall
+                     (Ident (Identifier "rgb"))
+                     [ NormalArg (Literal (String "00ff00")) ])
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 grid(children: (rect(fill: rgb(16%,38%,10%,100%), 
+                                      height: 2.0cm, 
+                                      width: 0.5cm), 
+                                 rect(fill: rgb(100%,25%,21%,100%), 
+                                      height: 2.0cm, 
+                                      width: 100%), 
+                                 rect(fill: rgb(18%,80%,25%,100%), 
+                                      height: 2.0cm, 
+                                      width: 100%), 
+                                 rect(fill: rgb(100%,0%,0%,100%), 
+                                      height: 2.0cm, 
+                                      width: 100%), 
+                                 rect(fill: rgb(0%,100%,0%,100%), 
+                                      height: 2.0cm, 
+                                      width: 100%), 
+                                 rect(fill: rgb(0%,98%,94%,100%), 
+                                      height: 2.0cm, 
+                                      width: 80%), 
+                                 rect(fill: rgb(0%,100%,0%,100%), 
+                                      height: 2.0cm, 
+                                      width: 1.0cm), 
+                                 rect(fill: rgb(16%,38%,10%,100%), 
+                                      height: 2.0cm, 
+                                      width: 0.5cm), 
+                                 rect(fill: rgb(100%,25%,21%,100%), 
+                                      height: 2.0cm, 
+                                      width: 100%), 
+                                 rect(fill: rgb(18%,80%,25%,100%), 
+                                      height: 2.0cm, 
+                                      width: 100%), 
+                                 rect(fill: rgb(100%,0%,0%,100%), 
+                                      height: 2.0cm, 
+                                      width: 100%), 
+                                 rect(fill: rgb(0%,100%,0%,100%), 
+                                      height: 2.0cm, 
+                                      width: 100%)), 
+                      columns: (auto, 
+                                1.0fr, 
+                                3.0fr, 
+                                0.25cm, 
+                                3%, 
+                                2.0mm + 10%)), 
+                 parbreak() })
diff --git a/test/typ/layout/grid-1-01.out b/test/typ/layout/grid-1-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/grid-1-01.out
@@ -0,0 +1,106 @@
+--- parse tree ---
+[ Code
+    "typ/layout/grid-1-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/grid-1-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/grid-1-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/layout/grid-1-01.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "rect"))
+       [ KeyValArg (Identifier "inset") (Literal (Numeric 0.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/layout/grid-1-01.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "grid"))
+       [ KeyValArg
+           (Identifier "columns")
+           (Array
+              [ Reg (Literal Auto)
+              , Reg (Literal Auto)
+              , Reg (Literal (Numeric 40.0 Percent))
+              ])
+       , KeyValArg (Identifier "column-gutter") (Literal (Numeric 1.0 Fr))
+       , KeyValArg (Identifier "row-gutter") (Literal (Numeric 1.0 Fr))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
+              , BlockArg
+                  [ Text "dddaa" , Space , Text "aaa" , Space , Text "aaa" ]
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg (Identifier "fill") (Ident (Identifier "green"))
+              , BlockArg [ Text "ccc" ]
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg
+                  (Identifier "fill")
+                  (FuncCall
+                     (Ident (Identifier "rgb"))
+                     [ NormalArg (Literal (String "dddddd")) ])
+              , BlockArg [ Text "aaa" ]
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 grid(children: (rect(body: text(body: [dddaa aaa aaa]), 
+                                      fill: rgb(13%,61%,67%,100%), 
+                                      inset: 0.0pt), 
+                                 rect(body: text(body: [ccc]), 
+                                      fill: rgb(18%,80%,25%,100%), 
+                                      inset: 0.0pt), 
+                                 rect(body: text(body: [aaa]), 
+                                      fill: rgb(86%,86%,86%,100%), 
+                                      inset: 0.0pt)), 
+                      column-gutter: 1.0fr, 
+                      columns: (auto, auto, 40%), 
+                      row-gutter: 1.0fr), 
+                 parbreak() })
diff --git a/test/typ/layout/grid-1-02.out b/test/typ/layout/grid-1-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/grid-1-02.out
@@ -0,0 +1,99 @@
+--- parse tree ---
+[ Code
+    "typ/layout/grid-1-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/grid-1-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/grid-1-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/layout/grid-1-02.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 3.0 Cm))
+       , KeyValArg (Identifier "margin") (Literal (Numeric 0.0 Pt))
+       ])
+, SoftBreak
+, Code
+    "typ/layout/grid-1-02.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "grid"))
+       [ KeyValArg
+           (Identifier "columns") (Array [ Reg (Literal (Numeric 1.0 Fr)) ])
+       , KeyValArg
+           (Identifier "rows")
+           (Array
+              [ Reg (Literal (Numeric 1.0 Fr))
+              , Reg (Literal Auto)
+              , Reg (Literal (Numeric 2.0 Fr))
+              ])
+       , NormalArg (Block (Content []))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "align"))
+              [ NormalArg (Ident (Identifier "center"))
+              , BlockArg
+                  [ Text "A"
+                  , Space
+                  , Text "bit"
+                  , Space
+                  , Text "more"
+                  , Space
+                  , Text "to"
+                  , Space
+                  , Text "the"
+                  , Space
+                  , Text "top"
+                  ]
+              ])
+       , NormalArg (Block (Content []))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 grid(children: ({  }, 
+                                 align(alignment: center, 
+                                       body: text(body: [A bit more to the top])), 
+                                 {  }), 
+                      columns: (1.0fr), 
+                      rows: (1.0fr, auto, 2.0fr)), 
+                 parbreak() })
diff --git a/test/typ/layout/grid-2-00.out b/test/typ/layout/grid-2-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/grid-2-00.out
@@ -0,0 +1,165 @@
+--- parse tree ---
+[ Code
+    "typ/layout/grid-2-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/grid-2-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/grid-2-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/layout/grid-2-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 11.0 Cm))
+       , KeyValArg (Identifier "height") (Literal (Numeric 2.5 Cm))
+       ])
+, SoftBreak
+, Code
+    "typ/layout/grid-2-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "grid"))
+       [ KeyValArg (Identifier "columns") (Literal (Int 5))
+       , KeyValArg
+           (Identifier "column-gutter")
+           (Array
+              [ Reg (Literal (Numeric 2.0 Fr))
+              , Reg (Literal (Numeric 1.0 Fr))
+              , Reg (Literal (Numeric 1.0 Fr))
+              ])
+       , KeyValArg (Identifier "row-gutter") (Literal (Numeric 6.0 Pt))
+       , NormalArg (Block (Content [ Strong [ Text "Quarter" ] ]))
+       , NormalArg (Block (Content [ Text "Expenditure" ]))
+       , NormalArg
+           (Block (Content [ Text "External" , Space , Text "Revenue" ]))
+       , NormalArg
+           (Block (Content [ Text "Financial" , Space , Text "ROI" ]))
+       , NormalArg (Block (Content [ Emph [ Text "total" ] ]))
+       , NormalArg (Block (Content [ Strong [ Text "Q1" ] ]))
+       , NormalArg
+           (Block
+              (Content
+                 [ Text "173,472" , Text "." , Text "57" , Space , Text "$" ]))
+       , NormalArg
+           (Block
+              (Content
+                 [ Text "472,860" , Text "." , Text "91" , Space , Text "$" ]))
+       , NormalArg
+           (Block
+              (Content
+                 [ Text "51,286" , Text "." , Text "84" , Space , Text "$" ]))
+       , NormalArg
+           (Block
+              (Content
+                 [ Emph [ Text "350,675" , Text "." , Text "18" , Space , Text "$" ]
+                 ]))
+       , NormalArg (Block (Content [ Strong [ Text "Q2" ] ]))
+       , NormalArg
+           (Block
+              (Content
+                 [ Text "93,382" , Text "." , Text "12" , Space , Text "$" ]))
+       , NormalArg
+           (Block
+              (Content
+                 [ Text "439,382" , Text "." , Text "85" , Space , Text "$" ]))
+       , NormalArg
+           (Block
+              (Content
+                 [ Text "-"
+                 , Text "1,134"
+                 , Text "."
+                 , Text "30"
+                 , Space
+                 , Text "$"
+                 ]))
+       , NormalArg
+           (Block
+              (Content
+                 [ Emph [ Text "344,866" , Text "." , Text "43" , Space , Text "$" ]
+                 ]))
+       , NormalArg (Block (Content [ Strong [ Text "Q3" ] ]))
+       , NormalArg
+           (Block
+              (Content
+                 [ Text "96,421" , Text "." , Text "49" , Space , Text "$" ]))
+       , NormalArg
+           (Block
+              (Content
+                 [ Text "238,583" , Text "." , Text "54" , Space , Text "$" ]))
+       , NormalArg
+           (Block
+              (Content
+                 [ Text "3,497" , Text "." , Text "12" , Space , Text "$" ]))
+       , NormalArg
+           (Block
+              (Content
+                 [ Emph [ Text "145,659" , Text "." , Text "17" , Space , Text "$" ]
+                 ]))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 grid(children: (strong(body: text(body: [Quarter])), 
+                                 text(body: [Expenditure]), 
+                                 text(body: [External Revenue]), 
+                                 text(body: [Financial ROI]), 
+                                 emph(body: text(body: [total])), 
+                                 strong(body: text(body: [Q1])), 
+                                 text(body: [173,472.57 $]), 
+                                 text(body: [472,860.91 $]), 
+                                 text(body: [51,286.84 $]), 
+                                 emph(body: text(body: [350,675.18 $])), 
+                                 strong(body: text(body: [Q2])), 
+                                 text(body: [93,382.12 $]), 
+                                 text(body: [439,382.85 $]), 
+                                 text(body: [-1,134.30 $]), 
+                                 emph(body: text(body: [344,866.43 $])), 
+                                 strong(body: text(body: [Q3])), 
+                                 text(body: [96,421.49 $]), 
+                                 text(body: [238,583.54 $]), 
+                                 text(body: [3,497.12 $]), 
+                                 emph(body: text(body: [145,659.17 $]))), 
+                      column-gutter: (2.0fr, 
+                                      1.0fr, 
+                                      1.0fr), 
+                      columns: 5, 
+                      row-gutter: 6.0pt), 
+                 parbreak() })
diff --git a/test/typ/layout/grid-3-00.out b/test/typ/layout/grid-3-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/grid-3-00.out
@@ -0,0 +1,130 @@
+--- parse tree ---
+[ Code
+    "typ/layout/grid-3-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/grid-3-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/grid-3-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/layout/grid-3-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 5.0 Cm))
+       , KeyValArg (Identifier "height") (Literal (Numeric 3.0 Cm))
+       ])
+, SoftBreak
+, Code
+    "typ/layout/grid-3-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "grid"))
+       [ KeyValArg (Identifier "columns") (Literal (Int 2))
+       , KeyValArg (Identifier "row-gutter") (Literal (Numeric 8.0 Pt))
+       , NormalArg
+           (Block
+              (Content
+                 [ Text "Lorem"
+                 , Space
+                 , Text "ipsum"
+                 , Space
+                 , Text "dolor"
+                 , Space
+                 , Text "sit"
+                 , Space
+                 , Text "amet"
+                 , Text "."
+                 , ParBreak
+                 , Text "Aenean"
+                 , Space
+                 , Text "commodo"
+                 , Space
+                 , Text "ligula"
+                 , Space
+                 , Text "eget"
+                 , Space
+                 , Text "dolor"
+                 , Text "."
+                 , Space
+                 , Text "Aenean"
+                 , Space
+                 , Text "massa"
+                 , Text "."
+                 , Space
+                 , Text "Penatibus"
+                 , Space
+                 , Text "et"
+                 , Space
+                 , Text "magnis"
+                 , Text "."
+                 ]))
+       , NormalArg
+           (Block
+              (Content
+                 [ Text "Text"
+                 , Space
+                 , Text "that"
+                 , Space
+                 , Text "is"
+                 , Space
+                 , Text "rather"
+                 , Space
+                 , Text "short"
+                 ]))
+       , NormalArg (Block (Content [ Text "Fireflies" ]))
+       , NormalArg (Block (Content [ Text "Critical" ]))
+       , NormalArg (Block (Content [ Text "Decorum" ]))
+       , NormalArg (Block (Content [ Text "Rampage" ]))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 grid(children: ({ text(body: [Lorem ipsum dolor sit amet.]), 
+                                   parbreak(), 
+                                   text(body: [Aenean commodo ligula eget dolor. Aenean massa. Penatibus et magnis.]) }, 
+                                 text(body: [Text that is rather short]), 
+                                 text(body: [Fireflies]), 
+                                 text(body: [Critical]), 
+                                 text(body: [Decorum]), 
+                                 text(body: [Rampage])), 
+                      columns: 2, 
+                      row-gutter: 8.0pt), 
+                 parbreak() })
diff --git a/test/typ/layout/grid-3-01.out b/test/typ/layout/grid-3-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/grid-3-01.out
@@ -0,0 +1,136 @@
+--- parse tree ---
+[ Code
+    "typ/layout/grid-3-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/grid-3-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/grid-3-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/layout/grid-3-01.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 5.0 Cm))
+       , KeyValArg (Identifier "height") (Literal (Numeric 2.0 Cm))
+       ])
+, SoftBreak
+, Code
+    "typ/layout/grid-3-01.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "grid"))
+       [ KeyValArg
+           (Identifier "columns")
+           (Times
+              (Literal (Int 4)) (Array [ Reg (Literal (Numeric 1.0 Fr)) ]))
+       , KeyValArg (Identifier "row-gutter") (Literal (Numeric 10.0 Pt))
+       , KeyValArg
+           (Identifier "column-gutter")
+           (Array
+              [ Reg (Literal (Numeric 0.0 Pt))
+              , Reg (Literal (Numeric 10.0 Percent))
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "align"))
+              [ NormalArg (Ident (Identifier "top"))
+              , NormalArg
+                  (FuncCall
+                     (Ident (Identifier "image"))
+                     [ NormalArg (Literal (String "/assets/files/rhino.png")) ])
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "align"))
+              [ NormalArg (Ident (Identifier "top"))
+              , NormalArg
+                  (FuncCall
+                     (Ident (Identifier "rect"))
+                     [ KeyValArg (Identifier "inset") (Literal (Numeric 0.0 Pt))
+                     , KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
+                     , NormalArg
+                         (FuncCall
+                            (Ident (Identifier "align"))
+                            [ NormalArg (Ident (Identifier "right"))
+                            , BlockArg [ Text "LoL" ]
+                            ])
+                     ])
+              ])
+       , NormalArg (Block (Content [ Text "rofl" ]))
+       , NormalArg
+           (Times
+              (Block (Content [ HardBreak , Text "A" ])) (Literal (Int 3)))
+       , NormalArg
+           (Times
+              (Block (Content [ Text "Ha!" , HardBreak ])) (Literal (Int 3)))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 grid(children: (align(alignment: top, 
+                                       body: image(path: "/assets/files/rhino.png")), 
+                                 align(alignment: top, 
+                                       body: rect(body: align(alignment: right, 
+                                                              body: text(body: [LoL])), 
+                                                  fill: rgb(13%,61%,67%,100%), 
+                                                  inset: 0.0pt)), 
+                                 text(body: [rofl]), 
+                                 { linebreak(), 
+                                   text(body: [A]), 
+                                   linebreak(), 
+                                   text(body: [A]), 
+                                   linebreak(), 
+                                   text(body: [A]) }, 
+                                 { text(body: [Ha!]), 
+                                   linebreak(), 
+                                   text(body: [Ha!]), 
+                                   linebreak(), 
+                                   text(body: [Ha!]), 
+                                   linebreak() }), 
+                      column-gutter: (0.0pt, 10%), 
+                      columns: (1.0fr, 
+                                1.0fr, 
+                                1.0fr, 
+                                1.0fr), 
+                      row-gutter: 10.0pt), 
+                 parbreak() })
diff --git a/test/typ/layout/grid-3-02.out b/test/typ/layout/grid-3-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/grid-3-02.out
@@ -0,0 +1,119 @@
+--- parse tree ---
+[ Code
+    "typ/layout/grid-3-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/grid-3-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/grid-3-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/grid-3-02.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 5.0 Cm))
+       , KeyValArg (Identifier "height") (Literal (Numeric 2.0 Cm))
+       ])
+, SoftBreak
+, Code
+    "typ/layout/grid-3-02.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "grid"))
+       [ KeyValArg
+           (Identifier "columns")
+           (Times
+              (Literal (Int 3)) (Array [ Reg (Literal (Numeric 1.0 Fr)) ]))
+       , KeyValArg (Identifier "row-gutter") (Literal (Numeric 8.0 Pt))
+       , KeyValArg
+           (Identifier "column-gutter")
+           (Array
+              [ Reg (Literal (Numeric 0.0 Pt))
+              , Reg (Literal (Numeric 10.0 Percent))
+              ])
+       , NormalArg (Block (Content [ Text "A" ]))
+       , NormalArg (Block (Content [ Text "B" ]))
+       , NormalArg (Block (Content [ Text "C" ]))
+       , NormalArg
+           (Times
+              (Block (Content [ Text "Ha!" , HardBreak ])) (Literal (Int 6)))
+       , NormalArg (Block (Content [ Text "rofl" ]))
+       , NormalArg
+           (Times
+              (Block (Content [ HardBreak , Text "A" ])) (Literal (Int 3)))
+       , NormalArg (Block (Content [ Text "hello" ]))
+       , NormalArg (Block (Content [ Text "darkness" ]))
+       , NormalArg (Block (Content [ Text "my" , Space , Text "old" ]))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 grid(children: (text(body: [A]), 
+                                 text(body: [B]), 
+                                 text(body: [C]), 
+                                 { text(body: [Ha!]), 
+                                   linebreak(), 
+                                   text(body: [Ha!]), 
+                                   linebreak(), 
+                                   text(body: [Ha!]), 
+                                   linebreak(), 
+                                   text(body: [Ha!]), 
+                                   linebreak(), 
+                                   text(body: [Ha!]), 
+                                   linebreak(), 
+                                   text(body: [Ha!]), 
+                                   linebreak() }, 
+                                 text(body: [rofl]), 
+                                 { linebreak(), 
+                                   text(body: [A]), 
+                                   linebreak(), 
+                                   text(body: [A]), 
+                                   linebreak(), 
+                                   text(body: [A]) }, 
+                                 text(body: [hello]), 
+                                 text(body: [darkness]), 
+                                 text(body: [my old])), 
+                      column-gutter: (0.0pt, 10%), 
+                      columns: (1.0fr, 
+                                1.0fr, 
+                                1.0fr), 
+                      row-gutter: 8.0pt), 
+                 parbreak() })
diff --git a/test/typ/layout/grid-3-03.out b/test/typ/layout/grid-3-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/grid-3-03.out
@@ -0,0 +1,146 @@
+--- parse tree ---
+[ Code
+    "typ/layout/grid-3-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/grid-3-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/grid-3-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/grid-3-03.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 5.0 Cm))
+       , KeyValArg (Identifier "height") (Literal (Numeric 2.25 Cm))
+       ])
+, SoftBreak
+, Code
+    "typ/layout/grid-3-03.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "grid"))
+       [ KeyValArg
+           (Identifier "columns")
+           (Times
+              (Literal (Int 4)) (Array [ Reg (Literal (Numeric 1.0 Fr)) ]))
+       , KeyValArg (Identifier "row-gutter") (Literal (Numeric 10.0 Pt))
+       , KeyValArg
+           (Identifier "column-gutter")
+           (Array
+              [ Reg (Literal (Numeric 0.0 Pt))
+              , Reg (Literal (Numeric 10.0 Percent))
+              ])
+       , NormalArg (Block (Content [ Text "A" ]))
+       , NormalArg (Block (Content [ Text "B" ]))
+       , NormalArg (Block (Content [ Text "C" ]))
+       , NormalArg (Block (Content [ Text "D" ]))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "grid"))
+              [ KeyValArg (Identifier "columns") (Literal (Int 2))
+              , NormalArg (Block (Content [ Text "A" ]))
+              , NormalArg (Block (Content [ Text "B" ]))
+              , NormalArg
+                  (Times
+                     (Block (Content [ Text "C" , HardBreak ])) (Literal (Int 3)))
+              , NormalArg (Block (Content [ Text "D" ]))
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "align"))
+              [ NormalArg (Ident (Identifier "top"))
+              , NormalArg
+                  (FuncCall
+                     (Ident (Identifier "rect"))
+                     [ KeyValArg (Identifier "inset") (Literal (Numeric 0.0 Pt))
+                     , KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
+                     , NormalArg
+                         (FuncCall
+                            (Ident (Identifier "align"))
+                            [ NormalArg (Ident (Identifier "right"))
+                            , BlockArg [ Text "LoL" ]
+                            ])
+                     ])
+              ])
+       , NormalArg (Block (Content [ Text "rofl" ]))
+       , NormalArg
+           (Times
+              (Block (Content [ Text "E" , HardBreak ])) (Literal (Int 4)))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 grid(children: (text(body: [A]), 
+                                 text(body: [B]), 
+                                 text(body: [C]), 
+                                 text(body: [D]), 
+                                 grid(children: (text(body: [A]), 
+                                                 text(body: [B]), 
+                                                 { text(body: [C]), 
+                                                   linebreak(), 
+                                                   text(body: [C]), 
+                                                   linebreak(), 
+                                                   text(body: [C]), 
+                                                   linebreak() }, 
+                                                 text(body: [D])), 
+                                      columns: 2), 
+                                 align(alignment: top, 
+                                       body: rect(body: align(alignment: right, 
+                                                              body: text(body: [LoL])), 
+                                                  fill: rgb(13%,61%,67%,100%), 
+                                                  inset: 0.0pt)), 
+                                 text(body: [rofl]), 
+                                 { text(body: [E]), 
+                                   linebreak(), 
+                                   text(body: [E]), 
+                                   linebreak(), 
+                                   text(body: [E]), 
+                                   linebreak(), 
+                                   text(body: [E]), 
+                                   linebreak() }), 
+                      column-gutter: (0.0pt, 10%), 
+                      columns: (1.0fr, 
+                                1.0fr, 
+                                1.0fr, 
+                                1.0fr), 
+                      row-gutter: 10.0pt), 
+                 parbreak() })
diff --git a/test/typ/layout/grid-4-00.out b/test/typ/layout/grid-4-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/grid-4-00.out
@@ -0,0 +1,93 @@
+--- parse tree ---
+[ Code
+    "typ/layout/grid-4-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/grid-4-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/grid-4-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/grid-4-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "grid"))
+       [ KeyValArg
+           (Identifier "columns")
+           (Array
+              [ Reg (Literal Auto) , Reg (Literal (Numeric 60.0 Percent)) ])
+       , KeyValArg
+           (Identifier "rows")
+           (Array [ Reg (Literal Auto) , Reg (Literal Auto) ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg (Identifier "width") (Literal (Numeric 50.0 Percent))
+              , KeyValArg (Identifier "height") (Literal (Numeric 0.5 Cm))
+              , KeyValArg (Identifier "fill") (Ident (Identifier "green"))
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
+              , KeyValArg (Identifier "height") (Literal (Numeric 0.5 Cm))
+              , KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg (Identifier "width") (Literal (Numeric 50.0 Percent))
+              , KeyValArg (Identifier "height") (Literal (Numeric 0.5 Cm))
+              , KeyValArg (Identifier "fill") (Ident (Identifier "red"))
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 grid(children: (rect(fill: rgb(18%,80%,25%,100%), 
+                                      height: 0.5cm, 
+                                      width: 50%), 
+                                 rect(fill: rgb(13%,61%,67%,100%), 
+                                      height: 0.5cm, 
+                                      width: 100%), 
+                                 rect(fill: rgb(100%,25%,21%,100%), 
+                                      height: 0.5cm, 
+                                      width: 50%)), 
+                      columns: (auto, 60%), 
+                      rows: (auto, auto)), 
+                 parbreak() })
diff --git a/test/typ/layout/grid-4-01.out b/test/typ/layout/grid-4-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/grid-4-01.out
@@ -0,0 +1,97 @@
+--- parse tree ---
+[ Code
+    "typ/layout/grid-4-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/grid-4-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/grid-4-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/grid-4-01.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "grid"))
+       [ KeyValArg
+           (Identifier "columns")
+           (Times
+              (Array [ Reg (Literal (Numeric 1.0 Fr)) ]) (Literal (Int 4)))
+       , KeyValArg
+           (Identifier "rows") (Array [ Reg (Literal (Numeric 1.0 Cm)) ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg (Identifier "width") (Literal (Numeric 50.0 Percent))
+              , KeyValArg (Identifier "fill") (Ident (Identifier "green"))
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg (Identifier "width") (Literal (Numeric 50.0 Percent))
+              , KeyValArg (Identifier "fill") (Ident (Identifier "red"))
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg (Identifier "width") (Literal (Numeric 50.0 Percent))
+              , KeyValArg (Identifier "fill") (Ident (Identifier "green"))
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg (Identifier "width") (Literal (Numeric 50.0 Percent))
+              , KeyValArg (Identifier "fill") (Ident (Identifier "red"))
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 grid(children: (rect(fill: rgb(18%,80%,25%,100%), 
+                                      width: 50%), 
+                                 rect(fill: rgb(100%,25%,21%,100%), 
+                                      width: 50%), 
+                                 rect(fill: rgb(18%,80%,25%,100%), 
+                                      width: 50%), 
+                                 rect(fill: rgb(100%,25%,21%,100%), 
+                                      width: 50%)), 
+                      columns: (1.0fr, 
+                                1.0fr, 
+                                1.0fr, 
+                                1.0fr), 
+                      rows: (1.0cm)), 
+                 parbreak() })
diff --git a/test/typ/layout/grid-4-02.out b/test/typ/layout/grid-4-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/grid-4-02.out
@@ -0,0 +1,117 @@
+--- parse tree ---
+[ Code
+    "typ/layout/grid-4-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/grid-4-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/grid-4-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/grid-4-02.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 4.0 Cm))
+       , KeyValArg (Identifier "margin") (Literal (Numeric 0.0 Cm))
+       ])
+, SoftBreak
+, Code
+    "typ/layout/grid-4-02.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "grid"))
+       [ KeyValArg
+           (Identifier "rows")
+           (Array
+              [ Reg (Literal (Numeric 1.0 Cm))
+              , Reg (Literal (Numeric 1.0 Fr))
+              , Reg (Literal (Numeric 1.0 Fr))
+              , Reg (Literal Auto)
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg (Identifier "height") (Literal (Numeric 50.0 Percent))
+              , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
+              , KeyValArg (Identifier "fill") (Ident (Identifier "green"))
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg (Identifier "height") (Literal (Numeric 50.0 Percent))
+              , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
+              , KeyValArg (Identifier "fill") (Ident (Identifier "red"))
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg (Identifier "height") (Literal (Numeric 50.0 Percent))
+              , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
+              , KeyValArg (Identifier "fill") (Ident (Identifier "green"))
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg (Identifier "height") (Literal (Numeric 25.0 Percent))
+              , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
+              , KeyValArg (Identifier "fill") (Ident (Identifier "red"))
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 grid(children: (rect(fill: rgb(18%,80%,25%,100%), 
+                                      height: 50%, 
+                                      width: 100%), 
+                                 rect(fill: rgb(100%,25%,21%,100%), 
+                                      height: 50%, 
+                                      width: 100%), 
+                                 rect(fill: rgb(18%,80%,25%,100%), 
+                                      height: 50%, 
+                                      width: 100%), 
+                                 rect(fill: rgb(100%,25%,21%,100%), 
+                                      height: 25%, 
+                                      width: 100%)), 
+                      rows: (1.0cm, 
+                             1.0fr, 
+                             1.0fr, 
+                             auto)), 
+                 parbreak() })
diff --git a/test/typ/layout/grid-5-00.out b/test/typ/layout/grid-5-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/grid-5-00.out
@@ -0,0 +1,88 @@
+--- parse tree ---
+[ Code
+    "typ/layout/grid-5-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/grid-5-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/grid-5-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/grid-5-00.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 2.0 Cm)) ])
+, SoftBreak
+, Code
+    "typ/layout/grid-5-00.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "grid"))
+       [ BlockArg
+           [ SoftBreak
+           , Text "Hello"
+           , Space
+           , HardBreak
+           , Text "Hello"
+           , Space
+           , HardBreak
+           , Text "Hello"
+           , Space
+           , HardBreak
+           , SoftBreak
+           , Text "World"
+           , ParBreak
+           ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 grid(children: ({ text(body: [
+Hello ]), 
+                                   linebreak(), 
+                                   text(body: [Hello ]), 
+                                   linebreak(), 
+                                   text(body: [Hello ]), 
+                                   linebreak(), 
+                                   text(body: [
+World]), 
+                                   parbreak() })), 
+                 parbreak() })
diff --git a/test/typ/layout/grid-5-01.out b/test/typ/layout/grid-5-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/grid-5-01.out
@@ -0,0 +1,128 @@
+--- parse tree ---
+[ Code
+    "typ/layout/grid-5-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/grid-5-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/grid-5-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/grid-5-01.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 2.25 Cm)) ])
+, SoftBreak
+, Code
+    "typ/layout/grid-5-01.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "grid"))
+       [ KeyValArg (Identifier "columns") (Literal (Int 2))
+       , KeyValArg (Identifier "gutter") (Literal (Numeric 10.0 Pt))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "align"))
+              [ NormalArg (Ident (Identifier "bottom"))
+              , BlockArg [ Text "A" ]
+              ])
+       , NormalArg
+           (Block
+              (Content
+                 [ SoftBreak
+                 , Text "Top"
+                 , SoftBreak
+                 , Code
+                     "typ/layout/grid-5-01.typ"
+                     ( line 10 , column 6 )
+                     (FuncCall
+                        (Ident (Identifier "align"))
+                        [ NormalArg (Ident (Identifier "bottom"))
+                        , BlockArg
+                            [ SoftBreak
+                            , Text "Bottom"
+                            , Space
+                            , HardBreak
+                            , Text "Bottom"
+                            , Space
+                            , HardBreak
+                            , Code
+                                "typ/layout/grid-5-01.typ"
+                                ( line 13 , column 8 )
+                                (FuncCall
+                                   (Ident (Identifier "v"))
+                                   [ NormalArg (Literal (Numeric 0.0 Pt)) ])
+                            , SoftBreak
+                            , Text "Top"
+                            , ParBreak
+                            ]
+                        ])
+                 , ParBreak
+                 ]))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "align"))
+              [ NormalArg (Ident (Identifier "top")) , BlockArg [ Text "B" ] ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 grid(children: (align(alignment: bottom, 
+                                       body: text(body: [A])), 
+                                 { text(body: [
+Top
+]), 
+                                   align(alignment: bottom, 
+                                         body: { text(body: [
+Bottom ]), 
+                                                 linebreak(), 
+                                                 text(body: [Bottom ]), 
+                                                 linebreak(), 
+                                                 v(amount: 0.0pt), 
+                                                 text(body: [
+Top]), 
+                                                 parbreak() }), 
+                                   parbreak() }, 
+                                 align(alignment: top, 
+                                       body: text(body: [B]))), 
+                      columns: 2, 
+                      gutter: 10.0pt), 
+                 parbreak() })
diff --git a/test/typ/layout/grid-auto-shrink-00.out b/test/typ/layout/grid-auto-shrink-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/grid-auto-shrink-00.out
@@ -0,0 +1,139 @@
+--- parse tree ---
+[ Code
+    "typ/layout/grid-auto-shrink-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/grid-auto-shrink-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/grid-auto-shrink-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/layout/grid-auto-shrink-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg
+           (Identifier "width")
+           (Plus
+              (Minus
+                 (Literal (Numeric 210.0 Mm))
+                 (Times (Literal (Int 2)) (Literal (Numeric 2.5 Cm))))
+              (Times (Literal (Int 2)) (Literal (Numeric 10.0 Pt))))
+       ])
+, SoftBreak
+, Code
+    "typ/layout/grid-auto-shrink-00.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ NormalArg (Literal (Numeric 11.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/layout/grid-auto-shrink-00.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "table"))
+       [ KeyValArg (Identifier "columns") (Literal (Int 4))
+       , NormalArg (Block (Content [ Text "Hello!" ]))
+       , NormalArg
+           (Block
+              (Content
+                 [ Text "Hello"
+                 , Space
+                 , Text "there,"
+                 , Space
+                 , Text "my"
+                 , Space
+                 , Text "friend!"
+                 ]))
+       , NormalArg
+           (Block
+              (Content
+                 [ Text "Hello"
+                 , Space
+                 , Text "there,"
+                 , Space
+                 , Text "my"
+                 , Space
+                 , Text "friends!"
+                 , Space
+                 , Text "Hi!"
+                 ]))
+       , NormalArg
+           (Block
+              (Content
+                 [ Text "Hello"
+                 , Space
+                 , Text "there,"
+                 , Space
+                 , Text "my"
+                 , Space
+                 , Text "friends!"
+                 , Space
+                 , Text "Hi!"
+                 , Space
+                 , Text "What"
+                 , Space
+                 , Text "is"
+                 , Space
+                 , Text "going"
+                 , Space
+                 , Text "on"
+                 , Space
+                 , Text "right"
+                 , Space
+                 , Text "now?"
+                 ]))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+], 
+                      size: 11.0pt), 
+                 table(children: (text(body: [Hello!], 
+                                       size: 11.0pt), 
+                                  text(body: [Hello there, my friend!], 
+                                       size: 11.0pt), 
+                                  text(body: [Hello there, my friends! Hi!], 
+                                       size: 11.0pt), 
+                                  text(body: [Hello there, my friends! Hi! What is going on right now?], 
+                                       size: 11.0pt)), 
+                       columns: 4), 
+                 parbreak() })
diff --git a/test/typ/layout/grid-rtl-00.out b/test/typ/layout/grid-rtl-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/grid-rtl-00.out
@@ -0,0 +1,63 @@
+--- parse tree ---
+[ Code
+    "typ/layout/grid-rtl-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/grid-rtl-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/grid-rtl-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/layout/grid-rtl-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "dir") (Ident (Identifier "rtl")) ])
+, SoftBreak
+, BulletListItem
+    [ Text "\1502\1497\1502\1497\1503"
+    , Space
+    , Text "\1500\1513\1502\1488\1500"
+    , ParBreak
+    ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+], dir: rtl), 
+                 list(children: ({ text(body: [מימין לשמאל], 
+                                        dir: rtl), 
+                                   parbreak() })) })
diff --git a/test/typ/layout/grid-rtl-01.out b/test/typ/layout/grid-rtl-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/grid-rtl-01.out
@@ -0,0 +1,76 @@
+--- parse tree ---
+[ Code
+    "typ/layout/grid-rtl-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/grid-rtl-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/grid-rtl-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/layout/grid-rtl-01.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "dir") (Ident (Identifier "rtl")) ])
+, SoftBreak
+, Code
+    "typ/layout/grid-rtl-01.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "table"))
+       [ KeyValArg (Identifier "columns") (Literal (Int 2))
+       , BlockArg [ Text "A" ]
+       , BlockArg [ Text "B" ]
+       , BlockArg [ Text "C" ]
+       , BlockArg [ Text "D" ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+], dir: rtl), 
+                 table(children: (text(body: [A], 
+                                       dir: rtl), 
+                                  text(body: [B], 
+                                       dir: rtl), 
+                                  text(body: [C], 
+                                       dir: rtl), 
+                                  text(body: [D], 
+                                       dir: rtl)), 
+                       columns: 2), 
+                 parbreak() })
diff --git a/test/typ/layout/hide-00.out b/test/typ/layout/hide-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/hide-00.out
@@ -0,0 +1,83 @@
+--- parse tree ---
+[ Code
+    "typ/layout/hide-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/hide-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/hide-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Text "AB"
+, Space
+, Code
+    "typ/layout/hide-00.typ"
+    ( line 2 , column 5 )
+    (FuncCall
+       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 1.0 Fr)) ])
+, Space
+, Text "CD"
+, Space
+, HardBreak
+, Code
+    "typ/layout/hide-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall (Ident (Identifier "hide")) [ BlockArg [ Text "A" ] ])
+, Text "B"
+, Space
+, Code
+    "typ/layout/hide-00.typ"
+    ( line 3 , column 12 )
+    (FuncCall
+       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 1.0 Fr)) ])
+, Space
+, Text "C"
+, Code
+    "typ/layout/hide-00.typ"
+    ( line 3 , column 21 )
+    (FuncCall (Ident (Identifier "hide")) [ BlockArg [ Text "D" ] ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+AB ]), 
+                 h(amount: 1.0fr), 
+                 text(body: [ CD ]), 
+                 linebreak(), 
+                 hide(body: text(body: [A])), 
+                 text(body: [B ]), 
+                 h(amount: 1.0fr), 
+                 text(body: [ C]), 
+                 hide(body: text(body: [D])), 
+                 parbreak() })
diff --git a/test/typ/layout/list-00.out b/test/typ/layout/list-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/list-00.out
@@ -0,0 +1,64 @@
+--- parse tree ---
+[ Code
+    "typ/layout/list-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/list-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/list-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Emph [ Text "Shopping" , Space , Text "list" ]
+, SoftBreak
+, Code
+    "typ/layout/list-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "list"))
+       [ BlockArg [ Text "Apples" ]
+       , BlockArg [ Text "Potatoes" ]
+       , BlockArg [ Text "Juice" ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 emph(body: text(body: [Shopping list])), 
+                 text(body: [
+]), 
+                 list(children: (text(body: [Apples]), 
+                                 text(body: [Potatoes]), 
+                                 text(body: [Juice]))), 
+                 parbreak() })
diff --git a/test/typ/layout/list-01.out b/test/typ/layout/list-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/list-01.out
@@ -0,0 +1,115 @@
+--- parse tree ---
+[ Code
+    "typ/layout/list-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/list-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/list-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, BulletListItem
+    [ Text "First"
+    , Space
+    , Text "level"
+    , Text "."
+    , ParBreak
+    , BulletListItem
+        [ Text "Second"
+        , Space
+        , Text "level"
+        , Text "."
+        , SoftBreak
+        , Text "There"
+        , Space
+        , Text "are"
+        , Space
+        , Text "multiple"
+        , Space
+        , Text "paragraphs"
+        , Text "."
+        , ParBreak
+        , BulletListItem
+            [ Text "Third" , Space , Text "level" , Text "." , SoftBreak ]
+        , SoftBreak
+        , Text "Still"
+        , Space
+        , Text "the"
+        , Space
+        , Text "same"
+        , Space
+        , Text "bullet"
+        , Space
+        , Text "point"
+        , Text "."
+        , SoftBreak
+        ]
+    , SoftBreak
+    , BulletListItem
+        [ Text "Still"
+        , Space
+        , Text "level"
+        , Space
+        , Text "2"
+        , Text "."
+        , SoftBreak
+        ]
+    ]
+, SoftBreak
+, BulletListItem
+    [ Text "At"
+    , Space
+    , Text "the"
+    , Space
+    , Text "top"
+    , Text "."
+    , ParBreak
+    ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 list(children: ({ text(body: [First level.]), 
+                                   parbreak(), 
+                                   list(children: ({ text(body: [Second level.
+There are multiple paragraphs.]), 
+                                                     parbreak(), 
+                                                     list(children: (text(body: [Third level.
+]))), 
+                                                     text(body: [Still the same bullet point.
+]) }, 
+                                                   text(body: [Still level 2.
+]))) }, 
+                                 { text(body: [At the top.]), 
+                                   parbreak() })) })
diff --git a/test/typ/layout/list-02.out b/test/typ/layout/list-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/list-02.out
@@ -0,0 +1,78 @@
+--- parse tree ---
+[ Code
+    "typ/layout/list-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/list-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/list-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, BulletListItem
+    [ Text "Level"
+    , Space
+    , Text "1"
+    , SoftBreak
+    , BulletListItem
+        [ Text "Level"
+        , Space
+        , Code
+            "typ/layout/list-02.typ"
+            ( line 3 , column 12 )
+            (Block
+               (Content
+                  [ SoftBreak
+                  , Text "2"
+                  , Space
+                  , Text "through"
+                  , Space
+                  , Text "content"
+                  , Space
+                  , Text "block"
+                  , ParBreak
+                  ]))
+        , ParBreak
+        ]
+    ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 list(children: ({ text(body: [Level 1
+]), 
+                                   list(children: ({ text(body: [Level ]), 
+                                                     text(body: [
+2 through content block]), 
+                                                     parbreak(), 
+                                                     parbreak() })) })) })
diff --git a/test/typ/layout/list-03.out b/test/typ/layout/list-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/list-03.out
@@ -0,0 +1,53 @@
+--- parse tree ---
+[ Code
+    "typ/layout/list-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/list-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/list-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, BulletListItem
+    [ Text "Top" , Text "-" , Text "level" , Space , Text "indent" ]
+, SoftBreak
+, BulletListItem
+    [ Text "is" , Space , Text "fine" , Text "." , ParBreak ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 list(children: (text(body: [Top-level indent]), 
+                                 { text(body: [is fine.]), 
+                                   parbreak() })) })
diff --git a/test/typ/layout/list-04.out b/test/typ/layout/list-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/list-04.out
@@ -0,0 +1,60 @@
+--- parse tree ---
+[ Code
+    "typ/layout/list-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/list-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/list-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, BulletListItem
+    [ Text "A"
+    , SoftBreak
+    , BulletListItem [ Text "B" ]
+    , SoftBreak
+    , BulletListItem [ Text "C" ]
+    ]
+, SoftBreak
+, BulletListItem [ Text "D" , ParBreak ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 list(children: ({ text(body: [A
+]), 
+                                   list(children: (text(body: [B]), 
+                                                   text(body: [C]))) }, 
+                                 { text(body: [D]), 
+                                   parbreak() })) })
diff --git a/test/typ/layout/list-05.out b/test/typ/layout/list-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/list-05.out
@@ -0,0 +1,71 @@
+--- parse tree ---
+[ Code
+    "typ/layout/list-05.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/list-05.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/list-05.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Space
+, Text "-"
+, Space
+, Text "A"
+, Space
+, Text "with"
+, Space
+, Text "1"
+, Space
+, Text "tab"
+, SoftBreak
+, BulletListItem
+    [ Text "B"
+    , Space
+    , Text "with"
+    , Space
+    , Text "2"
+    , Space
+    , Text "tabs"
+    , ParBreak
+    ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [ - A with 1 tab
+]), 
+                 list(children: ({ text(body: [B with 2 tabs]), 
+                                   parbreak() })) })
diff --git a/test/typ/layout/list-06.out b/test/typ/layout/list-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/list-06.out
@@ -0,0 +1,71 @@
+--- parse tree ---
+[ Code
+    "typ/layout/list-06.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/list-06.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/list-06.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Space
+, Text "-"
+, Space
+, Text "A"
+, Space
+, Text "with"
+, Space
+, Text "2"
+, Space
+, Text "spaces"
+, SoftBreak
+, BulletListItem
+    [ Text "B"
+    , Space
+    , Text "with"
+    , Space
+    , Text "2"
+    , Space
+    , Text "tabs"
+    , ParBreak
+    ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [ - A with 2 spaces
+]), 
+                 list(children: ({ text(body: [B with 2 tabs]), 
+                                   parbreak() })) })
diff --git a/test/typ/layout/list-07.out b/test/typ/layout/list-07.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/list-07.out
@@ -0,0 +1,61 @@
+--- parse tree ---
+[ Code
+    "typ/layout/list-07.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/list-07.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/list-07.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, BulletListItem []
+, SoftBreak
+, Text "Not"
+, Space
+, Text "in"
+, Space
+, Text "list"
+, SoftBreak
+, Text "-"
+, Text "Nope"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 list(children: ({  })), 
+                 text(body: [Not in list
+-Nope]), 
+                 parbreak() })
diff --git a/test/typ/layout/list-08.out b/test/typ/layout/list-08.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/list-08.out
@@ -0,0 +1,68 @@
+--- parse tree ---
+[ Code
+    "typ/layout/list-08.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/list-08.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/list-08.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/list-08.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "align"))
+       [ NormalArg (Ident (Identifier "horizon")) ])
+, ParBreak
+, BulletListItem
+    [ Text "ABCDEF"
+    , HardBreak
+    , Text "GHIJKL"
+    , HardBreak
+    , Text "MNOPQR"
+    , ParBreak
+    ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 list(children: ({ text(body: [ABCDEF]), 
+                                   linebreak(), 
+                                   text(body: [GHIJKL]), 
+                                   linebreak(), 
+                                   text(body: [MNOPQR]), 
+                                   parbreak() })) })
diff --git a/test/typ/layout/list-attach-00.out b/test/typ/layout/list-attach-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/list-attach-00.out
@@ -0,0 +1,74 @@
+--- parse tree ---
+[ Code
+    "typ/layout/list-attach-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/list-attach-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/list-attach-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "Attached"
+, Space
+, Text "to"
+, Text ":"
+, SoftBreak
+, BulletListItem [ Text "the" , Space , Text "bottom" ]
+, SoftBreak
+, BulletListItem
+    [ Text "of"
+    , Space
+    , Text "the"
+    , Space
+    , Text "paragraph"
+    , SoftBreak
+    ]
+, SoftBreak
+, Text "Next"
+, Space
+, Text "paragraph"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [Attached to:
+]), 
+                 list(children: (text(body: [the bottom]), 
+                                 text(body: [of the paragraph
+]))), 
+                 text(body: [Next paragraph.]), 
+                 parbreak() })
diff --git a/test/typ/layout/list-attach-01.out b/test/typ/layout/list-attach-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/list-attach-01.out
@@ -0,0 +1,70 @@
+--- parse tree ---
+[ Code
+    "typ/layout/list-attach-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/list-attach-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/list-attach-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/list-attach-01.typ"
+    ( line 3 , column 2 )
+    (Show
+       (Just (Ident (Identifier "list")))
+       (Set
+          (Ident (Identifier "block"))
+          [ KeyValArg (Identifier "above") (Literal (Numeric 100.0 Pt)) ]))
+, SoftBreak
+, Text "Hello"
+, SoftBreak
+, BulletListItem [ Text "A" ]
+, SoftBreak
+, Text "World"
+, SoftBreak
+, BulletListItem [ Text "B" , ParBreak ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+Hello
+]), 
+                 list(children: (text(body: [A]))), 
+                 text(body: [World
+]), 
+                 list(children: ({ text(body: [B]), 
+                                   parbreak() })) })
diff --git a/test/typ/layout/list-attach-02.out b/test/typ/layout/list-attach-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/list-attach-02.out
@@ -0,0 +1,62 @@
+--- parse tree ---
+[ Code
+    "typ/layout/list-attach-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/list-attach-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/list-attach-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Text "Hello"
+, ParBreak
+, BulletListItem [ Text "A" , SoftBreak ]
+, SoftBreak
+, Text "World"
+, SoftBreak
+, BulletListItem [ Text "B" , ParBreak ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [Hello]), 
+                 parbreak(), 
+                 list(children: (text(body: [A
+]))), 
+                 text(body: [World
+]), 
+                 list(children: ({ text(body: [B]), 
+                                   parbreak() })) })
diff --git a/test/typ/layout/list-attach-03.out b/test/typ/layout/list-attach-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/list-attach-03.out
@@ -0,0 +1,77 @@
+--- parse tree ---
+[ Code
+    "typ/layout/list-attach-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/list-attach-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/list-attach-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/list-attach-03.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "block"))
+       [ KeyValArg (Identifier "spacing") (Literal (Numeric 15.0 Pt)) ])
+, SoftBreak
+, Text "Hello"
+, SoftBreak
+, BulletListItem [ Text "A" ]
+, SoftBreak
+, Text "World"
+, ParBreak
+, BulletListItem [ Text "B" ]
+, SoftBreak
+, BulletListItem [ Text "C" , SoftBreak ]
+, SoftBreak
+, Text "More"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+Hello
+]), 
+                 list(children: (text(body: [A]))), 
+                 text(body: [World]), 
+                 parbreak(), 
+                 list(children: (text(body: [B]), 
+                                 text(body: [C
+]))), 
+                 text(body: [More.]), 
+                 parbreak() })
diff --git a/test/typ/layout/list-attach-04.out b/test/typ/layout/list-attach-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/list-attach-04.out
@@ -0,0 +1,69 @@
+--- parse tree ---
+[ Code
+    "typ/layout/list-attach-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/list-attach-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/list-attach-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/list-attach-04.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "block"))
+       [ KeyValArg (Identifier "spacing") (Literal (Numeric 15.0 Pt)) ])
+, SoftBreak
+, Text "Hello"
+, SoftBreak
+, BulletListItem [ Text "A" , SoftBreak ]
+, SoftBreak
+, BulletListItem [ Text "B" ]
+, SoftBreak
+, Text "World"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+Hello
+]), 
+                 list(children: (text(body: [A
+]), 
+                                 text(body: [B]))), 
+                 text(body: [World]), 
+                 parbreak() })
diff --git a/test/typ/layout/list-attach-05.out b/test/typ/layout/list-attach-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/list-attach-05.out
@@ -0,0 +1,68 @@
+--- parse tree ---
+[ Code
+    "typ/layout/list-attach-05.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/list-attach-05.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/list-attach-05.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "Hello"
+, SoftBreak
+, Code
+    "typ/layout/list-attach-05.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "list"))
+       [ KeyValArg (Identifier "tight") (Literal (Boolean False))
+       , BlockArg [ Text "A" ]
+       , BlockArg [ Text "B" ]
+       ])
+, SoftBreak
+, Text "World"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [Hello
+]), 
+                 list(children: (text(body: [A]), 
+                                 text(body: [B])), 
+                      tight: false), 
+                 text(body: [
+World]), 
+                 parbreak() })
diff --git a/test/typ/layout/list-marker-00.out b/test/typ/layout/list-marker-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/list-marker-00.out
@@ -0,0 +1,62 @@
+--- parse tree ---
+[ Code
+    "typ/layout/list-marker-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/list-marker-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/list-marker-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/list-marker-00.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "list"))
+       [ KeyValArg (Identifier "marker") (Block (Content [ EnDash ])) ])
+, SoftBreak
+, BulletListItem [ Text "A" ]
+, SoftBreak
+, BulletListItem [ Text "B" , ParBreak ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 list(children: (text(body: [A]), 
+                                 { text(body: [B]), 
+                                   parbreak() }), 
+                      marker: text(body: [–])) })
diff --git a/test/typ/layout/list-marker-01.out b/test/typ/layout/list-marker-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/list-marker-01.out
@@ -0,0 +1,79 @@
+--- parse tree ---
+[ Code
+    "typ/layout/list-marker-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/list-marker-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/list-marker-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/list-marker-01.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "list"))
+       [ KeyValArg
+           (Identifier "marker")
+           (Array
+              [ Reg (Block (Content [ EnDash ]))
+              , Reg (Block (Content [ Text "\8226" ]))
+              ])
+       ])
+, SoftBreak
+, BulletListItem
+    [ Text "A"
+    , SoftBreak
+    , BulletListItem
+        [ Text "B" , SoftBreak , BulletListItem [ Text "C" , ParBreak ] ]
+    ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 list(children: ({ text(body: [A
+]), 
+                                   list(children: ({ text(body: [B
+]), 
+                                                     list(children: ({ text(body: [C]), 
+                                                                       parbreak() }), 
+                                                          marker: (text(body: [–]), 
+                                                                   text(body: [•]))) }), 
+                                        marker: (text(body: [–]), 
+                                                 text(body: [•]))) }), 
+                      marker: (text(body: [–]), 
+                               text(body: [•]))) })
diff --git a/test/typ/layout/list-marker-02.out b/test/typ/layout/list-marker-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/list-marker-02.out
@@ -0,0 +1,89 @@
+--- parse tree ---
+[ Code
+    "typ/layout/list-marker-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/list-marker-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/list-marker-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/list-marker-02.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "list"))
+       [ KeyValArg
+           (Identifier "marker")
+           (FuncExpr
+              [ NormalParam (Identifier "n") ]
+              (If
+                 [ ( Equals (Ident (Identifier "n")) (Literal (Int 1))
+                   , Block (Content [ EnDash ])
+                   )
+                 , ( Literal (Boolean True) , Block (Content [ Text "\8226" ]) )
+                 ]))
+       ])
+, SoftBreak
+, BulletListItem [ Text "A" ]
+, SoftBreak
+, BulletListItem
+    [ Text "B"
+    , SoftBreak
+    , BulletListItem [ Text "C" ]
+    , SoftBreak
+    , BulletListItem
+        [ Text "D" , SoftBreak , BulletListItem [ Text "E" ] ]
+    ]
+, SoftBreak
+, BulletListItem [ Text "F" , ParBreak ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 list(children: (text(body: [A]), 
+                                 { text(body: [B
+]), 
+                                   list(children: (text(body: [C]), 
+                                                   { text(body: [D
+]), 
+                                                     list(children: (text(body: [E])), 
+                                                          marker: ) }), 
+                                        marker: ) }, 
+                                 { text(body: [F]), 
+                                   parbreak() }), 
+                      marker: ) })
diff --git a/test/typ/layout/list-marker-03.out b/test/typ/layout/list-marker-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/list-marker-03.out
@@ -0,0 +1,72 @@
+--- parse tree ---
+[ Code
+    "typ/layout/list-marker-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/list-marker-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/list-marker-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/list-marker-03.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "list"))
+       [ KeyValArg
+           (Identifier "marker") (Block (Content [ BulletListItem [] ]))
+       ])
+, SoftBreak
+, BulletListItem
+    [ Text "Bare" , Space , Text "hyphen" , Space , Text "is" ]
+, SoftBreak
+, BulletListItem
+    [ Text "a"
+    , Space
+    , Text "bad"
+    , Space
+    , Text "marker"
+    , ParBreak
+    ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 list(children: (text(body: [Bare hyphen is]), 
+                                 { text(body: [a bad marker]), 
+                                   parbreak() }), 
+                      marker: list(children: ({  }))) })
diff --git a/test/typ/layout/list-marker-04.out b/test/typ/layout/list-marker-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/list-marker-04.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/layout/pad-00.out b/test/typ/layout/pad-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/pad-00.out
@@ -0,0 +1,124 @@
+--- parse tree ---
+[ Code
+    "typ/layout/pad-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/pad-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/pad-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/pad-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "pad"))
+       [ KeyValArg (Identifier "left") (Literal (Numeric 10.0 Pt))
+       , NormalArg (Block (Content [ Text "Indented!" ]))
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/layout/pad-00.typ"
+    ( line 6 , column 2 )
+    (Set
+       (Ident (Identifier "rect"))
+       [ KeyValArg (Identifier "inset") (Literal (Numeric 0.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/layout/pad-00.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "rect"))
+       [ KeyValArg (Identifier "fill") (Ident (Identifier "green"))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "pad"))
+              [ NormalArg (Literal (Numeric 10.0 Pt))
+              , KeyValArg (Identifier "right") (Literal (Numeric 20.0 Pt))
+              , NormalArg
+                  (FuncCall
+                     (Ident (Identifier "rect"))
+                     [ KeyValArg (Identifier "width") (Literal (Numeric 20.0 Pt))
+                     , KeyValArg (Identifier "height") (Literal (Numeric 20.0 Pt))
+                     , KeyValArg
+                         (Identifier "fill")
+                         (FuncCall
+                            (Ident (Identifier "rgb"))
+                            [ NormalArg (Literal (String "eb5278")) ])
+                     ])
+              ])
+       ])
+, ParBreak
+, Text "Hi"
+, Space
+, Code
+    "typ/layout/pad-00.typ"
+    ( line 13 , column 5 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "pad"))
+              [ KeyValArg (Identifier "left") (Literal (Numeric 10.0 Pt))
+              , BlockArg [ Text "A" ]
+              ])
+       ])
+, Space
+, Text "there"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 pad(body: text(body: [Indented!]), 
+                     left: 10.0pt), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 rect(body: pad(body: rect(fill: rgb(92%,32%,47%,100%), 
+                                           height: 20.0pt, 
+                                           inset: 0.0pt, 
+                                           width: 20.0pt), 
+                                rest: 10.0pt, 
+                                right: 20.0pt), 
+                      fill: rgb(18%,80%,25%,100%), 
+                      inset: 0.0pt), 
+                 parbreak(), 
+                 text(body: [Hi ]), 
+                 box(body: pad(body: text(body: [A]), 
+                               left: 10.0pt)), 
+                 text(body: [ there]), 
+                 parbreak() })
diff --git a/test/typ/layout/pad-01.out b/test/typ/layout/pad-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/pad-01.out
@@ -0,0 +1,72 @@
+--- parse tree ---
+[ Code
+    "typ/layout/pad-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/pad-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/pad-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/pad-01.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "pad"))
+       [ KeyValArg (Identifier "left") (Literal (Numeric 10.0 Pt))
+       , KeyValArg (Identifier "right") (Literal (Numeric 10.0 Pt))
+       , BlockArg
+           [ Text "PL"
+           , Space
+           , Code
+               "typ/layout/pad-01.typ"
+               ( line 3 , column 35 )
+               (FuncCall
+                  (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 1.0 Fr)) ])
+           , Space
+           , Text "PR"
+           ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 pad(body: { text(body: [PL ]), 
+                             h(amount: 1.0fr), 
+                             text(body: [ PR]) }, 
+                     left: 10.0pt, 
+                     right: 10.0pt), 
+                 parbreak() })
diff --git a/test/typ/layout/pad-02.out b/test/typ/layout/pad-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/pad-02.out
@@ -0,0 +1,96 @@
+--- parse tree ---
+[ Code
+    "typ/layout/pad-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/pad-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/pad-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/pad-02.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 6.0 Cm)) ])
+, SoftBreak
+, Code
+    "typ/layout/pad-02.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "align"))
+       [ NormalArg (Ident (Identifier "left"))
+       , BlockArg [ Text "Before" ]
+       ])
+, SoftBreak
+, Code
+    "typ/layout/pad-02.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "pad"))
+       [ NormalArg (Literal (Numeric 10.0 Pt))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "image"))
+              [ NormalArg (Literal (String "/assets/files/tiger.jpg")) ])
+       ])
+, SoftBreak
+, Code
+    "typ/layout/pad-02.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "align"))
+       [ NormalArg (Ident (Identifier "right"))
+       , BlockArg [ Text "After" ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 align(alignment: left, 
+                       body: text(body: [Before])), 
+                 text(body: [
+]), 
+                 pad(body: image(path: "/assets/files/tiger.jpg"), 
+                     rest: 10.0pt), 
+                 text(body: [
+]), 
+                 align(alignment: right, 
+                       body: text(body: [After])), 
+                 parbreak() })
diff --git a/test/typ/layout/pad-03.out b/test/typ/layout/pad-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/pad-03.out
@@ -0,0 +1,55 @@
+--- parse tree ---
+[ Code
+    "typ/layout/pad-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/pad-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/pad-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/pad-03.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "pad"))
+       [ NormalArg (Literal (Numeric 50.0 Percent)) , BlockArg [] ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 pad(body: {  }, rest: 50%), 
+                 parbreak() })
diff --git a/test/typ/layout/page-00.out b/test/typ/layout/page-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/page-00.out
@@ -0,0 +1,54 @@
+--- parse tree ---
+[ Code
+    "typ/layout/page-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/page-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/page-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/layout/page-00.typ"
+    ( line 4 , column 2 )
+    (FuncCall (Ident (Identifier "page")) [ BlockArg [] ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 page(body: {  }), 
+                 parbreak() })
diff --git a/test/typ/layout/page-01.out b/test/typ/layout/page-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/page-01.out
@@ -0,0 +1,62 @@
+--- parse tree ---
+[ Code
+    "typ/layout/page-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/page-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/page-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/layout/page-01.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "page"))
+       [ NormalArg (Literal (String "a11"))
+       , KeyValArg (Identifier "flipped") (Literal (Boolean True))
+       , KeyValArg (Identifier "fill") (Ident (Identifier "green"))
+       , BlockArg []
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 page(body: [a11], 
+                      fill: rgb(18%,80%,25%,100%), 
+                      flipped: true), 
+                 parbreak() })
diff --git a/test/typ/layout/page-02.out b/test/typ/layout/page-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/page-02.out
@@ -0,0 +1,112 @@
+--- parse tree ---
+[ Code
+    "typ/layout/page-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/page-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/page-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/layout/page-02.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 80.0 Pt))
+       , KeyValArg (Identifier "height") (Literal (Numeric 80.0 Pt))
+       ])
+, SoftBreak
+, Code
+    "typ/layout/page-02.typ"
+    ( line 5 , column 2 )
+    (Block
+       (Content
+          [ Code
+              "typ/layout/page-02.typ"
+              ( line 5 , column 4 )
+              (Set
+                 (Ident (Identifier "page"))
+                 [ KeyValArg (Identifier "width") (Literal (Numeric 40.0 Pt)) ])
+          , Text "High"
+          ]))
+, SoftBreak
+, Code
+    "typ/layout/page-02.typ"
+    ( line 6 , column 2 )
+    (Block
+       (Content
+          [ Code
+              "typ/layout/page-02.typ"
+              ( line 6 , column 4 )
+              (Set
+                 (Ident (Identifier "page"))
+                 [ KeyValArg (Identifier "height") (Literal (Numeric 40.0 Pt)) ])
+          , Text "Wide"
+          ]))
+, ParBreak
+, Comment
+, Code
+    "typ/layout/page-02.typ"
+    ( line 9 , column 2 )
+    (Block
+       (Content
+          [ Code
+              "typ/layout/page-02.typ"
+              ( line 9 , column 4 )
+              (Set
+                 (Ident (Identifier "page"))
+                 [ KeyValArg (Identifier "paper") (Literal (String "a11"))
+                 , KeyValArg (Identifier "flipped") (Literal (Boolean True))
+                 ])
+          , Text "Flipped"
+          , Space
+          , Text "A11"
+          ]))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [High]), 
+                 text(body: [
+]), 
+                 text(body: [Wide]), 
+                 parbreak(), 
+                 text(body: [Flipped A11]), 
+                 parbreak() })
diff --git a/test/typ/layout/page-03.out b/test/typ/layout/page-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/page-03.out
@@ -0,0 +1,100 @@
+--- parse tree ---
+[ Code
+    "typ/layout/page-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/page-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/page-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/page-03.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 80.0 Pt))
+       , KeyValArg (Identifier "height") (Literal (Numeric 40.0 Pt))
+       , KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
+       ])
+, SoftBreak
+, Code
+    "typ/layout/page-03.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ NormalArg (Literal (Numeric 15.0 Pt))
+       , KeyValArg (Identifier "font") (Literal (String "Roboto"))
+       , KeyValArg (Identifier "fill") (Ident (Identifier "white"))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "smallcaps")) [ BlockArg [ Text "Typst" ] ])
+       ])
+, SoftBreak
+, Code
+    "typ/layout/page-03.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 40.0 Pt))
+       , KeyValArg (Identifier "fill") (Literal None)
+       , KeyValArg
+           (Identifier "margin")
+           (Dict
+              [ Reg ( Ident (Identifier "top") , Literal (Numeric 10.0 Pt) )
+              , Reg ( Ident (Identifier "rest") , Literal Auto )
+              ])
+       , BlockArg [ Text "Hi" ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: smallcaps(body: text(body: [Typst])), 
+                      fill: rgb(100%,100%,100%,100%), 
+                      font: "Roboto", 
+                      size: 15.0pt), 
+                 text(body: [
+]), 
+                 page(body: text(body: [Hi]), 
+                      fill: none, 
+                      height: 40.0pt, 
+                      margin: (top: 10.0pt,
+                               rest: auto), 
+                      width: 40.0pt), 
+                 parbreak() })
diff --git a/test/typ/layout/page-04.out b/test/typ/layout/page-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/page-04.out
@@ -0,0 +1,70 @@
+--- parse tree ---
+[ Code
+    "typ/layout/page-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/page-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/page-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/layout/page-04.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "page"))
+       [ NormalArg (Literal (String "a11"))
+       , KeyValArg (Identifier "flipped") (Literal (Boolean True))
+       , KeyValArg (Identifier "fill") (Ident (Identifier "red"))
+       , BlockArg []
+       ])
+, SoftBreak
+, Code
+    "typ/layout/page-04.typ"
+    ( line 5 , column 2 )
+    (FuncCall (Ident (Identifier "pagebreak")) [])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 page(body: [a11], 
+                      fill: rgb(100%,25%,21%,100%), 
+                      flipped: true), 
+                 text(body: [
+]), 
+                 pagebreak(), 
+                 parbreak() })
diff --git a/test/typ/layout/page-05.out b/test/typ/layout/page-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/page-05.out
@@ -0,0 +1,121 @@
+--- parse tree ---
+[ Code
+    "typ/layout/page-05.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/page-05.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/page-05.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, SoftBreak
+, Code
+    "typ/layout/page-05.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Pt))
+       , KeyValArg (Identifier "height") (Literal (Numeric 100.0 Pt))
+       , NormalArg
+           (Block
+              (CodeBlock
+                 [ FuncCall
+                     (Ident (Identifier "layout"))
+                     [ NormalArg
+                         (FuncExpr
+                            [ NormalParam (Identifier "size") ]
+                            (Block
+                               (Content
+                                  [ Text "This"
+                                  , Space
+                                  , Text "page"
+                                  , Space
+                                  , Text "has"
+                                  , Space
+                                  , Text "a"
+                                  , Space
+                                  , Text "width"
+                                  , Space
+                                  , Text "of"
+                                  , Space
+                                  , Code
+                                      "typ/layout/page-05.typ"
+                                      ( line 5 , column 45 )
+                                      (FieldAccess
+                                         (Ident (Identifier "width")) (Ident (Identifier "size")))
+                                  , Space
+                                  , Text "and"
+                                  , Space
+                                  , Text "height"
+                                  , Space
+                                  , Text "of"
+                                  , Space
+                                  , Code
+                                      "typ/layout/page-05.typ"
+                                      ( line 5 , column 71 )
+                                      (FieldAccess
+                                         (Ident (Identifier "height")) (Ident (Identifier "size")))
+                                  , Space
+                                  ])))
+                     ]
+                 , FuncCall
+                     (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 1.0 Em)) ]
+                 , FuncCall
+                     (Ident (Identifier "place"))
+                     [ NormalArg (Ident (Identifier "left"))
+                     , NormalArg
+                         (FuncCall
+                            (Ident (Identifier "rect"))
+                            [ KeyValArg (Identifier "width") (Literal (Numeric 80.0 Pt))
+                            , KeyValArg (Identifier "stroke") (Ident (Identifier "blue"))
+                            ])
+                     ]
+                 ]))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 page(body: { layout(func: ), 
+                              h(amount: 1.0em), 
+                              place(alignment: left, 
+                                    body: rect(stroke: rgb(0%,45%,85%,100%), 
+                                               width: 80.0pt)) }, 
+                      height: 100.0pt, 
+                      width: 100.0pt), 
+                 parbreak() })
diff --git a/test/typ/layout/page-margin-00.out b/test/typ/layout/page-margin-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/page-margin-00.out
@@ -0,0 +1,95 @@
+--- parse tree ---
+[ Code
+    "typ/layout/page-margin-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/page-margin-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/page-margin-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/page-margin-00.typ"
+    ( line 3 , column 2 )
+    (Block
+       (Content
+          [ SoftBreak
+          , Code
+              "typ/layout/page-margin-00.typ"
+              ( line 4 , column 4 )
+              (Set
+                 (Ident (Identifier "page"))
+                 [ KeyValArg (Identifier "height") (Literal (Numeric 20.0 Pt))
+                 , KeyValArg (Identifier "margin") (Literal (Numeric 5.0 Pt))
+                 ])
+          , SoftBreak
+          , Code
+              "typ/layout/page-margin-00.typ"
+              ( line 5 , column 4 )
+              (FuncCall
+                 (Ident (Identifier "place"))
+                 [ NormalArg
+                     (Plus (Ident (Identifier "top")) (Ident (Identifier "left")))
+                 , BlockArg [ Text "TL" ]
+                 ])
+          , SoftBreak
+          , Code
+              "typ/layout/page-margin-00.typ"
+              ( line 6 , column 4 )
+              (FuncCall
+                 (Ident (Identifier "place"))
+                 [ NormalArg
+                     (Plus (Ident (Identifier "bottom")) (Ident (Identifier "right")))
+                 , BlockArg [ Text "BR" ]
+                 ])
+          , ParBreak
+          ]))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 place(alignment: Axes(left, top), 
+                       body: text(body: [TL])), 
+                 text(body: [
+]), 
+                 place(alignment: Axes(right, bottom), 
+                       body: text(body: [BR])), 
+                 parbreak(), 
+                 parbreak() })
diff --git a/test/typ/layout/page-margin-01.out b/test/typ/layout/page-margin-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/page-margin-01.out
@@ -0,0 +1,200 @@
+--- parse tree ---
+[ Code
+    "typ/layout/page-margin-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/page-margin-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/page-margin-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/page-margin-01.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 40.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/layout/page-margin-01.typ"
+    ( line 4 , column 2 )
+    (Block
+       (Content
+          [ Code
+              "typ/layout/page-margin-01.typ"
+              ( line 4 , column 4 )
+              (Set
+                 (Ident (Identifier "page"))
+                 [ KeyValArg
+                     (Identifier "margin")
+                     (Dict
+                        [ Reg ( Ident (Identifier "left") , Literal (Numeric 0.0 Pt) ) ])
+                 ])
+          , Space
+          , Code
+              "typ/layout/page-margin-01.typ"
+              ( line 4 , column 36 )
+              (FuncCall
+                 (Ident (Identifier "align"))
+                 [ NormalArg (Ident (Identifier "left"))
+                 , BlockArg [ Text "Left" ]
+                 ])
+          ]))
+, SoftBreak
+, Code
+    "typ/layout/page-margin-01.typ"
+    ( line 5 , column 2 )
+    (Block
+       (Content
+          [ Code
+              "typ/layout/page-margin-01.typ"
+              ( line 5 , column 4 )
+              (Set
+                 (Ident (Identifier "page"))
+                 [ KeyValArg
+                     (Identifier "margin")
+                     (Dict
+                        [ Reg ( Ident (Identifier "right") , Literal (Numeric 0.0 Pt) ) ])
+                 ])
+          , Space
+          , Code
+              "typ/layout/page-margin-01.typ"
+              ( line 5 , column 37 )
+              (FuncCall
+                 (Ident (Identifier "align"))
+                 [ NormalArg (Ident (Identifier "right"))
+                 , BlockArg [ Text "Right" ]
+                 ])
+          ]))
+, SoftBreak
+, Code
+    "typ/layout/page-margin-01.typ"
+    ( line 6 , column 2 )
+    (Block
+       (Content
+          [ Code
+              "typ/layout/page-margin-01.typ"
+              ( line 6 , column 4 )
+              (Set
+                 (Ident (Identifier "page"))
+                 [ KeyValArg
+                     (Identifier "margin")
+                     (Dict
+                        [ Reg ( Ident (Identifier "top") , Literal (Numeric 0.0 Pt) ) ])
+                 ])
+          , Space
+          , Code
+              "typ/layout/page-margin-01.typ"
+              ( line 6 , column 35 )
+              (FuncCall
+                 (Ident (Identifier "align"))
+                 [ NormalArg (Ident (Identifier "top")) , BlockArg [ Text "Top" ] ])
+          ]))
+, SoftBreak
+, Code
+    "typ/layout/page-margin-01.typ"
+    ( line 7 , column 2 )
+    (Block
+       (Content
+          [ Code
+              "typ/layout/page-margin-01.typ"
+              ( line 7 , column 4 )
+              (Set
+                 (Ident (Identifier "page"))
+                 [ KeyValArg
+                     (Identifier "margin")
+                     (Dict
+                        [ Reg ( Ident (Identifier "bottom") , Literal (Numeric 0.0 Pt) ) ])
+                 ])
+          , Space
+          , Code
+              "typ/layout/page-margin-01.typ"
+              ( line 7 , column 38 )
+              (FuncCall
+                 (Ident (Identifier "align"))
+                 [ NormalArg (Ident (Identifier "bottom"))
+                 , BlockArg [ Text "Bottom" ]
+                 ])
+          ]))
+, ParBreak
+, Comment
+, Code
+    "typ/layout/page-margin-01.typ"
+    ( line 10 , column 2 )
+    (Block
+       (Content
+          [ Code
+              "typ/layout/page-margin-01.typ"
+              ( line 10 , column 4 )
+              (Set
+                 (Ident (Identifier "page"))
+                 [ KeyValArg
+                     (Identifier "margin")
+                     (Dict
+                        [ Reg ( Ident (Identifier "rest") , Literal (Numeric 0.0 Pt) )
+                        , Reg ( Ident (Identifier "left") , Literal (Numeric 20.0 Pt) )
+                        ])
+                 ])
+          , Space
+          , Text "Overridden"
+          ]))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [ ]), 
+                 align(alignment: left, 
+                       body: text(body: [Left])), 
+                 text(body: [
+]), 
+                 text(body: [ ]), 
+                 align(alignment: right, 
+                       body: text(body: [Right])), 
+                 text(body: [
+]), 
+                 text(body: [ ]), 
+                 align(alignment: top, 
+                       body: text(body: [Top])), 
+                 text(body: [
+]), 
+                 text(body: [ ]), 
+                 align(alignment: bottom, 
+                       body: text(body: [Bottom])), 
+                 parbreak(), 
+                 text(body: [ Overridden]), 
+                 parbreak() })
diff --git a/test/typ/layout/page-marginals-00.out b/test/typ/layout/page-marginals-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/page-marginals-00.out
@@ -0,0 +1,372 @@
+--- parse tree ---
+[ Code
+    "typ/layout/page-marginals-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/page-marginals-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/page-marginals-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/layout/page-marginals-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "paper") (Literal (String "a8"))
+       , KeyValArg
+           (Identifier "margin")
+           (Dict
+              [ Reg ( Ident (Identifier "x") , Literal (Numeric 15.0 Pt) )
+              , Reg ( Ident (Identifier "y") , Literal (Numeric 30.0 Pt) )
+              ])
+       , KeyValArg
+           (Identifier "header")
+           (Block
+              (CodeBlock
+                 [ FuncCall
+                     (Ident (Identifier "text"))
+                     [ NormalArg (Ident (Identifier "eastern"))
+                     , BlockArg [ Strong [ Text "Typst" ] ]
+                     ]
+                 , FuncCall
+                     (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 1.0 Fr)) ]
+                 , FuncCall
+                     (Ident (Identifier "text"))
+                     [ NormalArg (Literal (Numeric 0.8 Em))
+                     , BlockArg [ Emph [ Text "Chapter" , Space , Text "1" ] ]
+                     ]
+                 ]))
+       , KeyValArg
+           (Identifier "footer")
+           (FuncCall
+              (Ident (Identifier "align"))
+              [ NormalArg (Ident (Identifier "center"))
+              , BlockArg
+                  [ Text "~"
+                  , Space
+                  , Code
+                      "typ/layout/page-marginals-00.typ"
+                      ( line 10 , column 29 )
+                      (FuncCall
+                         (FieldAccess
+                            (Ident (Identifier "display"))
+                            (FuncCall
+                               (Ident (Identifier "counter"))
+                               [ NormalArg (Ident (Identifier "page")) ]))
+                         [])
+                  , Space
+                  , Text "~"
+                  ]
+              ])
+       , KeyValArg
+           (Identifier "background")
+           (FuncCall
+              (FieldAccess
+                 (Ident (Identifier "display"))
+                 (FuncCall
+                    (Ident (Identifier "counter"))
+                    [ NormalArg (Ident (Identifier "page")) ]))
+              [ NormalArg
+                  (FuncExpr
+                     [ NormalParam (Identifier "n") ]
+                     (If
+                        [ ( LessThanOrEqual (Ident (Identifier "n")) (Literal (Int 2))
+                          , Block
+                              (CodeBlock
+                                 [ FuncCall
+                                     (Ident (Identifier "place"))
+                                     [ NormalArg
+                                         (Plus
+                                            (Ident (Identifier "center"))
+                                            (Ident (Identifier "horizon")))
+                                     , NormalArg
+                                         (FuncCall
+                                            (Ident (Identifier "circle"))
+                                            [ KeyValArg
+                                                (Identifier "radius") (Literal (Numeric 1.0 Cm))
+                                            , KeyValArg
+                                                (Identifier "fill")
+                                                (FuncCall
+                                                   (Ident (Identifier "luma"))
+                                                   [ NormalArg (Literal (Numeric 90.0 Percent)) ])
+                                            ])
+                                     ]
+                                 ])
+                          )
+                        ]))
+              ])
+       ])
+, ParBreak
+, Text "But,"
+, Space
+, Text "soft!"
+, Space
+, Text "what"
+, Space
+, Text "light"
+, Space
+, Text "through"
+, Space
+, Text "yonder"
+, Space
+, Text "window"
+, Space
+, Text "breaks?"
+, Space
+, Text "It"
+, Space
+, Text "is"
+, Space
+, Text "the"
+, Space
+, Text "east,"
+, Space
+, Text "and"
+, Space
+, Text "Juliet"
+, SoftBreak
+, Text "is"
+, Space
+, Text "the"
+, Space
+, Text "sun"
+, Text "."
+, Space
+, Text "Arise,"
+, Space
+, Text "fair"
+, Space
+, Text "sun,"
+, Space
+, Text "and"
+, Space
+, Text "kill"
+, Space
+, Text "the"
+, Space
+, Text "envious"
+, Space
+, Text "moon,"
+, Space
+, Text "Who"
+, Space
+, Text "is"
+, Space
+, Text "already"
+, Space
+, Text "sick"
+, Space
+, Text "and"
+, SoftBreak
+, Text "pale"
+, Space
+, Text "with"
+, Space
+, Text "grief,"
+, Space
+, Text "That"
+, Space
+, Text "thou"
+, Space
+, Text "her"
+, Space
+, Text "maid"
+, Space
+, Text "art"
+, Space
+, Text "far"
+, Space
+, Text "more"
+, Space
+, Text "fair"
+, Space
+, Text "than"
+, Space
+, Text "she"
+, Text ":"
+, Space
+, Text "Be"
+, Space
+, Text "not"
+, Space
+, Text "her"
+, Space
+, Text "maid,"
+, SoftBreak
+, Text "since"
+, Space
+, Text "she"
+, Space
+, Text "is"
+, Space
+, Text "envious;"
+, Space
+, Text "Her"
+, Space
+, Text "vestal"
+, Space
+, Text "livery"
+, Space
+, Text "is"
+, Space
+, Text "but"
+, Space
+, Text "sick"
+, Space
+, Text "and"
+, Space
+, Text "green"
+, Space
+, Text "And"
+, Space
+, Text "none"
+, Space
+, Text "but"
+, Space
+, Text "fools"
+, SoftBreak
+, Text "do"
+, Space
+, Text "wear"
+, Space
+, Text "it;"
+, Space
+, Text "cast"
+, Space
+, Text "it"
+, Space
+, Text "off"
+, Text "."
+, Space
+, Text "It"
+, Space
+, Text "is"
+, Space
+, Text "my"
+, Space
+, Text "lady,"
+, Space
+, Text "O,"
+, Space
+, Text "it"
+, Space
+, Text "is"
+, Space
+, Text "my"
+, Space
+, Text "love!"
+, Space
+, Text "O,"
+, Space
+, Text "that"
+, Space
+, Text "she"
+, Space
+, Text "knew"
+, Space
+, Text "she"
+, SoftBreak
+, Text "were!"
+, Space
+, Text "She"
+, Space
+, Text "speaks"
+, Space
+, Text "yet"
+, Space
+, Text "she"
+, Space
+, Text "says"
+, Space
+, Text "nothing"
+, Text ":"
+, Space
+, Text "what"
+, Space
+, Text "of"
+, Space
+, Text "that?"
+, Space
+, Text "Her"
+, Space
+, Text "eye"
+, Space
+, Text "discourses;"
+, Space
+, Text "I"
+, Space
+, Text "will"
+, SoftBreak
+, Text "answer"
+, Space
+, Text "it"
+, Text "."
+, ParBreak
+, Code
+    "typ/layout/page-marginals-00.typ"
+    ( line 24 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "header") (Literal None)
+       , KeyValArg (Identifier "height") (Literal Auto)
+       , KeyValArg
+           (Identifier "margin")
+           (Dict
+              [ Reg ( Ident (Identifier "top") , Literal (Numeric 15.0 Pt) )
+              , Reg ( Ident (Identifier "bottom") , Literal (Numeric 25.0 Pt) )
+              ])
+       ])
+, SoftBreak
+, Text "The"
+, Space
+, Text "END"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [But, soft! what light through yonder window breaks? It is the east, and Juliet
+is the sun. Arise, fair sun, and kill the envious moon, Who is already sick and
+pale with grief, That thou her maid art far more fair than she: Be not her maid,
+since she is envious; Her vestal livery is but sick and green And none but fools
+do wear it; cast it off. It is my lady, O, it is my love! O, that she knew she
+were! She speaks yet she says nothing: what of that? Her eye discourses; I will
+answer it.]), 
+                 parbreak(), 
+                 text(body: [
+The END.]), 
+                 parbreak() })
diff --git a/test/typ/layout/page-style-00.out b/test/typ/layout/page-style-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/page-style-00.out
@@ -0,0 +1,58 @@
+--- parse tree ---
+[ Code
+    "typ/layout/page-style-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/page-style-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/page-style-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/layout/page-style-00.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ NormalArg (Literal (String "a11"))
+       , KeyValArg (Identifier "flipped") (Literal (Boolean True))
+       , KeyValArg (Identifier "fill") (Ident (Identifier "green"))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak() })
diff --git a/test/typ/layout/page-style-01.out b/test/typ/layout/page-style-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/page-style-01.out
@@ -0,0 +1,63 @@
+--- parse tree ---
+[ Code
+    "typ/layout/page-style-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/page-style-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/page-style-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/layout/page-style-01.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "fill") (Ident (Identifier "red")) ])
+, SoftBreak
+, Code
+    "typ/layout/page-style-01.typ"
+    ( line 5 , column 2 )
+    (FuncCall (Ident (Identifier "pagebreak")) [])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 pagebreak(), 
+                 parbreak() })
diff --git a/test/typ/layout/page-style-02.out b/test/typ/layout/page-style-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/page-style-02.out
@@ -0,0 +1,73 @@
+--- parse tree ---
+[ Code
+    "typ/layout/page-style-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/page-style-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/page-style-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/layout/page-style-02.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "page")) [ NormalArg (Literal (String "a4")) ])
+, SoftBreak
+, Code
+    "typ/layout/page-style-02.typ"
+    ( line 5 , column 2 )
+    (Set
+       (Ident (Identifier "page")) [ NormalArg (Literal (String "a5")) ])
+, SoftBreak
+, Code
+    "typ/layout/page-style-02.typ"
+    ( line 6 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 1.0 Cm))
+       , KeyValArg (Identifier "height") (Literal (Numeric 1.0 Cm))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak() })
diff --git a/test/typ/layout/page-style-03.out b/test/typ/layout/page-style-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/page-style-03.out
@@ -0,0 +1,98 @@
+--- parse tree ---
+[ Code
+    "typ/layout/page-style-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/page-style-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/page-style-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/layout/page-style-03.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "page")) [ NormalArg (Literal (String "a4")) ])
+, SoftBreak
+, Code
+    "typ/layout/page-style-03.typ"
+    ( line 5 , column 2 )
+    (Set
+       (Ident (Identifier "page")) [ NormalArg (Literal (String "a5")) ])
+, SoftBreak
+, Code
+    "typ/layout/page-style-03.typ"
+    ( line 6 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ NormalArg (Literal (String "a11"))
+       , KeyValArg (Identifier "flipped") (Literal (Boolean True))
+       , KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
+       ])
+, SoftBreak
+, Code
+    "typ/layout/page-style-03.typ"
+    ( line 7 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "font") (Literal (String "Roboto"))
+       , NormalArg (Ident (Identifier "white"))
+       ])
+, SoftBreak
+, Code
+    "typ/layout/page-style-03.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "smallcaps")) [ BlockArg [ Text "Typst" ] ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+], 
+                      color: rgb(100%,100%,100%,100%), 
+                      font: "Roboto"), 
+                 smallcaps(body: text(body: [Typst], 
+                                      color: rgb(100%,100%,100%,100%), 
+                                      font: "Roboto")), 
+                 parbreak() })
diff --git a/test/typ/layout/pagebreak-00.out b/test/typ/layout/pagebreak-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/pagebreak-00.out
@@ -0,0 +1,54 @@
+--- parse tree ---
+[ Code
+    "typ/layout/pagebreak-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/pagebreak-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/pagebreak-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/layout/pagebreak-00.typ"
+    ( line 4 , column 2 )
+    (FuncCall (Ident (Identifier "pagebreak")) [])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 pagebreak(), 
+                 parbreak() })
diff --git a/test/typ/layout/pagebreak-01.out b/test/typ/layout/pagebreak-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/pagebreak-01.out
@@ -0,0 +1,73 @@
+--- parse tree ---
+[ Code
+    "typ/layout/pagebreak-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/pagebreak-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/pagebreak-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/layout/pagebreak-01.typ"
+    ( line 4 , column 2 )
+    (FuncCall (Ident (Identifier "pagebreak")) [])
+, SoftBreak
+, Code
+    "typ/layout/pagebreak-01.typ"
+    ( line 5 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 2.0 Cm))
+       , KeyValArg (Identifier "fill") (Ident (Identifier "green"))
+       ])
+, SoftBreak
+, Code
+    "typ/layout/pagebreak-01.typ"
+    ( line 6 , column 2 )
+    (FuncCall (Ident (Identifier "pagebreak")) [])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 pagebreak(), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 pagebreak(), 
+                 parbreak() })
diff --git a/test/typ/layout/pagebreak-02.out b/test/typ/layout/pagebreak-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/pagebreak-02.out
@@ -0,0 +1,91 @@
+--- parse tree ---
+[ Code
+    "typ/layout/pagebreak-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/pagebreak-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/pagebreak-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/layout/pagebreak-02.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "fill") (Ident (Identifier "aqua")) ])
+, SoftBreak
+, Code
+    "typ/layout/pagebreak-02.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "pagebreak"))
+       [ KeyValArg (Identifier "weak") (Literal (Boolean True)) ])
+, SoftBreak
+, Text "First"
+, SoftBreak
+, Code
+    "typ/layout/pagebreak-02.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "pagebreak"))
+       [ KeyValArg (Identifier "weak") (Literal (Boolean True)) ])
+, SoftBreak
+, Text "Second"
+, SoftBreak
+, Code
+    "typ/layout/pagebreak-02.typ"
+    ( line 9 , column 2 )
+    (FuncCall
+       (Ident (Identifier "pagebreak"))
+       [ KeyValArg (Identifier "weak") (Literal (Boolean True)) ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 pagebreak(weak: true), 
+                 text(body: [
+First
+]), 
+                 pagebreak(weak: true), 
+                 text(body: [
+Second
+]), 
+                 pagebreak(weak: true), 
+                 parbreak() })
diff --git a/test/typ/layout/pagebreak-03.out b/test/typ/layout/pagebreak-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/pagebreak-03.out
@@ -0,0 +1,126 @@
+--- parse tree ---
+[ Code
+    "typ/layout/pagebreak-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/pagebreak-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/pagebreak-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/layout/pagebreak-03.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 80.0 Pt))
+       , KeyValArg (Identifier "height") (Literal (Numeric 30.0 Pt))
+       ])
+, SoftBreak
+, Code
+    "typ/layout/pagebreak-03.typ"
+    ( line 5 , column 2 )
+    (Block
+       (Content
+          [ Code
+              "typ/layout/pagebreak-03.typ"
+              ( line 5 , column 4 )
+              (Set
+                 (Ident (Identifier "page"))
+                 [ KeyValArg (Identifier "width") (Literal (Numeric 60.0 Pt)) ])
+          , Space
+          , Text "First"
+          ]))
+, SoftBreak
+, Code
+    "typ/layout/pagebreak-03.typ"
+    ( line 6 , column 2 )
+    (FuncCall (Ident (Identifier "pagebreak")) [])
+, SoftBreak
+, Code
+    "typ/layout/pagebreak-03.typ"
+    ( line 7 , column 2 )
+    (FuncCall (Ident (Identifier "pagebreak")) [])
+, SoftBreak
+, Text "Third"
+, SoftBreak
+, Code
+    "typ/layout/pagebreak-03.typ"
+    ( line 9 , column 2 )
+    (FuncCall
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 20.0 Pt))
+       , KeyValArg (Identifier "fill") (Ident (Identifier "red"))
+       , BlockArg []
+       ])
+, SoftBreak
+, Text "Fif"
+, Code
+    "typ/layout/pagebreak-03.typ"
+    ( line 10 , column 5 )
+    (Block
+       (Content
+          [ Code
+              "typ/layout/pagebreak-03.typ"
+              ( line 10 , column 7 )
+              (Set (Ident (Identifier "page")) [])
+          , Text "th"
+          ]))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [ First]), 
+                 text(body: [
+]), 
+                 pagebreak(), 
+                 text(body: [
+]), 
+                 pagebreak(), 
+                 text(body: [
+Third
+]), 
+                 page(body: {  }, 
+                      fill: rgb(100%,25%,21%,100%), 
+                      height: 20.0pt, 
+                      width: 60.0pt), 
+                 text(body: [
+Fif]), 
+                 text(body: [th]), 
+                 parbreak() })
diff --git a/test/typ/layout/pagebreak-04.out b/test/typ/layout/pagebreak-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/pagebreak-04.out
@@ -0,0 +1,111 @@
+--- parse tree ---
+[ Code
+    "typ/layout/pagebreak-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/pagebreak-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/pagebreak-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/layout/pagebreak-04.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "fill") (Ident (Identifier "navy")) ])
+, SoftBreak
+, Code
+    "typ/layout/pagebreak-04.typ"
+    ( line 5 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "fill") (Ident (Identifier "white")) ])
+, SoftBreak
+, Text "First"
+, SoftBreak
+, Code
+    "typ/layout/pagebreak-04.typ"
+    ( line 7 , column 2 )
+    (FuncCall (Ident (Identifier "pagebreak")) [])
+, SoftBreak
+, Code
+    "typ/layout/pagebreak-04.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "page")) [ BlockArg [ Text "Second" ] ])
+, SoftBreak
+, Code
+    "typ/layout/pagebreak-04.typ"
+    ( line 9 , column 2 )
+    (FuncCall
+       (Ident (Identifier "pagebreak"))
+       [ KeyValArg (Identifier "weak") (Literal (Boolean True)) ])
+, SoftBreak
+, Code
+    "typ/layout/pagebreak-04.typ"
+    ( line 10 , column 2 )
+    (FuncCall
+       (Ident (Identifier "page")) [ BlockArg [ Text "Third" ] ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+First
+], 
+                      fill: rgb(100%,100%,100%,100%)), 
+                 pagebreak(), 
+                 text(body: [
+], 
+                      fill: rgb(100%,100%,100%,100%)), 
+                 page(body: text(body: [Second], 
+                                 fill: rgb(100%,100%,100%,100%)), 
+                      fill: rgb(0%,12%,24%,100%)), 
+                 text(body: [
+], 
+                      fill: rgb(100%,100%,100%,100%)), 
+                 pagebreak(weak: true), 
+                 text(body: [
+], 
+                      fill: rgb(100%,100%,100%,100%)), 
+                 page(body: text(body: [Third], 
+                                 fill: rgb(100%,100%,100%,100%)), 
+                      fill: rgb(0%,12%,24%,100%)), 
+                 parbreak() })
diff --git a/test/typ/layout/par-00.out b/test/typ/layout/par-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/par-00.out
@@ -0,0 +1,77 @@
+--- parse tree ---
+[ Code
+    "typ/layout/par-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/par-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/par-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/par-00.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "align"))
+       [ NormalArg (Ident (Identifier "right")) ])
+, SoftBreak
+, Text "To"
+, Space
+, Text "the"
+, Space
+, Text "right!"
+, Space
+, Text "Where"
+, Space
+, Text "the"
+, Space
+, Text "sunlight"
+, Space
+, Text "peeks"
+, Space
+, Text "behind"
+, Space
+, Text "the"
+, Space
+, Text "mountain"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+To the right! Where the sunlight peeks behind the mountain.]), 
+                 parbreak() })
diff --git a/test/typ/layout/par-01.out b/test/typ/layout/par-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/par-01.out
@@ -0,0 +1,102 @@
+--- parse tree ---
+[ Code
+    "typ/layout/par-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/par-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/par-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/par-01.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "block"))
+       [ KeyValArg (Identifier "spacing") (Literal (Numeric 1.0 Em)) ])
+, SoftBreak
+, Code
+    "typ/layout/par-01.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "par"))
+       [ KeyValArg (Identifier "leading") (Literal (Numeric 2.0 Pt)) ])
+, SoftBreak
+, Text "But,"
+, Space
+, Text "soft!"
+, Space
+, Text "what"
+, Space
+, Text "light"
+, Space
+, Text "through"
+, Space
+, Text "yonder"
+, Space
+, Text "window"
+, Space
+, Text "breaks?"
+, ParBreak
+, Text "It"
+, Space
+, Text "is"
+, Space
+, Text "the"
+, Space
+, Text "east,"
+, Space
+, Text "and"
+, Space
+, Text "Juliet"
+, Space
+, Text "is"
+, Space
+, Text "the"
+, Space
+, Text "sun"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+But, soft! what light through yonder window breaks?]), 
+                 parbreak(), 
+                 text(body: [It is the east, and Juliet is the sun.]), 
+                 parbreak() })
diff --git a/test/typ/layout/par-02.out b/test/typ/layout/par-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/par-02.out
@@ -0,0 +1,105 @@
+--- parse tree ---
+[ Code
+    "typ/layout/par-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/par-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/par-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/layout/par-02.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "block"))
+       [ KeyValArg (Identifier "spacing") (Literal (Numeric 100.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/layout/par-02.typ"
+    ( line 5 , column 2 )
+    (Show
+       (Just (Ident (Identifier "table")))
+       (Set
+          (Ident (Identifier "block"))
+          [ KeyValArg (Identifier "above") (Literal (Numeric 5.0 Pt))
+          , KeyValArg (Identifier "below") (Literal (Numeric 5.0 Pt))
+          ]))
+, SoftBreak
+, Text "Hello"
+, SoftBreak
+, Code
+    "typ/layout/par-02.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "table"))
+       [ KeyValArg (Identifier "columns") (Literal (Int 4))
+       , KeyValArg
+           (Identifier "fill")
+           (FuncExpr
+              [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+              (If
+                 [ ( FuncCall
+                       (FieldAccess
+                          (Ident (Identifier "odd")) (Ident (Identifier "calc")))
+                       [ NormalArg
+                           (Plus (Ident (Identifier "x")) (Ident (Identifier "y")))
+                       ]
+                   , Block (CodeBlock [ Ident (Identifier "silver") ])
+                   )
+                 ]))
+       , BlockArg [ Text "A" ]
+       , BlockArg [ Text "B" ]
+       , BlockArg [ Text "C" ]
+       , BlockArg [ Text "D" ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+Hello
+]), 
+                 table(children: (text(body: [A]), 
+                                  text(body: [B]), 
+                                  text(body: [C]), 
+                                  text(body: [D])), 
+                       columns: 4, 
+                       fill: ), 
+                 parbreak() })
diff --git a/test/typ/layout/par-03.out b/test/typ/layout/par-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/par-03.out
@@ -0,0 +1,90 @@
+--- parse tree ---
+[ Code
+    "typ/layout/par-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/par-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/par-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/par-03.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "block"))
+       [ KeyValArg (Identifier "spacing") (Literal (Numeric 0.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/layout/par-03.typ"
+    ( line 4 , column 2 )
+    (Show
+       (Just (Ident (Identifier "raw")))
+       (Set
+          (Ident (Identifier "block"))
+          [ KeyValArg (Identifier "spacing") (Literal (Numeric 15.0 Pt)) ]))
+, SoftBreak
+, Code
+    "typ/layout/par-03.typ"
+    ( line 5 , column 2 )
+    (Show
+       (Just (Ident (Identifier "list")))
+       (Set
+          (Ident (Identifier "block"))
+          [ KeyValArg (Identifier "spacing") (Literal (Numeric 2.5 Pt)) ]))
+, ParBreak
+, RawBlock "rust" "fn main() {}\n"
+, ParBreak
+, BulletListItem [ Text "List" , SoftBreak ]
+, SoftBreak
+, Text "Paragraph"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 raw(block: true, 
+                     lang: "rust", 
+                     text: "fn main() {}\n"), 
+                 parbreak(), 
+                 list(children: (text(body: [List
+]))), 
+                 text(body: [Paragraph]), 
+                 parbreak() })
diff --git a/test/typ/layout/par-bidi-00.out b/test/typ/layout/par-bidi-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/par-bidi-00.out
@@ -0,0 +1,84 @@
+--- parse tree ---
+[ Code
+    "typ/layout/par-bidi-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/par-bidi-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/par-bidi-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/par-bidi-00.typ"
+    ( line 3 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "content")))
+       (FuncCall
+          (Ident (Identifier "par"))
+          [ BlockArg
+              [ Text "Text" , Space , Text "\1496\1462\1511\1505\1496" ]
+          ]))
+, SoftBreak
+, Code
+    "typ/layout/par-bidi-00.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "lang") (Literal (String "he"))
+       , NormalArg (Ident (Identifier "content"))
+       ])
+, SoftBreak
+, Code
+    "typ/layout/par-bidi-00.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "lang") (Literal (String "de"))
+       , NormalArg (Ident (Identifier "content"))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: par(body: text(body: [Text טֶקסט])), 
+                      lang: "he"), 
+                 text(body: [
+]), 
+                 text(body: par(body: text(body: [Text טֶקסט])), 
+                      lang: "de"), 
+                 parbreak() })
diff --git a/test/typ/layout/par-bidi-01.out b/test/typ/layout/par-bidi-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/par-bidi-01.out
@@ -0,0 +1,120 @@
+--- parse tree ---
+[ Code
+    "typ/layout/par-bidi-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/par-bidi-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/par-bidi-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/layout/par-bidi-01.typ"
+    ( line 4 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "content")))
+       (FuncCall
+          (Ident (Identifier "par"))
+          [ BlockArg
+              [ Text "\1571\1606\1578"
+              , Space
+              , Text "A"
+              , Code
+                  "typ/layout/par-bidi-01.typ"
+                  ( line 4 , column 26 )
+                  (FuncCall (Ident (Identifier "emph")) [ BlockArg [ Text "B" ] ])
+              , Text "\1605\1591\1585C"
+              ]
+          ]))
+, SoftBreak
+, Code
+    "typ/layout/par-bidi-01.typ"
+    ( line 5 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg
+           (Identifier "font")
+           (Array
+              [ Reg (Literal (String "PT Sans"))
+              , Reg (Literal (String "Noto Sans Arabic"))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/layout/par-bidi-01.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "lang") (Literal (String "ar"))
+       , NormalArg (Ident (Identifier "content"))
+       ])
+, SoftBreak
+, Code
+    "typ/layout/par-bidi-01.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "lang") (Literal (String "de"))
+       , NormalArg (Ident (Identifier "content"))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+], 
+                      font: ("PT Sans", 
+                             "Noto Sans Arabic")), 
+                 text(body: par(body: { text(body: [أنت A]), 
+                                        emph(body: text(body: [B])), 
+                                        text(body: [مطرC]) }), 
+                      font: ("PT Sans", 
+                             "Noto Sans Arabic"), 
+                      lang: "ar"), 
+                 text(body: [
+], 
+                      font: ("PT Sans", 
+                             "Noto Sans Arabic")), 
+                 text(body: par(body: { text(body: [أنت A]), 
+                                        emph(body: text(body: [B])), 
+                                        text(body: [مطرC]) }), 
+                      font: ("PT Sans", 
+                             "Noto Sans Arabic"), 
+                      lang: "de"), 
+                 parbreak() })
diff --git a/test/typ/layout/par-bidi-02.out b/test/typ/layout/par-bidi-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/par-bidi-02.out
@@ -0,0 +1,120 @@
+--- parse tree ---
+[ Code
+    "typ/layout/par-bidi-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/par-bidi-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/par-bidi-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/layout/par-bidi-02.typ"
+    ( line 4 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "content")))
+       (FuncCall
+          (Ident (Identifier "par"))
+          [ BlockArg
+              [ Text "A\1490\1462"
+              , Code
+                  "typ/layout/par-bidi-02.typ"
+                  ( line 4 , column 24 )
+                  (FuncCall
+                     (Ident (Identifier "strong"))
+                     [ BlockArg [ Text "\1513\1473\1462" ] ])
+              , Text "\1501B"
+              ]
+          ]))
+, SoftBreak
+, Code
+    "typ/layout/par-bidi-02.typ"
+    ( line 5 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg
+           (Identifier "font")
+           (Array
+              [ Reg (Literal (String "Linux Libertine"))
+              , Reg (Literal (String "Noto Serif Hebrew"))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/layout/par-bidi-02.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "lang") (Literal (String "he"))
+       , NormalArg (Ident (Identifier "content"))
+       ])
+, SoftBreak
+, Code
+    "typ/layout/par-bidi-02.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "lang") (Literal (String "de"))
+       , NormalArg (Ident (Identifier "content"))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+], 
+                      font: ("Linux Libertine", 
+                             "Noto Serif Hebrew")), 
+                 text(body: par(body: { text(body: [Aגֶ]), 
+                                        strong(body: text(body: [שֶׁ])), 
+                                        text(body: [םB]) }), 
+                      font: ("Linux Libertine", 
+                             "Noto Serif Hebrew"), 
+                      lang: "he"), 
+                 text(body: [
+], 
+                      font: ("Linux Libertine", 
+                             "Noto Serif Hebrew")), 
+                 text(body: par(body: { text(body: [Aגֶ]), 
+                                        strong(body: text(body: [שֶׁ])), 
+                                        text(body: [םB]) }), 
+                      font: ("Linux Libertine", 
+                             "Noto Serif Hebrew"), 
+                      lang: "de"), 
+                 parbreak() })
diff --git a/test/typ/layout/par-bidi-03.out b/test/typ/layout/par-bidi-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/par-bidi-03.out
@@ -0,0 +1,65 @@
+--- parse tree ---
+[ Code
+    "typ/layout/par-bidi-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/par-bidi-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/par-bidi-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/par-bidi-03.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "dir") (Ident (Identifier "rtl")) ])
+, SoftBreak
+, Text "\1488"
+, Text "\8294"
+, Text "A"
+, Text "\8295"
+, Text "B\1489"
+, Text "\8297"
+, Text "?"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+א⁦A⁧Bב⁩?], 
+                      dir: rtl), 
+                 parbreak() })
diff --git a/test/typ/layout/par-bidi-04.out b/test/typ/layout/par-bidi-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/par-bidi-04.out
@@ -0,0 +1,89 @@
+--- parse tree ---
+[ Code
+    "typ/layout/par-bidi-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/par-bidi-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/par-bidi-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/par-bidi-04.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "lang") (Literal (String "ar"))
+       , KeyValArg
+           (Identifier "font")
+           (Array
+              [ Reg (Literal (String "Noto Sans Arabic"))
+              , Reg (Literal (String "PT Sans"))
+              ])
+       ])
+, SoftBreak
+, Text "Life"
+, Space
+, Text "\1575\1604\1605\1591\1585"
+, Space
+, Text "\1607\1608"
+, Space
+, Text "\1575\1604\1581\1610\1575\1577"
+, Space
+, HardBreak
+, Text "\1575\1604\1581\1610\1575\1577"
+, Space
+, Text "\1578\1605\1591\1585"
+, Space
+, Text "is"
+, Space
+, Text "rain"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+Life المطر هو الحياة ], 
+                      font: ("Noto Sans Arabic", 
+                             "PT Sans"), 
+                      lang: "ar"), 
+                 linebreak(), 
+                 text(body: [الحياة تمطر is rain.], 
+                      font: ("Noto Sans Arabic", 
+                             "PT Sans"), 
+                      lang: "ar"), 
+                 parbreak() })
diff --git a/test/typ/layout/par-bidi-05.out b/test/typ/layout/par-bidi-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/par-bidi-05.out
@@ -0,0 +1,75 @@
+--- parse tree ---
+[ Code
+    "typ/layout/par-bidi-05.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/par-bidi-05.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/par-bidi-05.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "L"
+, Space
+, Code
+    "typ/layout/par-bidi-05.typ"
+    ( line 3 , column 4 )
+    (FuncCall
+       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 1.0 Cm)) ])
+, Space
+, Text "\1512\1497\1493\1493\1495R"
+, Space
+, HardBreak
+, Text "L\1512\1497\1493\1493\1495"
+, Space
+, Code
+    "typ/layout/par-bidi-05.typ"
+    ( line 4 , column 9 )
+    (FuncCall
+       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 1.0 Cm)) ])
+, Space
+, Text "R"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [L ]), 
+                 h(amount: 1.0cm), 
+                 text(body: [ ריווחR ]), 
+                 linebreak(), 
+                 text(body: [Lריווח ]), 
+                 h(amount: 1.0cm), 
+                 text(body: [ R]), 
+                 parbreak() })
diff --git a/test/typ/layout/par-bidi-06.out b/test/typ/layout/par-bidi-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/par-bidi-06.out
@@ -0,0 +1,76 @@
+--- parse tree ---
+[ Code
+    "typ/layout/par-bidi-06.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/par-bidi-06.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/par-bidi-06.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/par-bidi-06.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "lang") (Literal (String "he")) ])
+, SoftBreak
+, Text "\1511\1512\1504\1508\1497\1501Rh"
+, Code
+    "typ/layout/par-bidi-06.typ"
+    ( line 4 , column 10 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "image"))
+              [ NormalArg (Literal (String "/assets/files/rhino.png"))
+              , KeyValArg (Identifier "height") (Literal (Numeric 11.0 Pt))
+              ])
+       ])
+, Text "ino\1495\1497\1497\1501"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+קרנפיםRh], 
+                      lang: "he"), 
+                 box(body: image(height: 11.0pt, 
+                                 path: "/assets/files/rhino.png")), 
+                 text(body: [inoחיים], 
+                      lang: "he"), 
+                 parbreak() })
diff --git a/test/typ/layout/par-bidi-07.out b/test/typ/layout/par-bidi-07.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/par-bidi-07.out
@@ -0,0 +1,67 @@
+--- parse tree ---
+[ Code
+    "typ/layout/par-bidi-07.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/par-bidi-07.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/par-bidi-07.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "\1575\1604\1594\1575\1604\1576"
+, Space
+, Code
+    "typ/layout/par-bidi-07.typ"
+    ( line 3 , column 9 )
+    (FuncCall
+       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 70.0 Pt)) ])
+, Space
+, Text "\1606"
+, Code
+    "typ/layout/par-bidi-07.typ"
+    ( line 3 , column 19 )
+    (Literal (String " "))
+, Text "\1577"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [الغالب ]), 
+                 h(amount: 70.0pt), 
+                 text(body: [ ن]), 
+                 text(body: [ ]), 
+                 text(body: [ة]), 
+                 parbreak() })
diff --git a/test/typ/layout/par-bidi-08.out b/test/typ/layout/par-bidi-08.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/par-bidi-08.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/layout/par-indent-00.out b/test/typ/layout/par-indent-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/par-indent-00.out
@@ -0,0 +1,265 @@
+--- parse tree ---
+[ Code
+    "typ/layout/par-indent-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/par-indent-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/par-indent-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/layout/par-indent-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "par"))
+       [ KeyValArg
+           (Identifier "first-line-indent") (Literal (Numeric 12.0 Pt))
+       , KeyValArg (Identifier "leading") (Literal (Numeric 5.0 Pt))
+       ])
+, SoftBreak
+, Code
+    "typ/layout/par-indent-00.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "block"))
+       [ KeyValArg (Identifier "spacing") (Literal (Numeric 5.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/layout/par-indent-00.typ"
+    ( line 4 , column 2 )
+    (Show
+       (Just (Ident (Identifier "heading")))
+       (Set
+          (Ident (Identifier "text"))
+          [ KeyValArg (Identifier "size") (Literal (Numeric 10.0 Pt)) ]))
+, ParBreak
+, Text "The"
+, Space
+, Text "first"
+, Space
+, Text "paragraph"
+, Space
+, Text "has"
+, Space
+, Text "no"
+, Space
+, Text "indent"
+, Text "."
+, ParBreak
+, Text "But"
+, Space
+, Text "the"
+, Space
+, Text "second"
+, Space
+, Text "one"
+, Space
+, Text "does"
+, Text "."
+, ParBreak
+, Code
+    "typ/layout/par-indent-00.typ"
+    ( line 10 , column 2 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "image"))
+              [ NormalArg (Literal (String "/assets/files/tiger.jpg"))
+              , KeyValArg (Identifier "height") (Literal (Numeric 6.0 Pt))
+              ])
+       ])
+, SoftBreak
+, Text "starts"
+, Space
+, Text "a"
+, Space
+, Text "paragraph,"
+, Space
+, Text "also"
+, Space
+, Text "with"
+, Space
+, Text "indent"
+, Text "."
+, ParBreak
+, Code
+    "typ/layout/par-indent-00.typ"
+    ( line 13 , column 2 )
+    (FuncCall
+       (Ident (Identifier "align"))
+       [ NormalArg (Ident (Identifier "center"))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "image"))
+              [ NormalArg (Literal (String "/assets/files/rhino.png"))
+              , KeyValArg (Identifier "width") (Literal (Numeric 1.0 Cm))
+              ])
+       ])
+, ParBreak
+, Heading 1 [ Text "Headings" ]
+, BulletListItem [ Text "And" , Space , Text "lists" , Text "." ]
+, SoftBreak
+, BulletListItem
+    [ Text "Have"
+    , Space
+    , Text "no"
+    , Space
+    , Text "indent"
+    , Text "."
+    , ParBreak
+    , Text "Except"
+    , Space
+    , Text "if"
+    , Space
+    , Text "you"
+    , Space
+    , Text "have"
+    , Space
+    , Text "another"
+    , Space
+    , Text "paragraph"
+    , Space
+    , Text "in"
+    , Space
+    , Text "them"
+    , Text "."
+    , SoftBreak
+    ]
+, SoftBreak
+, Code
+    "typ/layout/par-indent-00.typ"
+    ( line 21 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ NormalArg (Literal (Numeric 8.0 Pt))
+       , KeyValArg (Identifier "lang") (Literal (String "ar"))
+       , KeyValArg
+           (Identifier "font")
+           (Array
+              [ Reg (Literal (String "Noto Sans Arabic"))
+              , Reg (Literal (String "Linux Libertine"))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/layout/par-indent-00.typ"
+    ( line 22 , column 2 )
+    (Set
+       (Ident (Identifier "par"))
+       [ KeyValArg (Identifier "leading") (Literal (Numeric 8.0 Pt)) ])
+, ParBreak
+, Heading 1 [ Text "Arabic" ]
+, Text "\1583\1593"
+, Space
+, Text "\1575\1604\1606\1589"
+, Space
+, Text "\1610\1605\1591\1585"
+, Space
+, Text "\1593\1604\1610\1603"
+, ParBreak
+, Text "\1579\1605"
+, Space
+, Text "\1610\1589\1576\1581"
+, Space
+, Text "\1575\1604\1606\1589"
+, Space
+, Text "\1585\1591\1576\1611\1575"
+, Space
+, Text "\1608\1602\1575\1576\1604"
+, Space
+, Text "\1604\1604\1591\1585\1602"
+, Space
+, Text "\1608\1610\1576\1583\1608"
+, Space
+, Text "\1575\1604\1605\1587\1578\1606\1583"
+, Space
+, Text "\1585\1575\1574\1593\1611\1575"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [The first paragraph has no indent.]), 
+                 parbreak(), 
+                 text(body: [But the second one does.]), 
+                 parbreak(), 
+                 box(body: image(height: 6.0pt, 
+                                 path: "/assets/files/tiger.jpg")), 
+                 text(body: [
+starts a paragraph, also with indent.]), 
+                 parbreak(), 
+                 align(alignment: center, 
+                       body: image(path: "/assets/files/rhino.png", 
+                                   width: 1.0cm)), 
+                 parbreak(), 
+                 heading(body: text(body: [Headings]), 
+                         level: 1), 
+                 list(children: (text(body: [And lists.]), 
+                                 { text(body: [Have no indent.]), 
+                                   parbreak(), 
+                                   text(body: [Except if you have another paragraph in them.
+]) })), 
+                 text(body: [
+], 
+                      font: ("Noto Sans Arabic", 
+                             "Linux Libertine"), 
+                      lang: "ar", 
+                      size: 8.0pt), 
+                 parbreak(), 
+                 heading(body: text(body: [Arabic], 
+                                    font: ("Noto Sans Arabic", 
+                                           "Linux Libertine"), 
+                                    lang: "ar", 
+                                    size: 8.0pt), 
+                         level: 1), 
+                 text(body: [دع النص يمطر عليك], 
+                      font: ("Noto Sans Arabic", 
+                             "Linux Libertine"), 
+                      lang: "ar", 
+                      size: 8.0pt), 
+                 parbreak(), 
+                 text(body: [ثم يصبح النص رطبًا وقابل للطرق ويبدو المستند رائعًا.], 
+                      font: ("Noto Sans Arabic", 
+                             "Linux Libertine"), 
+                      lang: "ar", 
+                      size: 8.0pt), 
+                 parbreak() })
diff --git a/test/typ/layout/par-indent-01.out b/test/typ/layout/par-indent-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/par-indent-01.out
@@ -0,0 +1,80 @@
+--- parse tree ---
+[ Code
+    "typ/layout/par-indent-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/par-indent-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/par-indent-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/par-indent-01.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "par"))
+       [ KeyValArg
+           (Identifier "first-line-indent") (Literal (Numeric 12.0 Pt))
+       ])
+, SoftBreak
+, Text "Why"
+, Space
+, Text "would"
+, Space
+, Text "anybody"
+, Space
+, Text "ever"
+, Space
+, Ellipsis
+, ParBreak
+, Ellipsis
+, Space
+, Text "want"
+, Space
+, Text "spacing"
+, Space
+, Text "and"
+, Space
+, Text "indent?"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+Why would anybody ever …]), 
+                 parbreak(), 
+                 text(body: [… want spacing and indent?]), 
+                 parbreak() })
diff --git a/test/typ/layout/par-indent-02.out b/test/typ/layout/par-indent-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/par-indent-02.out
@@ -0,0 +1,66 @@
+--- parse tree ---
+[ Code
+    "typ/layout/par-indent-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/par-indent-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/par-indent-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/par-indent-02.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "par"))
+       [ KeyValArg
+           (Identifier "hanging-indent") (Literal (Numeric 15.0 Pt))
+       , KeyValArg (Identifier "justify") (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/layout/par-indent-02.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 10)) ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do]), 
+                 parbreak() })
diff --git a/test/typ/layout/par-indent-03.out b/test/typ/layout/par-indent-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/par-indent-03.out
@@ -0,0 +1,73 @@
+--- parse tree ---
+[ Code
+    "typ/layout/par-indent-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/par-indent-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/par-indent-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/layout/par-indent-03.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "par"))
+       [ KeyValArg
+           (Identifier "hanging-indent") (Literal (Numeric 1.0 Em))
+       ])
+, SoftBreak
+, Text "Welcome"
+, Space
+, HardBreak
+, Text "here"
+, Text "."
+, Space
+, Text "Does"
+, Space
+, Text "this"
+, Space
+, Text "work"
+, Space
+, Text "well?"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+Welcome ]), 
+                 linebreak(), 
+                 text(body: [here. Does this work well?]), 
+                 parbreak() })
diff --git a/test/typ/layout/par-indent-04.out b/test/typ/layout/par-indent-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/par-indent-04.out
@@ -0,0 +1,102 @@
+--- parse tree ---
+[ Code
+    "typ/layout/par-indent-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/par-indent-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/par-indent-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/layout/par-indent-04.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "par"))
+       [ KeyValArg
+           (Identifier "hanging-indent") (Literal (Numeric 2.0 Em))
+       ])
+, SoftBreak
+, Code
+    "typ/layout/par-indent-04.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "dir") (Ident (Identifier "rtl")) ])
+, SoftBreak
+, Text "\1604\1570\1606"
+, Space
+, Text "\1608\1602\1583"
+, Space
+, Text "\1571\1592\1604\1605"
+, Space
+, Text "\1575\1604\1604\1610\1604"
+, Space
+, Text "\1608\1576\1583\1571\1578"
+, Space
+, Text "\1575\1604\1606\1580\1608\1605"
+, SoftBreak
+, Text "\1578\1606\1590\1582"
+, Space
+, Text "\1608\1580\1607"
+, Space
+, Text "\1575\1604\1591\1576\1610\1593\1577"
+, Space
+, Text "\1575\1604\1578\1610"
+, Space
+, Text "\1571\1593\1618\1610\1614\1578\1618"
+, Space
+, Text "\1605\1606"
+, Space
+, Text "\1591\1608\1604"
+, Space
+, Text "\1605\1575"
+, Space
+, Text "\1575\1606\1576\1593\1579\1578"
+, Space
+, Text "\1601\1610"
+, Space
+, Text "\1575\1604\1606\1607\1575\1585"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+لآن وقد أظلم الليل وبدأت النجوم
+تنضخ وجه الطبيعة التي أعْيَتْ من طول ما انبعثت في النهار], 
+                      dir: rtl), 
+                 parbreak() })
diff --git a/test/typ/layout/par-justify-00.out b/test/typ/layout/par-justify-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/par-justify-00.out
@@ -0,0 +1,148 @@
+--- parse tree ---
+[ Code
+    "typ/layout/par-justify-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/par-justify-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/par-justify-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/layout/par-justify-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 180.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/layout/par-justify-00.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "block"))
+       [ KeyValArg (Identifier "spacing") (Literal (Numeric 5.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/layout/par-justify-00.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "par"))
+       [ KeyValArg (Identifier "justify") (Literal (Boolean True))
+       , KeyValArg
+           (Identifier "first-line-indent") (Literal (Numeric 14.0 Pt))
+       , KeyValArg (Identifier "leading") (Literal (Numeric 5.0 Pt))
+       ])
+, ParBreak
+, Text "This"
+, Space
+, Text "text"
+, Space
+, Text "is"
+, Space
+, Text "justified,"
+, Space
+, Text "meaning"
+, Space
+, Text "that"
+, Space
+, Text "spaces"
+, Space
+, Text "are"
+, Space
+, Text "stretched"
+, Space
+, Text "so"
+, Space
+, Text "that"
+, Space
+, Text "the"
+, Space
+, Text "text"
+, SoftBreak
+, Text "forms"
+, Space
+, Text "a"
+, Space
+, Quote '"'
+, Text "block"
+, Quote '"'
+, Space
+, Text "with"
+, Space
+, Text "flush"
+, Space
+, Text "edges"
+, Space
+, Text "at"
+, Space
+, Text "both"
+, Space
+, Text "sides"
+, Text "."
+, ParBreak
+, Text "First"
+, Space
+, Text "line"
+, Space
+, Text "indents"
+, Space
+, Text "and"
+, Space
+, Text "hyphenation"
+, Space
+, Text "play"
+, Space
+, Text "nicely"
+, Space
+, Text "with"
+, Space
+, Text "justified"
+, Space
+, Text "text"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [This text is justified, meaning that spaces are stretched so that the text
+forms a “block” with flush edges at both sides.]), 
+                 parbreak(), 
+                 text(body: [First line indents and hyphenation play nicely with justified text.]), 
+                 parbreak() })
diff --git a/test/typ/layout/par-justify-01.out b/test/typ/layout/par-justify-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/par-justify-01.out
@@ -0,0 +1,67 @@
+--- parse tree ---
+[ Code
+    "typ/layout/par-justify-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/par-justify-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/par-justify-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/par-justify-01.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "par"))
+       [ KeyValArg (Identifier "justify") (Literal (Boolean True)) ])
+, SoftBreak
+, Text "A"
+, Space
+, Text "B"
+, Space
+, Text "C"
+, Space
+, HardBreak
+, Text "D"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+A B C ]), 
+                 linebreak(), 
+                 text(body: [D]), 
+                 parbreak() })
diff --git a/test/typ/layout/par-justify-02.out b/test/typ/layout/par-justify-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/par-justify-02.out
@@ -0,0 +1,78 @@
+--- parse tree ---
+[ Code
+    "typ/layout/par-justify-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/par-justify-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/par-justify-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "A"
+, Space
+, Text "B"
+, Space
+, Text "C"
+, Space
+, Code
+    "typ/layout/par-justify-02.typ"
+    ( line 3 , column 8 )
+    (FuncCall
+       (Ident (Identifier "linebreak"))
+       [ KeyValArg (Identifier "justify") (Literal (Boolean True)) ])
+, SoftBreak
+, Text "D"
+, Space
+, Text "E"
+, Space
+, Text "F"
+, Space
+, Code
+    "typ/layout/par-justify-02.typ"
+    ( line 4 , column 8 )
+    (FuncCall
+       (Ident (Identifier "linebreak"))
+       [ KeyValArg (Identifier "justify") (Literal (Boolean True)) ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [A B C ]), 
+                 linebreak(justify: true), 
+                 text(body: [
+D E F ]), 
+                 linebreak(justify: true), 
+                 parbreak() })
diff --git a/test/typ/layout/par-justify-03.out b/test/typ/layout/par-justify-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/par-justify-03.out
@@ -0,0 +1,62 @@
+--- parse tree ---
+[ Code
+    "typ/layout/par-justify-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/par-justify-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/par-justify-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/layout/par-justify-03.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "par"))
+       [ KeyValArg (Identifier "justify") (Literal (Boolean True)) ])
+, SoftBreak
+, Code
+    "typ/layout/par-justify-03.typ"
+    ( line 5 , column 2 )
+    (Literal (String ""))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak() })
diff --git a/test/typ/layout/par-justify-04.out b/test/typ/layout/par-justify-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/par-justify-04.out
@@ -0,0 +1,82 @@
+--- parse tree ---
+[ Code
+    "typ/layout/par-justify-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/par-justify-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/par-justify-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/par-justify-04.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 155.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/layout/par-justify-04.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "par"))
+       [ KeyValArg (Identifier "justify") (Literal (Boolean True)) ])
+, SoftBreak
+, Text "This"
+, Space
+, Text "text"
+, Space
+, Text "can"
+, Space
+, Text "be"
+, Space
+, Text "fitted"
+, Space
+, Text "in"
+, Space
+, Text "one"
+, Space
+, Text "line"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+This text can be fitted in one line.]), 
+                 parbreak() })
diff --git a/test/typ/layout/par-justify-cjk-00.out b/test/typ/layout/par-justify-cjk-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/par-justify-cjk-00.out
@@ -0,0 +1,117 @@
+--- parse tree ---
+[ Code
+    "typ/layout/par-justify-cjk-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/par-justify-cjk-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/par-justify-cjk-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, SoftBreak
+, Comment
+, Comment
+, Comment
+, Code
+    "typ/layout/par-justify-cjk-00.typ"
+    ( line 7 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal Auto) ])
+, SoftBreak
+, Code
+    "typ/layout/par-justify-cjk-00.typ"
+    ( line 8 , column 2 )
+    (Set
+       (Ident (Identifier "par"))
+       [ KeyValArg (Identifier "justify") (Literal (Boolean True)) ])
+, SoftBreak
+, Code
+    "typ/layout/par-justify-cjk-00.typ"
+    ( line 9 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg
+           (Identifier "font") (Literal (String "Noto Serif CJK SC"))
+       , KeyValArg (Identifier "lang") (Literal (String "zh"))
+       ])
+, ParBreak
+, Code
+    "typ/layout/par-justify-cjk-00.typ"
+    ( line 11 , column 2 )
+    (FuncCall
+       (Ident (Identifier "rect"))
+       [ KeyValArg (Identifier "inset") (Literal (Numeric 0.0 Pt))
+       , KeyValArg (Identifier "width") (Literal (Numeric 80.0 Pt))
+       , KeyValArg
+           (Identifier "fill")
+           (FuncCall
+              (Ident (Identifier "rgb")) [ NormalArg (Literal (String "eee")) ])
+       , BlockArg
+           [ SoftBreak
+           , Text
+               "\20013\25991\32500\22522\30334\31185\20351\29992\27721\23383\20070\20889\65292\27721\23383\26159\27721\26063\25110\21326\20154\30340\20849\21516\25991\23383\65292\26159\20013\22269\22823\38470\12289\26032\21152\22369\12289\39532\26469\35199\20122\12289\21488\28286\12289\39321\28207\12289\28595\38376\30340\21807\19968\23448\26041\25991\23383\25110\23448\26041\25991\23383\20043\19968\12290\&25"
+           , Text "."
+           , Text
+               "9%\65292\32780\32654\22269\21644\33655\20848\21017\20998\21029\21344\&13"
+           , Text "."
+           , Text "7%\21450\&8"
+           , Text "."
+           , Text
+               "2%\12290\36817\24180\20358\65292\20013\22269\22823\38470\22320\21306\30340\32500\22522\30334\31185\32534\36753\32773\27491\22312\36805\36895\22686\21152\65307"
+           , ParBreak
+           ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 rect(body: { text(body: [
+中文维基百科使用汉字书写，汉字是汉族或华人的共同文字，是中国大陆、新加坡、马来西亚、台湾、香港、澳门的唯一官方文字或官方文字之一。25.9%，而美国和荷兰则分別占13.7%及8.2%。近年來，中国大陆地区的维基百科编辑者正在迅速增加；], 
+                                   font: "Noto Serif CJK SC", 
+                                   lang: "zh"), 
+                              parbreak() }, 
+                      fill: rgb(5%,5%,5%,100%), 
+                      inset: 0.0pt, 
+                      width: 80.0pt), 
+                 parbreak() })
diff --git a/test/typ/layout/par-justify-cjk-01.out b/test/typ/layout/par-justify-cjk-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/par-justify-cjk-01.out
@@ -0,0 +1,121 @@
+--- parse tree ---
+[ Code
+    "typ/layout/par-justify-cjk-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/par-justify-cjk-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/par-justify-cjk-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/par-justify-cjk-01.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal Auto) ])
+, SoftBreak
+, Code
+    "typ/layout/par-justify-cjk-01.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "par"))
+       [ KeyValArg (Identifier "justify") (Literal (Boolean True)) ])
+, SoftBreak
+, Code
+    "typ/layout/par-justify-cjk-01.typ"
+    ( line 5 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "lang") (Literal (String "jp")) ])
+, SoftBreak
+, Code
+    "typ/layout/par-justify-cjk-01.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "rect"))
+       [ KeyValArg (Identifier "inset") (Literal (Numeric 0.0 Pt))
+       , KeyValArg (Identifier "width") (Literal (Numeric 80.0 Pt))
+       , KeyValArg
+           (Identifier "fill")
+           (FuncCall
+              (Ident (Identifier "rgb")) [ NormalArg (Literal (String "eee")) ])
+       , BlockArg
+           [ SoftBreak
+           , Text "\12454\12451\12461\12506\12487\12451\12450\65288\33521"
+           , Text ":"
+           , Space
+           , Text
+               "Wikipedia\65289\12399\12289\19990\30028\20013\12398\12508\12521\12531\12486\12451\12450\12398\20849\21516\20316\26989\12395\12424\12387\12390\22519\31558\21450\12403\20316\25104\12373\12428\12427\12501\12522\12540\12398\22810\35328\35486\12452\12531\12479\12540\12493\12483\12488\30334\31185\20107\20856\12391\12354\12427\12290\20027\12395\23492\20184\12395\20381\12387\12390\27963\21205\12375\12390\12356\12427\38750\21942\21033\22243\20307\12300\12454\12451\12461\12513\12487\12451\12450\36001\22243\12301\12364\25152\26377\12539\36939\21942\12375\12390\12356\12427\12290"
+           , ParBreak
+           , Text
+               "\23554\38272\23478\12395\12424\12427\12458\12531\12521\12452\12531\30334\31185\20107\20856\12503\12525\12472\12455\12463\12488Nupedia\65288\12492\12540\12506\12487\12451\12450\65289\12434\21069\36523\12392\12375\12390\12289\&2001\24180\&1\26376\12289\12521\12522\12540\12539\12469\12531\12460\12540\12392\12472\12511\12540\12539\12454\12455\12540\12523\12474\65288\33521"
+           , Text ":"
+           , Space
+           , Text "Jimmy"
+           , Space
+           , Text "Donal"
+           , Space
+           , Quote '"'
+           , Text "Jimbo"
+           , Quote '"'
+           , Space
+           , Text
+               "Wales\65289\12395\12424\12426\33521\35486\12391\12503\12525\12472\12455\12463\12488\12364\38283\22987\12373\12428\12383\12290"
+           , ParBreak
+           ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+], lang: "jp"), 
+                 rect(body: { text(body: [
+ウィキペディア（英: Wikipedia）は、世界中のボランティアの共同作業によって執筆及び作成されるフリーの多言語インターネット百科事典である。主に寄付に依って活動している非営利団体「ウィキメディア財団」が所有・運営している。], 
+                                   lang: "jp"), 
+                              parbreak(), 
+                              text(body: [専門家によるオンライン百科事典プロジェクトNupedia（ヌーペディア）を前身として、2001年1月、ラリー・サンガーとジミー・ウェールズ（英: Jimmy Donal “Jimbo” Wales）により英語でプロジェクトが開始された。], 
+                                   lang: "jp"), 
+                              parbreak() }, 
+                      fill: rgb(5%,5%,5%,100%), 
+                      inset: 0.0pt, 
+                      width: 80.0pt), 
+                 parbreak() })
diff --git a/test/typ/layout/par-justify-cjk-02.out b/test/typ/layout/par-justify-cjk-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/par-justify-cjk-02.out
@@ -0,0 +1,120 @@
+--- parse tree ---
+[ Code
+    "typ/layout/par-justify-cjk-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/par-justify-cjk-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/par-justify-cjk-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/par-justify-cjk-02.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal Auto) ])
+, SoftBreak
+, Code
+    "typ/layout/par-justify-cjk-02.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "lang") (Literal (String "zh"))
+       , KeyValArg
+           (Identifier "font") (Literal (String "Noto Serif CJK SC"))
+       ])
+, SoftBreak
+, Code
+    "typ/layout/par-justify-cjk-02.typ"
+    ( line 5 , column 2 )
+    (Set
+       (Ident (Identifier "par"))
+       [ KeyValArg (Identifier "justify") (Literal (Boolean True)) ])
+, SoftBreak
+, Code
+    "typ/layout/par-justify-cjk-02.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "rect"))
+       [ KeyValArg (Identifier "inset") (Literal (Numeric 0.0 Pt))
+       , KeyValArg (Identifier "width") (Literal (Numeric 80.0 Pt))
+       , KeyValArg
+           (Identifier "fill")
+           (FuncCall
+              (Ident (Identifier "rgb")) [ NormalArg (Literal (String "eee")) ])
+       , BlockArg
+           [ SoftBreak
+           , Text "\8220\24341\21495\27979\35797\8221\65292\36824\65292"
+           , ParBreak
+           , Text
+               "\12298\20070\21517\12299\12298\27979\35797\12299\19979\19968\34892"
+           , ParBreak
+           , Text "\12298\20070\21517\12299\12298\27979\35797\12299\12290"
+           , ParBreak
+           ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+], 
+                      font: "Noto Serif CJK SC", 
+                      lang: "zh"), 
+                 text(body: [
+], 
+                      font: "Noto Serif CJK SC", 
+                      lang: "zh"), 
+                 rect(body: { text(body: [
+“引号测试”，还，], 
+                                   font: "Noto Serif CJK SC", 
+                                   lang: "zh"), 
+                              parbreak(), 
+                              text(body: [《书名》《测试》下一行], 
+                                   font: "Noto Serif CJK SC", 
+                                   lang: "zh"), 
+                              parbreak(), 
+                              text(body: [《书名》《测试》。], 
+                                   font: "Noto Serif CJK SC", 
+                                   lang: "zh"), 
+                              parbreak() }, 
+                      fill: rgb(5%,5%,5%,100%), 
+                      inset: 0.0pt, 
+                      width: 80.0pt), 
+                 parbreak() })
diff --git a/test/typ/layout/par-justify-cjk-03.out b/test/typ/layout/par-justify-cjk-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/par-justify-cjk-03.out
@@ -0,0 +1,118 @@
+--- parse tree ---
+[ Code
+    "typ/layout/par-justify-cjk-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/par-justify-cjk-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/par-justify-cjk-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/par-justify-cjk-03.typ"
+    ( line 5 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg
+           (Identifier "width")
+           (Plus (Literal (Numeric 170.0 Pt)) (Literal (Numeric 10.0 Pt)))
+       , KeyValArg
+           (Identifier "margin")
+           (Dict
+              [ Reg ( Ident (Identifier "x") , Literal (Numeric 5.0 Pt) ) ])
+       ])
+, SoftBreak
+, Code
+    "typ/layout/par-justify-cjk-03.typ"
+    ( line 6 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg
+           (Identifier "font") (Literal (String "Noto Serif CJK SC"))
+       , KeyValArg (Identifier "lang") (Literal (String "zh"))
+       ])
+, SoftBreak
+, Code
+    "typ/layout/par-justify-cjk-03.typ"
+    ( line 7 , column 2 )
+    (Set
+       (Ident (Identifier "par"))
+       [ KeyValArg (Identifier "justify") (Literal (Boolean True)) ])
+, ParBreak
+, Text
+    "\23380\38592\26368\26089\35265\20110\12298\23665\28023\32463\12299\20013\30340\12298\28023\20869\32463\12299\65306"
+, Text "\8203"
+, Text
+    "\8220\26377\23380\38592\12290\8221\19996\27721\26472\23386\33879\12298\24322\29289\24535\12299\35760\36733\65292\23725\21335\65306\8220\23380\38592\65292\20854\22823\22914\22823\38593\32780\36275\39640\65292\27611\30342\26377\26001\32441\24425\65292\25429\32780\33988\20043\65292\25293\25163\21363\33310\12290\8221"
+, ParBreak
+, Code
+    "typ/layout/par-justify-cjk-03.typ"
+    ( line 11 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg
+           (Identifier "font") (Literal (String "Noto Serif CJK TC"))
+       , KeyValArg (Identifier "lang") (Literal (String "zh"))
+       , KeyValArg (Identifier "region") (Literal (String "hk"))
+       ])
+, SoftBreak
+, Text
+    "\23380\38592\26368\26089\35265\20110\12298\23665\28023\32463\12299\20013\30340\12298\28023\20869\32463\12299\65306\12300\26377\23380\38592\12290\12301\19996\27721\26472\23386\33879\12298\24322\29289\24535\12299\35760\36733\65292\23725\21335\65306\12300\23380\38592\65292\20854\22823\22914\22823\38593\32780\36275\39640\65292\27611\30342\26377\26001\32441\24425\65292\25429\32780\33988\20043\65292\25293\25163\21363\33310\12290\12301"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+], 
+                      font: "Noto Serif CJK SC", 
+                      lang: "zh"), 
+                 parbreak(), 
+                 text(body: [孔雀最早见于《山海经》中的《海内经》：​“有孔雀。”东汉杨孚著《异物志》记载，岭南：“孔雀，其大如大雁而足高，毛皆有斑纹彩，捕而蓄之，拍手即舞。”], 
+                      font: "Noto Serif CJK SC", 
+                      lang: "zh"), 
+                 parbreak(), 
+                 text(body: [
+孔雀最早见于《山海经》中的《海内经》：「有孔雀。」东汉杨孚著《异物志》记载，岭南：「孔雀，其大如大雁而足高，毛皆有斑纹彩，捕而蓄之，拍手即舞。」], 
+                      font: "Noto Serif CJK TC", 
+                      lang: "zh", 
+                      region: "hk"), 
+                 parbreak() })
diff --git a/test/typ/layout/par-knuth-00.out b/test/typ/layout/par-knuth-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/par-knuth-00.out
@@ -0,0 +1,518 @@
+--- parse tree ---
+[ Code
+    "typ/layout/par-knuth-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/par-knuth-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/par-knuth-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/layout/par-knuth-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal Auto)
+       , KeyValArg (Identifier "height") (Literal Auto)
+       ])
+, SoftBreak
+, Code
+    "typ/layout/par-knuth-00.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "par"))
+       [ KeyValArg (Identifier "leading") (Literal (Numeric 4.0 Pt))
+       , KeyValArg (Identifier "justify") (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/layout/par-knuth-00.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg
+           (Identifier "font") (Literal (String "New Computer Modern"))
+       ])
+, ParBreak
+, Code
+    "typ/layout/par-knuth-00.typ"
+    ( line 6 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "story")))
+       (Block
+          (Content
+             [ SoftBreak
+             , Text "In"
+             , Space
+             , Text "olden"
+             , Space
+             , Text "times"
+             , Space
+             , Text "when"
+             , Space
+             , Text "wishing"
+             , Space
+             , Text "still"
+             , Space
+             , Text "helped"
+             , Space
+             , Text "one,"
+             , Space
+             , Text "there"
+             , Space
+             , Text "lived"
+             , Space
+             , Text "a"
+             , Space
+             , Text "king"
+             , Space
+             , Text "whose"
+             , SoftBreak
+             , Text "daughters"
+             , Space
+             , Text "were"
+             , Space
+             , Text "all"
+             , Space
+             , Text "beautiful;"
+             , Space
+             , Text "and"
+             , Space
+             , Text "the"
+             , Space
+             , Text "youngest"
+             , Space
+             , Text "was"
+             , Space
+             , Text "so"
+             , Space
+             , Text "beautiful"
+             , Space
+             , Text "that"
+             , Space
+             , Text "the"
+             , Space
+             , Text "sun"
+             , SoftBreak
+             , Text "itself,"
+             , Space
+             , Text "which"
+             , Space
+             , Text "has"
+             , Space
+             , Text "seen"
+             , Space
+             , Text "so"
+             , Space
+             , Text "much,"
+             , Space
+             , Text "was"
+             , Space
+             , Text "astonished"
+             , Space
+             , Text "whenever"
+             , Space
+             , Text "it"
+             , Space
+             , Text "shone"
+             , Space
+             , Text "in"
+             , Space
+             , Text "her"
+             , Space
+             , Text "face"
+             , Text "."
+             , SoftBreak
+             , Text "Close"
+             , Space
+             , Text "by"
+             , Space
+             , Text "the"
+             , Space
+             , Text "king\8217s"
+             , Space
+             , Text "castle"
+             , Space
+             , Text "lay"
+             , Space
+             , Text "a"
+             , Space
+             , Text "great"
+             , Space
+             , Text "dark"
+             , Space
+             , Text "red,"
+             , Space
+             , Text "and"
+             , Space
+             , Text "under"
+             , Space
+             , Text "an"
+             , Space
+             , Text "old"
+             , Space
+             , Text "lime"
+             , Text "-"
+             , Text "tree"
+             , SoftBreak
+             , Text "in"
+             , Space
+             , Text "the"
+             , Space
+             , Text "red"
+             , Space
+             , Text "was"
+             , Space
+             , Text "a"
+             , Space
+             , Text "well,"
+             , Space
+             , Text "and"
+             , Space
+             , Text "when"
+             , Space
+             , Text "the"
+             , Space
+             , Text "day"
+             , Space
+             , Text "was"
+             , Space
+             , Text "very"
+             , Space
+             , Text "warm,"
+             , Space
+             , Text "the"
+             , Space
+             , Text "king\8217s"
+             , Space
+             , Text "child"
+             , SoftBreak
+             , Text "went"
+             , Space
+             , Text "out"
+             , Space
+             , Text "into"
+             , Space
+             , Text "the"
+             , Space
+             , Text "red"
+             , Space
+             , Text "and"
+             , Space
+             , Text "sat"
+             , Space
+             , Text "down"
+             , Space
+             , Text "by"
+             , Space
+             , Text "the"
+             , Space
+             , Text "side"
+             , Space
+             , Text "of"
+             , Space
+             , Text "the"
+             , Space
+             , Text "cool"
+             , Space
+             , Text "fountain;"
+             , Space
+             , Text "and"
+             , SoftBreak
+             , Text "when"
+             , Space
+             , Text "she"
+             , Space
+             , Text "was"
+             , Space
+             , Text "bored"
+             , Space
+             , Text "she"
+             , Space
+             , Text "took"
+             , Space
+             , Text "a"
+             , Space
+             , Text "golden"
+             , Space
+             , Text "ball,"
+             , Space
+             , Text "and"
+             , Space
+             , Text "threw"
+             , Space
+             , Text "it"
+             , Space
+             , Text "up"
+             , Space
+             , Text "on"
+             , Space
+             , Text "high"
+             , Space
+             , Text "and"
+             , Space
+             , Text "caught"
+             , SoftBreak
+             , Text "it;"
+             , Space
+             , Text "and"
+             , Space
+             , Text "this"
+             , Space
+             , Text "ball"
+             , Space
+             , Text "was"
+             , Space
+             , Text "her"
+             , Space
+             , Text "favorite"
+             , Space
+             , Text "plaything"
+             , Text "."
+             , ParBreak
+             ])))
+, ParBreak
+, Code
+    "typ/layout/par-knuth-00.typ"
+    ( line 17 , column 2 )
+    (LetFunc
+       (Identifier "column")
+       [ NormalParam (Identifier "title")
+       , NormalParam (Identifier "linebreaks")
+       , NormalParam (Identifier "hyphenate")
+       ]
+       (Block
+          (CodeBlock
+             [ FuncCall
+                 (Ident (Identifier "rect"))
+                 [ KeyValArg (Identifier "inset") (Literal (Numeric 0.0 Pt))
+                 , KeyValArg (Identifier "width") (Literal (Numeric 132.0 Pt))
+                 , KeyValArg
+                     (Identifier "fill")
+                     (FuncCall
+                        (Ident (Identifier "rgb")) [ NormalArg (Literal (String "eee")) ])
+                 , BlockArg
+                     [ SoftBreak
+                     , Code
+                         "typ/layout/par-knuth-00.typ"
+                         ( line 19 , column 6 )
+                         (Set
+                            (Ident (Identifier "par"))
+                            [ KeyValArg
+                                (Identifier "linebreaks") (Ident (Identifier "linebreaks"))
+                            ])
+                     , SoftBreak
+                     , Code
+                         "typ/layout/par-knuth-00.typ"
+                         ( line 20 , column 6 )
+                         (Set
+                            (Ident (Identifier "text"))
+                            [ KeyValArg
+                                (Identifier "hyphenate") (Ident (Identifier "hyphenate"))
+                            ])
+                     , SoftBreak
+                     , Code
+                         "typ/layout/par-knuth-00.typ"
+                         ( line 21 , column 6 )
+                         (FuncCall
+                            (Ident (Identifier "strong"))
+                            [ NormalArg (Ident (Identifier "title")) ])
+                     , Space
+                     , HardBreak
+                     , Code
+                         "typ/layout/par-knuth-00.typ"
+                         ( line 21 , column 23 )
+                         (Ident (Identifier "story"))
+                     , ParBreak
+                     ]
+                 ]
+             ])))
+, ParBreak
+, Code
+    "typ/layout/par-knuth-00.typ"
+    ( line 25 , column 2 )
+    (FuncCall
+       (Ident (Identifier "grid"))
+       [ KeyValArg (Identifier "columns") (Literal (Int 3))
+       , KeyValArg (Identifier "gutter") (Literal (Numeric 10.0 Pt))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "column"))
+              [ NormalArg
+                  (Block
+                     (Content
+                        [ Text "Simple"
+                        , Space
+                        , Text "without"
+                        , Space
+                        , Text "hyphens"
+                        ]))
+              , NormalArg (Literal (String "simple"))
+              , NormalArg (Literal (Boolean False))
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "column"))
+              [ NormalArg
+                  (Block
+                     (Content
+                        [ Text "Simple" , Space , Text "with" , Space , Text "hyphens" ]))
+              , NormalArg (Literal (String "simple"))
+              , NormalArg (Literal (Boolean True))
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "column"))
+              [ NormalArg
+                  (Block
+                     (Content
+                        [ Text "Optimized"
+                        , Space
+                        , Text "with"
+                        , Space
+                        , Text "hyphens"
+                        ]))
+              , NormalArg (Literal (String "optimized"))
+              , NormalArg (Literal (Boolean True))
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 parbreak(), 
+                 parbreak(), 
+                 grid(children: (rect(body: { text(body: [
+], 
+                                                   font: "New Computer Modern"), 
+                                              text(body: [
+], 
+                                                   font: "New Computer Modern"), 
+                                              text(body: [
+], 
+                                                   font: "New Computer Modern", 
+                                                   hyphenate: false), 
+                                              strong(body: text(body: [Simple without hyphens], 
+                                                                font: "New Computer Modern")), 
+                                              text(body: [ ], 
+                                                   font: "New Computer Modern", 
+                                                   hyphenate: false), 
+                                              linebreak(), 
+                                              text(body: [
+In olden times when wishing still helped one, there lived a king whose
+daughters were all beautiful; and the youngest was so beautiful that the sun
+itself, which has seen so much, was astonished whenever it shone in her face.
+Close by the king’s castle lay a great dark red, and under an old lime-tree
+in the red was a well, and when the day was very warm, the king’s child
+went out into the red and sat down by the side of the cool fountain; and
+when she was bored she took a golden ball, and threw it up on high and caught
+it; and this ball was her favorite plaything.], 
+                                                   font: "New Computer Modern"), 
+                                              parbreak(), 
+                                              parbreak() }, 
+                                      fill: rgb(5%,5%,5%,100%), 
+                                      inset: 0.0pt, 
+                                      width: 132.0pt), 
+                                 rect(body: { text(body: [
+], 
+                                                   font: "New Computer Modern"), 
+                                              text(body: [
+], 
+                                                   font: "New Computer Modern"), 
+                                              text(body: [
+], 
+                                                   font: "New Computer Modern", 
+                                                   hyphenate: true), 
+                                              strong(body: text(body: [Simple with hyphens], 
+                                                                font: "New Computer Modern")), 
+                                              text(body: [ ], 
+                                                   font: "New Computer Modern", 
+                                                   hyphenate: true), 
+                                              linebreak(), 
+                                              text(body: [
+In olden times when wishing still helped one, there lived a king whose
+daughters were all beautiful; and the youngest was so beautiful that the sun
+itself, which has seen so much, was astonished whenever it shone in her face.
+Close by the king’s castle lay a great dark red, and under an old lime-tree
+in the red was a well, and when the day was very warm, the king’s child
+went out into the red and sat down by the side of the cool fountain; and
+when she was bored she took a golden ball, and threw it up on high and caught
+it; and this ball was her favorite plaything.], 
+                                                   font: "New Computer Modern"), 
+                                              parbreak(), 
+                                              parbreak() }, 
+                                      fill: rgb(5%,5%,5%,100%), 
+                                      inset: 0.0pt, 
+                                      width: 132.0pt), 
+                                 rect(body: { text(body: [
+], 
+                                                   font: "New Computer Modern"), 
+                                              text(body: [
+], 
+                                                   font: "New Computer Modern"), 
+                                              text(body: [
+], 
+                                                   font: "New Computer Modern", 
+                                                   hyphenate: true), 
+                                              strong(body: text(body: [Optimized with hyphens], 
+                                                                font: "New Computer Modern")), 
+                                              text(body: [ ], 
+                                                   font: "New Computer Modern", 
+                                                   hyphenate: true), 
+                                              linebreak(), 
+                                              text(body: [
+In olden times when wishing still helped one, there lived a king whose
+daughters were all beautiful; and the youngest was so beautiful that the sun
+itself, which has seen so much, was astonished whenever it shone in her face.
+Close by the king’s castle lay a great dark red, and under an old lime-tree
+in the red was a well, and when the day was very warm, the king’s child
+went out into the red and sat down by the side of the cool fountain; and
+when she was bored she took a golden ball, and threw it up on high and caught
+it; and this ball was her favorite plaything.], 
+                                                   font: "New Computer Modern"), 
+                                              parbreak(), 
+                                              parbreak() }, 
+                                      fill: rgb(5%,5%,5%,100%), 
+                                      inset: 0.0pt, 
+                                      width: 132.0pt)), 
+                      columns: 3, 
+                      gutter: 10.0pt), 
+                 parbreak() })
diff --git a/test/typ/layout/par-simple-00.out b/test/typ/layout/par-simple-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/par-simple-00.out
@@ -0,0 +1,488 @@
+--- parse tree ---
+[ Code
+    "typ/layout/par-simple-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/par-simple-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/par-simple-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/layout/par-simple-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 250.0 Pt))
+       , KeyValArg (Identifier "height") (Literal (Numeric 120.0 Pt))
+       ])
+, ParBreak
+, Text "But,"
+, Space
+, Text "soft!"
+, Space
+, Text "what"
+, Space
+, Text "light"
+, Space
+, Text "through"
+, Space
+, Text "yonder"
+, Space
+, Text "window"
+, Space
+, Text "breaks?"
+, Space
+, Text "It"
+, Space
+, Text "is"
+, Space
+, Text "the"
+, Space
+, Text "east,"
+, Space
+, Text "and"
+, Space
+, Text "Juliet"
+, SoftBreak
+, Text "is"
+, Space
+, Text "the"
+, Space
+, Text "sun"
+, Text "."
+, Space
+, Text "Arise,"
+, Space
+, Text "fair"
+, Space
+, Text "sun,"
+, Space
+, Text "and"
+, Space
+, Text "kill"
+, Space
+, Text "the"
+, Space
+, Text "envious"
+, Space
+, Text "moon,"
+, Space
+, Text "Who"
+, Space
+, Text "is"
+, Space
+, Text "already"
+, Space
+, Text "sick"
+, Space
+, Text "and"
+, SoftBreak
+, Text "pale"
+, Space
+, Text "with"
+, Space
+, Text "grief,"
+, Space
+, Text "That"
+, Space
+, Text "thou"
+, Space
+, Text "her"
+, Space
+, Text "maid"
+, Space
+, Text "art"
+, Space
+, Text "far"
+, Space
+, Text "more"
+, Space
+, Text "fair"
+, Space
+, Text "than"
+, Space
+, Text "she"
+, Text ":"
+, Space
+, Text "Be"
+, Space
+, Text "not"
+, Space
+, Text "her"
+, Space
+, Text "maid,"
+, SoftBreak
+, Text "since"
+, Space
+, Text "she"
+, Space
+, Text "is"
+, Space
+, Text "envious;"
+, Space
+, Text "Her"
+, Space
+, Text "vestal"
+, Space
+, Text "livery"
+, Space
+, Text "is"
+, Space
+, Text "but"
+, Space
+, Text "sick"
+, Space
+, Text "and"
+, Space
+, Text "green"
+, Space
+, Text "And"
+, Space
+, Text "none"
+, Space
+, Text "but"
+, Space
+, Text "fools"
+, SoftBreak
+, Text "do"
+, Space
+, Text "wear"
+, Space
+, Text "it;"
+, Space
+, Text "cast"
+, Space
+, Text "it"
+, Space
+, Text "off"
+, Text "."
+, Space
+, Text "It"
+, Space
+, Text "is"
+, Space
+, Text "my"
+, Space
+, Text "lady,"
+, Space
+, Text "O,"
+, Space
+, Text "it"
+, Space
+, Text "is"
+, Space
+, Text "my"
+, Space
+, Text "love!"
+, Space
+, Text "O,"
+, Space
+, Text "that"
+, Space
+, Text "she"
+, Space
+, Text "knew"
+, Space
+, Text "she"
+, SoftBreak
+, Text "were!"
+, Space
+, Text "She"
+, Space
+, Text "speaks"
+, Space
+, Text "yet"
+, Space
+, Text "she"
+, Space
+, Text "says"
+, Space
+, Text "nothing"
+, Text ":"
+, Space
+, Text "what"
+, Space
+, Text "of"
+, Space
+, Text "that?"
+, Space
+, Text "Her"
+, Space
+, Text "eye"
+, Space
+, Text "discourses;"
+, Space
+, Text "I"
+, Space
+, Text "will"
+, SoftBreak
+, Text "answer"
+, Space
+, Text "it"
+, Text "."
+, ParBreak
+, Text "I"
+, Space
+, Text "am"
+, Space
+, Text "too"
+, Space
+, Text "bold,"
+, Space
+, Quote '\''
+, Text "tis"
+, Space
+, Text "not"
+, Space
+, Text "to"
+, Space
+, Text "me"
+, Space
+, Text "she"
+, Space
+, Text "speaks"
+, Text ":"
+, Space
+, Text "Two"
+, Space
+, Text "of"
+, Space
+, Text "the"
+, Space
+, Text "fairest"
+, Space
+, Text "stars"
+, Space
+, Text "in"
+, Space
+, Text "all"
+, Space
+, Text "the"
+, SoftBreak
+, Text "heaven,"
+, Space
+, Text "Having"
+, Space
+, Text "some"
+, Space
+, Text "business,"
+, Space
+, Text "do"
+, Space
+, Text "entreat"
+, Space
+, Text "her"
+, Space
+, Text "eyes"
+, Space
+, Text "To"
+, Space
+, Text "twinkle"
+, Space
+, Text "in"
+, Space
+, Text "their"
+, Space
+, Text "spheres"
+, SoftBreak
+, Text "till"
+, Space
+, Text "they"
+, Space
+, Text "return"
+, Text "."
+, Space
+, Text "What"
+, Space
+, Text "if"
+, Space
+, Text "her"
+, Space
+, Text "eyes"
+, Space
+, Text "were"
+, Space
+, Text "there,"
+, Space
+, Text "they"
+, Space
+, Text "in"
+, Space
+, Text "her"
+, Space
+, Text "head?"
+, Space
+, Text "The"
+, Space
+, Text "brightness"
+, SoftBreak
+, Text "of"
+, Space
+, Text "her"
+, Space
+, Text "cheek"
+, Space
+, Text "would"
+, Space
+, Text "shame"
+, Space
+, Text "those"
+, Space
+, Text "stars,"
+, Space
+, Text "As"
+, Space
+, Text "daylight"
+, Space
+, Text "doth"
+, Space
+, Text "a"
+, Space
+, Text "lamp;"
+, Space
+, Text "her"
+, Space
+, Text "eyes"
+, Space
+, Text "in"
+, SoftBreak
+, Text "heaven"
+, Space
+, Text "Would"
+, Space
+, Text "through"
+, Space
+, Text "the"
+, Space
+, Text "airy"
+, Space
+, Text "region"
+, Space
+, Text "stream"
+, Space
+, Text "so"
+, Space
+, Text "bright"
+, Space
+, Text "That"
+, Space
+, Text "birds"
+, Space
+, Text "would"
+, Space
+, Text "sing"
+, Space
+, Text "and"
+, SoftBreak
+, Text "think"
+, Space
+, Text "it"
+, Space
+, Text "were"
+, Space
+, Text "not"
+, Space
+, Text "night"
+, Text "."
+, Space
+, Text "See,"
+, Space
+, Text "how"
+, Space
+, Text "she"
+, Space
+, Text "leans"
+, Space
+, Text "her"
+, Space
+, Text "cheek"
+, Space
+, Text "upon"
+, Space
+, Text "her"
+, Space
+, Text "hand!"
+, Space
+, Text "O,"
+, Space
+, Text "that"
+, Space
+, Text "I"
+, SoftBreak
+, Text "were"
+, Space
+, Text "a"
+, Space
+, Text "glove"
+, Space
+, Text "upon"
+, Space
+, Text "that"
+, Space
+, Text "hand,"
+, Space
+, Text "That"
+, Space
+, Text "I"
+, Space
+, Text "might"
+, Space
+, Text "touch"
+, Space
+, Text "that"
+, Space
+, Text "cheek!"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [But, soft! what light through yonder window breaks? It is the east, and Juliet
+is the sun. Arise, fair sun, and kill the envious moon, Who is already sick and
+pale with grief, That thou her maid art far more fair than she: Be not her maid,
+since she is envious; Her vestal livery is but sick and green And none but fools
+do wear it; cast it off. It is my lady, O, it is my love! O, that she knew she
+were! She speaks yet she says nothing: what of that? Her eye discourses; I will
+answer it.]), 
+                 parbreak(), 
+                 text(body: [I am too bold, ‘tis not to me she speaks: Two of the fairest stars in all the
+heaven, Having some business, do entreat her eyes To twinkle in their spheres
+till they return. What if her eyes were there, they in her head? The brightness
+of her cheek would shame those stars, As daylight doth a lamp; her eyes in
+heaven Would through the airy region stream so bright That birds would sing and
+think it were not night. See, how she leans her cheek upon her hand! O, that I
+were a glove upon that hand, That I might touch that cheek!]), 
+                 parbreak() })
diff --git a/test/typ/layout/place-00.out b/test/typ/layout/place-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/place-00.out
@@ -0,0 +1,241 @@
+--- parse tree ---
+[ Code
+    "typ/layout/place-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/place-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/place-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/layout/place-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page")) [ NormalArg (Literal (String "a8")) ])
+, SoftBreak
+, Code
+    "typ/layout/place-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "place"))
+       [ NormalArg
+           (Plus (Ident (Identifier "bottom")) (Ident (Identifier "center")))
+       , BlockArg [ Text "\169" , Space , Text "Typst" ]
+       ])
+, ParBreak
+, Heading 1 [ Text "Placement" ]
+, Code
+    "typ/layout/place-00.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "place"))
+       [ NormalArg (Ident (Identifier "right"))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "image"))
+              [ NormalArg (Literal (String "/assets/files/tiger.jpg"))
+              , KeyValArg (Identifier "width") (Literal (Numeric 1.8 Cm))
+              ])
+       ])
+, SoftBreak
+, Text "Hi"
+, Space
+, Text "there"
+, Text "."
+, Space
+, Text "This"
+, Space
+, Text "is"
+, Space
+, HardBreak
+, Text "a"
+, Space
+, Text "placed"
+, Space
+, Text "element"
+, Text "."
+, Space
+, HardBreak
+, Text "Unfortunately,"
+, Space
+, HardBreak
+, Text "the"
+, Space
+, Text "line"
+, Space
+, Text "breaks"
+, Space
+, Text "still"
+, Space
+, Text "had"
+, Space
+, Text "to"
+, Space
+, Text "be"
+, Space
+, Text "inserted"
+, Space
+, Text "manually"
+, Text "."
+, ParBreak
+, Code
+    "typ/layout/place-00.typ"
+    ( line 12 , column 2 )
+    (FuncCall
+       (Ident (Identifier "stack"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
+              , KeyValArg (Identifier "height") (Literal (Numeric 10.0 Pt))
+              , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "place"))
+              [ NormalArg (Ident (Identifier "right"))
+              , KeyValArg (Identifier "dy") (Literal (Numeric 1.5 Pt))
+              , BlockArg [ Text "ABC" ]
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg (Identifier "fill") (Ident (Identifier "green"))
+              , KeyValArg (Identifier "height") (Literal (Numeric 10.0 Pt))
+              , KeyValArg (Identifier "width") (Literal (Numeric 80.0 Percent))
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg (Identifier "fill") (Ident (Identifier "red"))
+              , KeyValArg (Identifier "height") (Literal (Numeric 10.0 Pt))
+              , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
+              ])
+       , NormalArg (Literal (Numeric 10.0 Pt))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "block"))
+              [ BlockArg
+                  [ SoftBreak
+                  , Code
+                      "typ/layout/place-00.typ"
+                      ( line 19 , column 6 )
+                      (FuncCall
+                         (Ident (Identifier "place"))
+                         [ NormalArg (Ident (Identifier "center"))
+                         , KeyValArg (Identifier "dx") (Negated (Literal (Numeric 7.0 Pt)))
+                         , KeyValArg (Identifier "dy") (Negated (Literal (Numeric 5.0 Pt)))
+                         , BlockArg [ Text "Hello" ]
+                         ])
+                  , SoftBreak
+                  , Code
+                      "typ/layout/place-00.typ"
+                      ( line 20 , column 6 )
+                      (FuncCall
+                         (Ident (Identifier "place"))
+                         [ NormalArg (Ident (Identifier "center"))
+                         , KeyValArg (Identifier "dx") (Literal (Numeric 7.0 Pt))
+                         , KeyValArg (Identifier "dy") (Literal (Numeric 5.0 Pt))
+                         , BlockArg [ Text "Hello" ]
+                         ])
+                  , SoftBreak
+                  , Text "Hello"
+                  , Space
+                  , Code
+                      "typ/layout/place-00.typ"
+                      ( line 21 , column 12 )
+                      (FuncCall
+                         (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 1.0 Fr)) ])
+                  , Space
+                  , Text "Hello"
+                  , ParBreak
+                  ]
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 place(alignment: Axes(center, bottom), 
+                       body: text(body: [© Typst])), 
+                 parbreak(), 
+                 heading(body: text(body: [Placement]), 
+                         level: 1), 
+                 place(alignment: right, 
+                       body: image(path: "/assets/files/tiger.jpg", 
+                                   width: 1.8cm)), 
+                 text(body: [
+Hi there. This is ]), 
+                 linebreak(), 
+                 text(body: [a placed element. ]), 
+                 linebreak(), 
+                 text(body: [Unfortunately, ]), 
+                 linebreak(), 
+                 text(body: [the line breaks still had to be inserted manually.]), 
+                 parbreak(), 
+                 stack(children: (rect(fill: rgb(13%,61%,67%,100%), 
+                                       height: 10.0pt, 
+                                       width: 100%), 
+                                  place(alignment: right, 
+                                        body: text(body: [ABC]), 
+                                        dy: 1.5pt), 
+                                  rect(fill: rgb(18%,80%,25%,100%), 
+                                       height: 10.0pt, 
+                                       width: 80%), 
+                                  rect(fill: rgb(100%,25%,21%,100%), 
+                                       height: 10.0pt, 
+                                       width: 100%), 
+                                  10.0pt, 
+                                  block(body: { text(body: [
+]), 
+                                                place(alignment: center, 
+                                                      body: text(body: [Hello]), 
+                                                      dx: -7.0pt, 
+                                                      dy: -5.0pt), 
+                                                text(body: [
+]), 
+                                                place(alignment: center, 
+                                                      body: text(body: [Hello]), 
+                                                      dx: 7.0pt, 
+                                                      dy: 5.0pt), 
+                                                text(body: [
+Hello ]), 
+                                                h(amount: 1.0fr), 
+                                                text(body: [ Hello]), 
+                                                parbreak() }))), 
+                 parbreak() })
diff --git a/test/typ/layout/place-01.out b/test/typ/layout/place-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/place-01.out
@@ -0,0 +1,77 @@
+--- parse tree ---
+[ Code
+    "typ/layout/place-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/place-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/place-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/place-01.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ NormalArg (Literal (String "a8"))
+       , KeyValArg (Identifier "height") (Literal (Numeric 60.0 Pt))
+       ])
+, ParBreak
+, Text "First"
+, ParBreak
+, Code
+    "typ/layout/place-01.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "place"))
+       [ NormalArg
+           (Plus (Ident (Identifier "bottom")) (Ident (Identifier "right")))
+       , BlockArg [ Text "Placed" ]
+       ])
+, ParBreak
+, Text "Second"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [First]), 
+                 parbreak(), 
+                 place(alignment: Axes(right, bottom), 
+                       body: text(body: [Placed])), 
+                 parbreak(), 
+                 text(body: [Second]), 
+                 parbreak() })
diff --git a/test/typ/layout/place-background-00.out b/test/typ/layout/place-background-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/place-background-00.out
@@ -0,0 +1,131 @@
+--- parse tree ---
+[ Code
+    "typ/layout/place-background-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/place-background-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/place-background-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/layout/place-background-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "paper") (Literal (String "a10"))
+       , KeyValArg (Identifier "flipped") (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/layout/place-background-00.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "fill") (Ident (Identifier "white")) ])
+, SoftBreak
+, Code
+    "typ/layout/place-background-00.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "place"))
+       [ KeyValArg (Identifier "dx") (Negated (Literal (Numeric 10.0 Pt)))
+       , KeyValArg (Identifier "dy") (Negated (Literal (Numeric 10.0 Pt)))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "image"))
+              [ NormalArg (Literal (String "/tiger.jpg"))
+              , KeyValArg (Identifier "fit") (Literal (String "cover"))
+              , KeyValArg
+                  (Identifier "width")
+                  (Plus
+                     (Literal (Numeric 100.0 Percent)) (Literal (Numeric 20.0 Pt)))
+              , KeyValArg
+                  (Identifier "height")
+                  (Plus
+                     (Literal (Numeric 100.0 Percent)) (Literal (Numeric 20.0 Pt)))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/layout/place-background-00.typ"
+    ( line 14 , column 2 )
+    (FuncCall
+       (Ident (Identifier "align"))
+       [ NormalArg
+           (Plus (Ident (Identifier "bottom")) (Ident (Identifier "right")))
+       , BlockArg
+           [ SoftBreak
+           , Emph [ Text "Welcome" , Space , Text "to" ]
+           , Space
+           , Code
+               "typ/layout/place-background-00.typ"
+               ( line 15 , column 17 )
+               (FuncCall
+                  (Ident (Identifier "underline"))
+                  [ BlockArg [ Strong [ Text "Tigerland" ] ] ])
+           , ParBreak
+           ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+], 
+                      fill: rgb(100%,100%,100%,100%)), 
+                 place(body: image(fit: "cover", 
+                                   height: 20.0pt + 100%, 
+                                   path: "/tiger.jpg", 
+                                   width: 20.0pt + 100%), 
+                       dx: -10.0pt, 
+                       dy: -10.0pt), 
+                 text(body: [
+], 
+                      fill: rgb(100%,100%,100%,100%)), 
+                 align(alignment: Axes(right, bottom), 
+                       body: { text(body: [
+], 
+                                    fill: rgb(100%,100%,100%,100%)), 
+                               emph(body: text(body: [Welcome to], 
+                                               fill: rgb(100%,100%,100%,100%))), 
+                               text(body: [ ], 
+                                    fill: rgb(100%,100%,100%,100%)), 
+                               underline(body: strong(body: text(body: [Tigerland], 
+                                                                 fill: rgb(100%,100%,100%,100%)))), 
+                               parbreak() }), 
+                 parbreak() })
diff --git a/test/typ/layout/repeat-00.out b/test/typ/layout/repeat-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/repeat-00.out
@@ -0,0 +1,172 @@
+--- parse tree ---
+[ Code
+    "typ/layout/repeat-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/repeat-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/repeat-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/repeat-00.typ"
+    ( line 3 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "sections")))
+       (Array
+          [ Reg
+              (Array
+                 [ Reg (Literal (String "Introduction")) , Reg (Literal (Int 1)) ])
+          , Reg
+              (Array
+                 [ Reg (Literal (String "Approach")) , Reg (Literal (Int 1)) ])
+          , Reg
+              (Array
+                 [ Reg (Literal (String "Evaluation")) , Reg (Literal (Int 3)) ])
+          , Reg
+              (Array
+                 [ Reg (Literal (String "Discussion")) , Reg (Literal (Int 15)) ])
+          , Reg
+              (Array
+                 [ Reg (Literal (String "Related Work")) , Reg (Literal (Int 16)) ])
+          , Reg
+              (Array
+                 [ Reg (Literal (String "Conclusion")) , Reg (Literal (Int 253)) ])
+          ]))
+, ParBreak
+, Code
+    "typ/layout/repeat-00.typ"
+    ( line 12 , column 2 )
+    (For
+       (BasicBind (Just (Identifier "section")))
+       (Ident (Identifier "sections"))
+       (Block
+          (Content
+             [ SoftBreak
+             , Code
+                 "typ/layout/repeat-00.typ"
+                 ( line 13 , column 4 )
+                 (FuncCall
+                    (FieldAccess
+                       (Ident (Identifier "at")) (Ident (Identifier "section")))
+                    [ NormalArg (Literal (Int 0)) ])
+             , Space
+             , Code
+                 "typ/layout/repeat-00.typ"
+                 ( line 13 , column 19 )
+                 (FuncCall
+                    (Ident (Identifier "box"))
+                    [ KeyValArg (Identifier "width") (Literal (Numeric 1.0 Fr))
+                    , NormalArg
+                        (FuncCall (Ident (Identifier "repeat")) [ BlockArg [ Text "." ] ])
+                    ])
+             , Space
+             , Code
+                 "typ/layout/repeat-00.typ"
+                 ( line 13 , column 47 )
+                 (FuncCall
+                    (FieldAccess
+                       (Ident (Identifier "at")) (Ident (Identifier "section")))
+                    [ NormalArg (Literal (Int 1)) ])
+             , Space
+             , HardBreak
+             ])))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 text(body: [Introduction]), 
+                 text(body: [ ]), 
+                 box(body: repeat(body: text(body: [.])), 
+                     width: 1.0fr), 
+                 text(body: [ ]), 
+                 text(body: [1]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 text(body: [
+]), 
+                 text(body: [Approach]), 
+                 text(body: [ ]), 
+                 box(body: repeat(body: text(body: [.])), 
+                     width: 1.0fr), 
+                 text(body: [ ]), 
+                 text(body: [1]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 text(body: [
+]), 
+                 text(body: [Evaluation]), 
+                 text(body: [ ]), 
+                 box(body: repeat(body: text(body: [.])), 
+                     width: 1.0fr), 
+                 text(body: [ ]), 
+                 text(body: [3]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 text(body: [
+]), 
+                 text(body: [Discussion]), 
+                 text(body: [ ]), 
+                 box(body: repeat(body: text(body: [.])), 
+                     width: 1.0fr), 
+                 text(body: [ ]), 
+                 text(body: [15]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 text(body: [
+]), 
+                 text(body: [Related Work]), 
+                 text(body: [ ]), 
+                 box(body: repeat(body: text(body: [.])), 
+                     width: 1.0fr), 
+                 text(body: [ ]), 
+                 text(body: [16]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 text(body: [
+]), 
+                 text(body: [Conclusion]), 
+                 text(body: [ ]), 
+                 box(body: repeat(body: text(body: [.])), 
+                     width: 1.0fr), 
+                 text(body: [ ]), 
+                 text(body: [253]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 parbreak() })
diff --git a/test/typ/layout/repeat-01.out b/test/typ/layout/repeat-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/repeat-01.out
@@ -0,0 +1,76 @@
+--- parse tree ---
+[ Code
+    "typ/layout/repeat-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/repeat-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/repeat-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/repeat-01.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "lang") (Literal (String "ar")) ])
+, SoftBreak
+, Text "\1605\1602\1583\1605\1577"
+, Space
+, Code
+    "typ/layout/repeat-01.typ"
+    ( line 4 , column 8 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 1.0 Fr))
+       , NormalArg
+           (FuncCall (Ident (Identifier "repeat")) [ BlockArg [ Text "." ] ])
+       ])
+, Space
+, Text "15"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+مقدمة ], 
+                      lang: "ar"), 
+                 box(body: repeat(body: text(body: [.], 
+                                             lang: "ar")), 
+                     width: 1.0fr), 
+                 text(body: [ 15], 
+                      lang: "ar"), 
+                 parbreak() })
diff --git a/test/typ/layout/repeat-02.out b/test/typ/layout/repeat-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/repeat-02.out
@@ -0,0 +1,65 @@
+--- parse tree ---
+[ Code
+    "typ/layout/repeat-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/repeat-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/repeat-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "A"
+, Space
+, Code
+    "typ/layout/repeat-02.typ"
+    ( line 3 , column 4 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 1.0 Fr))
+       , NormalArg
+           (FuncCall (Ident (Identifier "repeat")) [ BlockArg [] ])
+       ])
+, Space
+, Text "B"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [A ]), 
+                 box(body: repeat(body: {  }), 
+                     width: 1.0fr), 
+                 text(body: [ B]), 
+                 parbreak() })
diff --git a/test/typ/layout/repeat-03.out b/test/typ/layout/repeat-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/repeat-03.out
@@ -0,0 +1,62 @@
+--- parse tree ---
+[ Code
+    "typ/layout/repeat-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/repeat-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/repeat-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/repeat-03.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "repeat"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg (Identifier "width") (Literal (Numeric 2.0 Em))
+              , KeyValArg (Identifier "height") (Literal (Numeric 1.0 Em))
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 repeat(body: rect(height: 1.0em, 
+                                   width: 2.0em)), 
+                 parbreak() })
diff --git a/test/typ/layout/repeat-04.out b/test/typ/layout/repeat-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/repeat-04.out
@@ -0,0 +1,141 @@
+--- parse tree ---
+[ Code
+    "typ/layout/repeat-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/repeat-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/repeat-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "A"
+, Code
+    "typ/layout/repeat-04.typ"
+    ( line 3 , column 3 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 1.0 Fr))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "repeat"))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "rect"))
+                     [ KeyValArg (Identifier "width") (Literal (Numeric 6.0 Em))
+                     , KeyValArg (Identifier "height") (Literal (Numeric 0.7 Em))
+                     ])
+              ])
+       ])
+, Text "B"
+, ParBreak
+, Code
+    "typ/layout/repeat-04.typ"
+    ( line 5 , column 2 )
+    (Set
+       (Ident (Identifier "align"))
+       [ NormalArg (Ident (Identifier "center")) ])
+, SoftBreak
+, Text "A"
+, Code
+    "typ/layout/repeat-04.typ"
+    ( line 6 , column 3 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 1.0 Fr))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "repeat"))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "rect"))
+                     [ KeyValArg (Identifier "width") (Literal (Numeric 6.0 Em))
+                     , KeyValArg (Identifier "height") (Literal (Numeric 0.7 Em))
+                     ])
+              ])
+       ])
+, Text "B"
+, ParBreak
+, Code
+    "typ/layout/repeat-04.typ"
+    ( line 8 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "dir") (Ident (Identifier "rtl")) ])
+, SoftBreak
+, Text "\1585\1610\1580\1610\1606"
+, Code
+    "typ/layout/repeat-04.typ"
+    ( line 9 , column 7 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 1.0 Fr))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "repeat"))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "rect"))
+                     [ KeyValArg (Identifier "width") (Literal (Numeric 4.0 Em))
+                     , KeyValArg (Identifier "height") (Literal (Numeric 0.7 Em))
+                     ])
+              ])
+       ])
+, Text "\1587\1608\1606"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [A]), 
+                 box(body: repeat(body: rect(height: 0.7em, 
+                                             width: 6.0em)), 
+                     width: 1.0fr), 
+                 text(body: [B]), 
+                 parbreak(), 
+                 text(body: [
+A]), 
+                 box(body: repeat(body: rect(height: 0.7em, 
+                                             width: 6.0em)), 
+                     width: 1.0fr), 
+                 text(body: [B]), 
+                 parbreak(), 
+                 text(body: [
+ريجين], 
+                      dir: rtl), 
+                 box(body: repeat(body: rect(height: 0.7em, 
+                                             width: 4.0em)), 
+                     width: 1.0fr), 
+                 text(body: [سون], dir: rtl), 
+                 parbreak() })
diff --git a/test/typ/layout/repeat-05.out b/test/typ/layout/repeat-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/repeat-05.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/layout/spacing-00.out b/test/typ/layout/spacing-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/spacing-00.out
@@ -0,0 +1,200 @@
+--- parse tree ---
+[ Code
+    "typ/layout/spacing-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/spacing-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/spacing-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/spacing-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ BlockArg [ Text "A" , Space , HardBreak , Text "B" ] ])
+, Space
+, Code
+    "typ/layout/spacing-00.typ"
+    ( line 3 , column 14 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ BlockArg
+           [ Text "A"
+           , Space
+           , Code
+               "typ/layout/spacing-00.typ"
+               ( line 3 , column 21 )
+               (FuncCall
+                  (Ident (Identifier "v"))
+                  [ NormalArg (Literal (Numeric 0.65 Em))
+                  , KeyValArg (Identifier "weak") (Literal (Boolean True))
+                  ])
+           , Space
+           , Text "B"
+           ]
+       ])
+, ParBreak
+, Comment
+, Text "Inv"
+, Code
+    "typ/layout/spacing-00.typ"
+    ( line 6 , column 5 )
+    (FuncCall
+       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 0.0 Pt)) ])
+, Text "isible"
+, ParBreak
+, Comment
+, Text "Add"
+, Space
+, Code
+    "typ/layout/spacing-00.typ"
+    ( line 9 , column 6 )
+    (FuncCall
+       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 10.0 Pt)) ])
+, Space
+, Code
+    "typ/layout/spacing-00.typ"
+    ( line 9 , column 15 )
+    (FuncCall
+       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 10.0 Pt)) ])
+, Space
+, Text "up"
+, ParBreak
+, Comment
+, Code
+    "typ/layout/spacing-00.typ"
+    ( line 12 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "x")))
+       (Minus
+          (Literal (Numeric 25.0 Percent)) (Literal (Numeric 4.0 Pt))))
+, SoftBreak
+, Text "|"
+, Code
+    "typ/layout/spacing-00.typ"
+    ( line 13 , column 3 )
+    (FuncCall
+       (Ident (Identifier "h")) [ NormalArg (Ident (Identifier "x")) ])
+, Text "|"
+, Code
+    "typ/layout/spacing-00.typ"
+    ( line 13 , column 9 )
+    (FuncCall
+       (Ident (Identifier "h")) [ NormalArg (Ident (Identifier "x")) ])
+, Text "|"
+, Code
+    "typ/layout/spacing-00.typ"
+    ( line 13 , column 15 )
+    (FuncCall
+       (Ident (Identifier "h")) [ NormalArg (Ident (Identifier "x")) ])
+, Text "|"
+, Code
+    "typ/layout/spacing-00.typ"
+    ( line 13 , column 21 )
+    (FuncCall
+       (Ident (Identifier "h")) [ NormalArg (Ident (Identifier "x")) ])
+, Text "|"
+, ParBreak
+, Comment
+, Text "|"
+, Space
+, Code
+    "typ/layout/spacing-00.typ"
+    ( line 16 , column 4 )
+    (FuncCall
+       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 1.0 Fr)) ])
+, Space
+, Text "|"
+, Space
+, Code
+    "typ/layout/spacing-00.typ"
+    ( line 16 , column 14 )
+    (FuncCall
+       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 2.0 Fr)) ])
+, Space
+, Text "|"
+, Space
+, Code
+    "typ/layout/spacing-00.typ"
+    ( line 16 , column 24 )
+    (FuncCall
+       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 1.0 Fr)) ])
+, Space
+, Text "|"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 box(body: { text(body: [A ]), 
+                             linebreak(), 
+                             text(body: [B]) }), 
+                 text(body: [ ]), 
+                 box(body: { text(body: [A ]), 
+                             v(amount: 0.65em, 
+                               weak: true), 
+                             text(body: [ B]) }), 
+                 parbreak(), 
+                 text(body: [Inv]), 
+                 h(amount: 0.0pt), 
+                 text(body: [isible]), 
+                 parbreak(), 
+                 text(body: [Add ]), 
+                 h(amount: 10.0pt), 
+                 text(body: [ ]), 
+                 h(amount: 10.0pt), 
+                 text(body: [ up]), 
+                 parbreak(), 
+                 text(body: [
+|]), 
+                 h(amount: -4.0pt + 25%), 
+                 text(body: [|]), 
+                 h(amount: -4.0pt + 25%), 
+                 text(body: [|]), 
+                 h(amount: -4.0pt + 25%), 
+                 text(body: [|]), 
+                 h(amount: -4.0pt + 25%), 
+                 text(body: [|]), 
+                 parbreak(), 
+                 text(body: [| ]), 
+                 h(amount: 1.0fr), 
+                 text(body: [ | ]), 
+                 h(amount: 2.0fr), 
+                 text(body: [ | ]), 
+                 h(amount: 1.0fr), 
+                 text(body: [ |]), 
+                 parbreak() })
diff --git a/test/typ/layout/spacing-01.out b/test/typ/layout/spacing-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/spacing-01.out
@@ -0,0 +1,99 @@
+--- parse tree ---
+[ Code
+    "typ/layout/spacing-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/spacing-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/spacing-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/spacing-01.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "align"))
+       [ NormalArg (Ident (Identifier "right")) ])
+, SoftBreak
+, Text "A"
+, Space
+, Code
+    "typ/layout/spacing-01.typ"
+    ( line 4 , column 4 )
+    (FuncCall
+       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 0.0 Pt)) ])
+, Space
+, Text "B"
+, Space
+, Code
+    "typ/layout/spacing-01.typ"
+    ( line 4 , column 14 )
+    (FuncCall
+       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 0.0 Pt)) ])
+, Space
+, HardBreak
+, Text "A"
+, Space
+, Text "B"
+, Space
+, HardBreak
+, Text "A"
+, Space
+, Code
+    "typ/layout/spacing-01.typ"
+    ( line 6 , column 4 )
+    (FuncCall
+       (Ident (Identifier "h"))
+       [ NormalArg (Negated (Literal (Numeric 1.0 Fr))) ])
+, Space
+, Text "B"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+A ]), 
+                 h(amount: 0.0pt), 
+                 text(body: [ B ]), 
+                 h(amount: 0.0pt), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 text(body: [A B ]), 
+                 linebreak(), 
+                 text(body: [A ]), 
+                 h(amount: -1.0fr), 
+                 text(body: [ B]), 
+                 parbreak() })
diff --git a/test/typ/layout/spacing-02.out b/test/typ/layout/spacing-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/spacing-02.out
@@ -0,0 +1,83 @@
+--- parse tree ---
+[ Code
+    "typ/layout/spacing-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/spacing-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/spacing-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/spacing-02.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "dir") (Ident (Identifier "rtl")) ])
+, SoftBreak
+, Text "A"
+, Space
+, Code
+    "typ/layout/spacing-02.typ"
+    ( line 4 , column 4 )
+    (FuncCall
+       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 10.0 Pt)) ])
+, Space
+, Text "B"
+, Space
+, HardBreak
+, Text "A"
+, Space
+, Code
+    "typ/layout/spacing-02.typ"
+    ( line 5 , column 4 )
+    (FuncCall
+       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 1.0 Fr)) ])
+, Space
+, Text "B"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+A ], dir: rtl), 
+                 h(amount: 10.0pt), 
+                 text(body: [ B ], dir: rtl), 
+                 linebreak(), 
+                 text(body: [A ], dir: rtl), 
+                 h(amount: 1.0fr), 
+                 text(body: [ B], dir: rtl), 
+                 parbreak() })
diff --git a/test/typ/layout/spacing-03.out b/test/typ/layout/spacing-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/spacing-03.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/layout/stack-1-00.out b/test/typ/layout/stack-1-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/stack-1-00.out
@@ -0,0 +1,178 @@
+--- parse tree ---
+[ Code
+    "typ/layout/stack-1-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/stack-1-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/stack-1-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/stack-1-00.typ"
+    ( line 3 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "widths")))
+       (Array
+          [ Reg (Literal (Numeric 30.0 Pt))
+          , Reg (Literal (Numeric 20.0 Pt))
+          , Reg (Literal (Numeric 40.0 Pt))
+          , Reg (Literal (Numeric 15.0 Pt))
+          , Reg (Literal (Numeric 30.0 Pt))
+          , Reg (Literal (Numeric 50.0 Percent))
+          , Reg (Literal (Numeric 20.0 Pt))
+          , Reg (Literal (Numeric 100.0 Percent))
+          ]))
+, ParBreak
+, Code
+    "typ/layout/stack-1-00.typ"
+    ( line 8 , column 2 )
+    (LetFunc
+       (Identifier "shaded")
+       [ NormalParam (Identifier "i") , NormalParam (Identifier "w") ]
+       (Block
+          (CodeBlock
+             [ Let
+                 (BasicBind (Just (Identifier "v")))
+                 (Times
+                    (Plus (Ident (Identifier "i")) (Literal (Int 1)))
+                    (Literal (Numeric 10.0 Percent)))
+             , FuncCall
+                 (Ident (Identifier "rect"))
+                 [ KeyValArg (Identifier "width") (Ident (Identifier "w"))
+                 , KeyValArg (Identifier "height") (Literal (Numeric 10.0 Pt))
+                 , KeyValArg
+                     (Identifier "fill")
+                     (FuncCall
+                        (Ident (Identifier "rgb"))
+                        [ NormalArg (Ident (Identifier "v"))
+                        , NormalArg (Ident (Identifier "v"))
+                        , NormalArg (Ident (Identifier "v"))
+                        ])
+                 ]
+             ])))
+, ParBreak
+, Code
+    "typ/layout/stack-1-00.typ"
+    ( line 13 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "items")))
+       (For
+          (DestructuringBind
+             [ Simple (Just (Identifier "i"))
+             , Simple (Just (Identifier "w"))
+             ])
+          (FuncCall
+             (FieldAccess
+                (Ident (Identifier "enumerate")) (Ident (Identifier "widths")))
+             [])
+          (Block
+             (CodeBlock
+                [ Array
+                    [ Reg
+                        (FuncCall
+                           (Ident (Identifier "align"))
+                           [ NormalArg (Ident (Identifier "right"))
+                           , NormalArg
+                               (FuncCall
+                                  (Ident (Identifier "shaded"))
+                                  [ NormalArg (Ident (Identifier "i"))
+                                  , NormalArg (Ident (Identifier "w"))
+                                  ])
+                           ])
+                    ]
+                ]))))
+, ParBreak
+, Code
+    "typ/layout/stack-1-00.typ"
+    ( line 17 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 50.0 Pt))
+       , KeyValArg (Identifier "margin") (Literal (Numeric 0.0 Pt))
+       ])
+, SoftBreak
+, Code
+    "typ/layout/stack-1-00.typ"
+    ( line 18 , column 2 )
+    (FuncCall
+       (Ident (Identifier "stack"))
+       [ KeyValArg (Identifier "dir") (Ident (Identifier "btt"))
+       , SpreadArg (Ident (Identifier "items"))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 parbreak(), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 stack(children: (align(alignment: right, 
+                                        body: rect(fill: rgb(10%,10%,10%,100%), 
+                                                   height: 10.0pt, 
+                                                   width: 30.0pt)), 
+                                  align(alignment: right, 
+                                        body: rect(fill: rgb(20%,20%,20%,100%), 
+                                                   height: 10.0pt, 
+                                                   width: 20.0pt)), 
+                                  align(alignment: right, 
+                                        body: rect(fill: rgb(30%,30%,30%,100%), 
+                                                   height: 10.0pt, 
+                                                   width: 40.0pt)), 
+                                  align(alignment: right, 
+                                        body: rect(fill: rgb(40%,40%,40%,100%), 
+                                                   height: 10.0pt, 
+                                                   width: 15.0pt)), 
+                                  align(alignment: right, 
+                                        body: rect(fill: rgb(50%,50%,50%,100%), 
+                                                   height: 10.0pt, 
+                                                   width: 30.0pt)), 
+                                  align(alignment: right, 
+                                        body: rect(fill: rgb(60%,60%,60%,100%), 
+                                                   height: 10.0pt, 
+                                                   width: 50%)), 
+                                  align(alignment: right, 
+                                        body: rect(fill: rgb(70%,70%,70%,100%), 
+                                                   height: 10.0pt, 
+                                                   width: 20.0pt)), 
+                                  align(alignment: right, 
+                                        body: rect(fill: rgb(80%,80%,80%,100%), 
+                                                   height: 10.0pt, 
+                                                   width: 100%))), 
+                       dir: btt), 
+                 parbreak() })
diff --git a/test/typ/layout/stack-1-01.out b/test/typ/layout/stack-1-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/stack-1-01.out
@@ -0,0 +1,136 @@
+--- parse tree ---
+[ Code
+    "typ/layout/stack-1-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/stack-1-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/stack-1-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/stack-1-01.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 50.0 Pt))
+       , KeyValArg (Identifier "margin") (Literal (Numeric 0.0 Pt))
+       ])
+, ParBreak
+, Code
+    "typ/layout/stack-1-01.typ"
+    ( line 5 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "x")))
+       (FuncCall
+          (Ident (Identifier "square"))
+          [ KeyValArg (Identifier "size") (Literal (Numeric 10.0 Pt))
+          , KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
+          ]))
+, SoftBreak
+, Code
+    "typ/layout/stack-1-01.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "stack"))
+       [ KeyValArg (Identifier "spacing") (Literal (Numeric 5.0 Pt))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "stack"))
+              [ KeyValArg (Identifier "dir") (Ident (Identifier "rtl"))
+              , KeyValArg (Identifier "spacing") (Literal (Numeric 5.0 Pt))
+              , NormalArg (Ident (Identifier "x"))
+              , NormalArg (Ident (Identifier "x"))
+              , NormalArg (Ident (Identifier "x"))
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "stack"))
+              [ KeyValArg (Identifier "dir") (Ident (Identifier "ltr"))
+              , NormalArg (Ident (Identifier "x"))
+              , NormalArg (Literal (Numeric 20.0 Percent))
+              , NormalArg (Ident (Identifier "x"))
+              , NormalArg (Literal (Numeric 20.0 Percent))
+              , NormalArg (Ident (Identifier "x"))
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "stack"))
+              [ KeyValArg (Identifier "dir") (Ident (Identifier "ltr"))
+              , KeyValArg (Identifier "spacing") (Literal (Numeric 5.0 Pt))
+              , NormalArg (Ident (Identifier "x"))
+              , NormalArg (Ident (Identifier "x"))
+              , NormalArg (Literal (Numeric 7.0 Pt))
+              , NormalArg (Literal (Numeric 3.0 Pt))
+              , NormalArg (Ident (Identifier "x"))
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 stack(children: (stack(children: (square(fill: rgb(13%,61%,67%,100%), 
+                                                          size: 10.0pt), 
+                                                   square(fill: rgb(13%,61%,67%,100%), 
+                                                          size: 10.0pt), 
+                                                   square(fill: rgb(13%,61%,67%,100%), 
+                                                          size: 10.0pt)), 
+                                        dir: rtl, 
+                                        spacing: 5.0pt), 
+                                  stack(children: (square(fill: rgb(13%,61%,67%,100%), 
+                                                          size: 10.0pt), 
+                                                   20%, 
+                                                   square(fill: rgb(13%,61%,67%,100%), 
+                                                          size: 10.0pt), 
+                                                   20%, 
+                                                   square(fill: rgb(13%,61%,67%,100%), 
+                                                          size: 10.0pt)), 
+                                        dir: ltr), 
+                                  stack(children: (square(fill: rgb(13%,61%,67%,100%), 
+                                                          size: 10.0pt), 
+                                                   square(fill: rgb(13%,61%,67%,100%), 
+                                                          size: 10.0pt), 
+                                                   7.0pt, 
+                                                   3.0pt, 
+                                                   square(fill: rgb(13%,61%,67%,100%), 
+                                                          size: 10.0pt)), 
+                                        dir: ltr, 
+                                        spacing: 5.0pt)), 
+                       spacing: 5.0pt), 
+                 parbreak() })
diff --git a/test/typ/layout/stack-1-02.out b/test/typ/layout/stack-1-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/stack-1-02.out
@@ -0,0 +1,90 @@
+--- parse tree ---
+[ Code
+    "typ/layout/stack-1-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/stack-1-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/stack-1-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/stack-1-02.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 50.0 Pt))
+       , KeyValArg (Identifier "height") (Literal (Numeric 30.0 Pt))
+       , KeyValArg (Identifier "margin") (Literal (Numeric 0.0 Pt))
+       ])
+, SoftBreak
+, Code
+    "typ/layout/stack-1-02.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "stack"))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "rect"))
+                     [ KeyValArg (Identifier "width") (Literal (Numeric 40.0 Pt))
+                     , KeyValArg (Identifier "height") (Literal (Numeric 20.0 Pt))
+                     , KeyValArg (Identifier "fill") (Ident (Identifier "green"))
+                     ])
+              , NormalArg
+                  (FuncCall
+                     (Ident (Identifier "rect"))
+                     [ KeyValArg (Identifier "width") (Literal (Numeric 30.0 Pt))
+                     , KeyValArg (Identifier "height") (Literal (Numeric 13.0 Pt))
+                     , KeyValArg (Identifier "fill") (Ident (Identifier "red"))
+                     ])
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 box(body: stack(children: (rect(fill: rgb(18%,80%,25%,100%), 
+                                                 height: 20.0pt, 
+                                                 width: 40.0pt), 
+                                            rect(fill: rgb(100%,25%,21%,100%), 
+                                                 height: 13.0pt, 
+                                                 width: 30.0pt)))), 
+                 parbreak() })
diff --git a/test/typ/layout/stack-1-03.out b/test/typ/layout/stack-1-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/stack-1-03.out
@@ -0,0 +1,130 @@
+--- parse tree ---
+[ Code
+    "typ/layout/stack-1-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/stack-1-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/stack-1-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/stack-1-03.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 50.0 Pt))
+       , KeyValArg (Identifier "margin") (Literal (Numeric 5.0 Pt))
+       ])
+, SoftBreak
+, Code
+    "typ/layout/stack-1-03.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "block"))
+       [ KeyValArg (Identifier "spacing") (Literal (Numeric 5.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/layout/stack-1-03.typ"
+    ( line 5 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ NormalArg (Literal (Numeric 8.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/layout/stack-1-03.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "stack"))
+       [ KeyValArg (Identifier "dir") (Ident (Identifier "rtl"))
+       , NormalArg (Literal (Numeric 1.0 Fr))
+       , NormalArg (Block (Content [ Text "A" ]))
+       , NormalArg (Literal (Numeric 1.0 Fr))
+       , NormalArg (Block (Content [ Text "B" ]))
+       , NormalArg (Block (Content [ Text "C" ]))
+       ])
+, SoftBreak
+, Code
+    "typ/layout/stack-1-03.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "stack"))
+       [ KeyValArg (Identifier "dir") (Ident (Identifier "rtl"))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "align"))
+              [ NormalArg (Ident (Identifier "center"))
+              , NormalArg (Block (Content [ Text "A" ]))
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "align"))
+              [ NormalArg (Ident (Identifier "left"))
+              , NormalArg (Block (Content [ Text "B" ]))
+              ])
+       , NormalArg (Block (Content [ Text "C" ]))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+], size: 8.0pt), 
+                 stack(children: (1.0fr, 
+                                  text(body: [A], 
+                                       size: 8.0pt), 
+                                  1.0fr, 
+                                  text(body: [B], 
+                                       size: 8.0pt), 
+                                  text(body: [C], 
+                                       size: 8.0pt)), 
+                       dir: rtl), 
+                 text(body: [
+], size: 8.0pt), 
+                 stack(children: (align(alignment: center, 
+                                        body: text(body: [A], 
+                                                   size: 8.0pt)), 
+                                  align(alignment: left, 
+                                        body: text(body: [B], 
+                                                   size: 8.0pt)), 
+                                  text(body: [C], 
+                                       size: 8.0pt)), 
+                       dir: rtl), 
+                 parbreak() })
diff --git a/test/typ/layout/stack-2-00.out b/test/typ/layout/stack-2-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/stack-2-00.out
@@ -0,0 +1,142 @@
+--- parse tree ---
+[ Code
+    "typ/layout/stack-2-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/stack-2-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/stack-2-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/layout/stack-2-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 3.5 Cm)) ])
+, SoftBreak
+, Code
+    "typ/layout/stack-2-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "stack"))
+       [ KeyValArg (Identifier "dir") (Ident (Identifier "ltr"))
+       , KeyValArg (Identifier "spacing") (Literal (Numeric 1.0 Fr))
+       , SpreadArg
+           (For
+              (BasicBind (Just (Identifier "c")))
+              (Literal (String "ABCDEFGHI"))
+              (Block
+                 (CodeBlock
+                    [ Array
+                        [ Reg
+                            (Block
+                               (Content
+                                  [ Code
+                                      "typ/layout/stack-2-00.typ"
+                                      ( line 6 , column 30 )
+                                      (Ident (Identifier "c"))
+                                  ]))
+                        ]
+                    ])))
+       ])
+, ParBreak
+, Text "Hello"
+, SoftBreak
+, Code
+    "typ/layout/stack-2-00.typ"
+    ( line 10 , column 2 )
+    (FuncCall
+       (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 2.0 Fr)) ])
+, SoftBreak
+, Text "from"
+, Space
+, Code
+    "typ/layout/stack-2-00.typ"
+    ( line 11 , column 7 )
+    (FuncCall
+       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 1.0 Fr)) ])
+, Space
+, Text "the"
+, Space
+, Code
+    "typ/layout/stack-2-00.typ"
+    ( line 11 , column 19 )
+    (FuncCall
+       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 1.0 Fr)) ])
+, Space
+, Text "wonderful"
+, SoftBreak
+, Code
+    "typ/layout/stack-2-00.typ"
+    ( line 12 , column 2 )
+    (FuncCall
+       (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 1.0 Fr)) ])
+, SoftBreak
+, Text "World!"
+, Space
+, Text "\127757"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 stack(children: (text(body: [A]), 
+                                  text(body: [B]), 
+                                  text(body: [C]), 
+                                  text(body: [D]), 
+                                  text(body: [E]), 
+                                  text(body: [F]), 
+                                  text(body: [G]), 
+                                  text(body: [H]), 
+                                  text(body: [I])), 
+                       dir: ltr, 
+                       spacing: 1.0fr), 
+                 parbreak(), 
+                 text(body: [Hello
+]), 
+                 v(amount: 2.0fr), 
+                 text(body: [
+from ]), 
+                 h(amount: 1.0fr), 
+                 text(body: [ the ]), 
+                 h(amount: 1.0fr), 
+                 text(body: [ wonderful
+]), 
+                 v(amount: 1.0fr), 
+                 text(body: [
+World! 🌍]), 
+                 parbreak() })
diff --git a/test/typ/layout/stack-2-01.out b/test/typ/layout/stack-2-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/stack-2-01.out
@@ -0,0 +1,104 @@
+--- parse tree ---
+[ Code
+    "typ/layout/stack-2-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/stack-2-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/stack-2-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/layout/stack-2-01.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 2.0 Cm)) ])
+, SoftBreak
+, Code
+    "typ/layout/stack-2-01.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ NormalArg (Ident (Identifier "white")) ])
+, SoftBreak
+, Code
+    "typ/layout/stack-2-01.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "rect"))
+       [ KeyValArg (Identifier "fill") (Ident (Identifier "red"))
+       , BlockArg
+           [ SoftBreak
+           , Code
+               "typ/layout/stack-2-01.typ"
+               ( line 5 , column 12 )
+               (FuncCall
+                  (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 1.0 Fr)) ])
+           , SoftBreak
+           , Code
+               "typ/layout/stack-2-01.typ"
+               ( line 6 , column 4 )
+               (FuncCall
+                  (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 1.0 Fr)) ])
+           , Space
+           , Text "Hi"
+           , Space
+           , Text "you!"
+           , ParBreak
+           ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+], 
+                      color: rgb(100%,100%,100%,100%)), 
+                 rect(body: { text(body: [
+], 
+                                   color: rgb(100%,100%,100%,100%)), 
+                              v(amount: 1.0fr), 
+                              text(body: [
+], 
+                                   color: rgb(100%,100%,100%,100%)), 
+                              h(amount: 1.0fr), 
+                              text(body: [ Hi you!], 
+                                   color: rgb(100%,100%,100%,100%)), 
+                              parbreak() }, 
+                      fill: rgb(100%,25%,21%,100%)), 
+                 parbreak() })
diff --git a/test/typ/layout/table-00.out b/test/typ/layout/table-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/table-00.out
@@ -0,0 +1,141 @@
+--- parse tree ---
+[ Code
+    "typ/layout/table-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/table-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/table-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/layout/table-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 70.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/layout/table-00.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "table"))
+       [ KeyValArg
+           (Identifier "fill")
+           (FuncExpr
+              [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+              (If
+                 [ ( FuncCall
+                       (FieldAccess
+                          (Ident (Identifier "even")) (Ident (Identifier "calc")))
+                       [ NormalArg
+                           (Plus (Ident (Identifier "x")) (Ident (Identifier "y")))
+                       ]
+                   , Block
+                       (CodeBlock
+                          [ FuncCall
+                              (Ident (Identifier "rgb")) [ NormalArg (Literal (String "aaa")) ]
+                          ])
+                   )
+                 ]))
+       ])
+, ParBreak
+, Code
+    "typ/layout/table-00.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "table"))
+       [ KeyValArg
+           (Identifier "columns")
+           (Times
+              (Array [ Reg (Literal (Numeric 1.0 Fr)) ]) (Literal (Int 3)))
+       , KeyValArg
+           (Identifier "stroke")
+           (Plus
+              (Literal (Numeric 2.0 Pt))
+              (FuncCall
+                 (Ident (Identifier "rgb")) [ NormalArg (Literal (String "333")) ]))
+       , NormalArg (Block (Content [ Text "A" ]))
+       , NormalArg (Block (Content [ Text "B" ]))
+       , NormalArg (Block (Content [ Text "C" ]))
+       , NormalArg (Block (Content []))
+       , NormalArg (Block (Content []))
+       , NormalArg
+           (Block
+              (Content
+                 [ Text "D"
+                 , Space
+                 , HardBreak
+                 , Text "E"
+                 , Space
+                 , HardBreak
+                 , Text "F"
+                 , Space
+                 , HardBreak
+                 , HardBreak
+                 , HardBreak
+                 , Text "G"
+                 ]))
+       , NormalArg (Block (Content [ Text "H" ]))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 table(children: (text(body: [A]), 
+                                  text(body: [B]), 
+                                  text(body: [C]), 
+                                  {  }, 
+                                  {  }, 
+                                  { text(body: [D ]), 
+                                    linebreak(), 
+                                    text(body: [E ]), 
+                                    linebreak(), 
+                                    text(body: [F ]), 
+                                    linebreak(), 
+                                    linebreak(), 
+                                    linebreak(), 
+                                    text(body: [G]) }, 
+                                  text(body: [H])), 
+                       columns: (1.0fr, 
+                                 1.0fr, 
+                                 1.0fr), 
+                       fill: , 
+                       stroke: (thickness: 2.0pt,
+                                color: rgb(1%,1%,1%,100%))), 
+                 parbreak() })
diff --git a/test/typ/layout/table-01.out b/test/typ/layout/table-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/table-01.out
@@ -0,0 +1,65 @@
+--- parse tree ---
+[ Code
+    "typ/layout/table-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/table-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/table-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/layout/table-01.typ"
+    ( line 2 , column 2 )
+    (FuncCall
+       (Ident (Identifier "table"))
+       [ KeyValArg (Identifier "columns") (Literal (Int 3))
+       , KeyValArg (Identifier "stroke") (Literal None)
+       , KeyValArg (Identifier "fill") (Ident (Identifier "green"))
+       , NormalArg (Block (Content [ Text "A" ]))
+       , NormalArg (Block (Content [ Text "B" ]))
+       , NormalArg (Block (Content [ Text "C" ]))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 table(children: (text(body: [A]), 
+                                  text(body: [B]), 
+                                  text(body: [C])), 
+                       columns: 3, 
+                       fill: rgb(18%,80%,25%,100%), 
+                       stroke: none), 
+                 parbreak() })
diff --git a/test/typ/layout/table-02.out b/test/typ/layout/table-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/table-02.out
@@ -0,0 +1,116 @@
+--- parse tree ---
+[ Code
+    "typ/layout/table-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/table-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/table-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/table-02.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "table"))
+       [ KeyValArg
+           (Identifier "columns")
+           (Array
+              [ Reg (Literal (Numeric 1.0 Fr))
+              , Reg (Literal (Numeric 1.0 Fr))
+              , Reg (Literal (Numeric 1.0 Fr))
+              ])
+       , KeyValArg
+           (Identifier "align")
+           (Array
+              [ Reg (Ident (Identifier "left"))
+              , Reg (Ident (Identifier "center"))
+              , Reg (Ident (Identifier "right"))
+              ])
+       , NormalArg (Block (Content [ Text "A" ]))
+       , NormalArg (Block (Content [ Text "B" ]))
+       , NormalArg (Block (Content [ Text "C" ]))
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/layout/table-02.typ"
+    ( line 10 , column 2 )
+    (Set
+       (Ident (Identifier "align"))
+       [ NormalArg (Ident (Identifier "center")) ])
+, SoftBreak
+, Code
+    "typ/layout/table-02.typ"
+    ( line 11 , column 2 )
+    (FuncCall
+       (Ident (Identifier "table"))
+       [ KeyValArg
+           (Identifier "columns")
+           (Array
+              [ Reg (Literal (Numeric 1.0 Fr))
+              , Reg (Literal (Numeric 1.0 Fr))
+              , Reg (Literal (Numeric 1.0 Fr))
+              ])
+       , KeyValArg (Identifier "align") (Array [])
+       , NormalArg (Block (Content [ Text "A" ]))
+       , NormalArg (Block (Content [ Text "B" ]))
+       , NormalArg (Block (Content [ Text "C" ]))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 table(align: (left, 
+                               center, 
+                               right), 
+                       children: (text(body: [A]), 
+                                  text(body: [B]), 
+                                  text(body: [C])), 
+                       columns: (1.0fr, 
+                                 1.0fr, 
+                                 1.0fr)), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 table(align: (), 
+                       children: (text(body: [A]), 
+                                  text(body: [B]), 
+                                  text(body: [C])), 
+                       columns: (1.0fr, 
+                                 1.0fr, 
+                                 1.0fr)), 
+                 parbreak() })
diff --git a/test/typ/layout/table-03.out b/test/typ/layout/table-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/table-03.out
@@ -0,0 +1,53 @@
+--- parse tree ---
+[ Code
+    "typ/layout/table-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/table-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/table-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/table-03.typ"
+    ( line 3 , column 2 )
+    (FuncCall (Ident (Identifier "table")) [])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 table(children: ()), 
+                 parbreak() })
diff --git a/test/typ/layout/table-04.out b/test/typ/layout/table-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/table-04.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/layout/terms-00.out b/test/typ/layout/terms-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/terms-00.out
@@ -0,0 +1,68 @@
+--- parse tree ---
+[ Code
+    "typ/layout/terms-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/terms-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/terms-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/terms-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "terms"))
+       [ NormalArg
+           (Array
+              [ Reg (Block (Content [ Text "One" ]))
+              , Reg (Block (Content [ Text "First" ]))
+              ])
+       , NormalArg
+           (Array
+              [ Reg (Block (Content [ Text "Two" ]))
+              , Reg (Block (Content [ Text "Second" ]))
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 terms(children: ((text(body: [One]), 
+                                   text(body: [First])), 
+                                  (text(body: [Two]), 
+                                   text(body: [Second])))), 
+                 parbreak() })
diff --git a/test/typ/layout/terms-01.out b/test/typ/layout/terms-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/terms-01.out
@@ -0,0 +1,100 @@
+--- parse tree ---
+[ Code
+    "typ/layout/terms-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/terms-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/terms-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/terms-01.typ"
+    ( line 3 , column 2 )
+    (For
+       (BasicBind (Just (Identifier "word")))
+       (FuncCall
+          (FieldAccess
+             (Ident (Identifier "map"))
+             (FuncCall
+                (FieldAccess
+                   (Ident (Identifier "split"))
+                   (FuncCall
+                      (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 4)) ]))
+                []))
+          [ NormalArg
+              (FuncExpr
+                 [ NormalParam (Identifier "s") ]
+                 (FuncCall
+                    (FieldAccess (Ident (Identifier "trim")) (Ident (Identifier "s")))
+                    [ NormalArg (Literal (String ".")) ]))
+          ])
+       (Block
+          (Content
+             [ SoftBreak
+             , DescListItem
+                 [ Code
+                     "typ/layout/terms-01.typ"
+                     ( line 4 , column 6 )
+                     (Ident (Identifier "word"))
+                 ]
+                 [ Text "Latin" , Space , Text "stuff" , Text "." , ParBreak ]
+             ])))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 terms(children: ((text(body: [Lorem]), 
+                                   { text(body: [Latin stuff.]), 
+                                     parbreak() }))), 
+                 text(body: [
+]), 
+                 terms(children: ((text(body: [ipsum]), 
+                                   { text(body: [Latin stuff.]), 
+                                     parbreak() }))), 
+                 text(body: [
+]), 
+                 terms(children: ((text(body: [dolor]), 
+                                   { text(body: [Latin stuff.]), 
+                                     parbreak() }))), 
+                 text(body: [
+]), 
+                 terms(children: ((text(body: [sit]), 
+                                   { text(body: [Latin stuff.]), 
+                                     parbreak() }))), 
+                 parbreak() })
diff --git a/test/typ/layout/terms-02.out b/test/typ/layout/terms-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/terms-02.out
@@ -0,0 +1,94 @@
+--- parse tree ---
+[ Code
+    "typ/layout/terms-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/terms-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/terms-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/terms-02.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ NormalArg (Literal (Numeric 8.0 Pt)) ])
+, ParBreak
+, DescListItem
+    [ Text "Fruit" ]
+    [ Text "A"
+    , Space
+    , Text "tasty,"
+    , Space
+    , Text "edible"
+    , Space
+    , Text "thing"
+    , Text "."
+    ]
+, SoftBreak
+, DescListItem
+    [ Text "Veggie" ]
+    [ SoftBreak
+    , Text "An"
+    , Space
+    , Text "important"
+    , Space
+    , Text "energy"
+    , Space
+    , Text "source"
+    , SoftBreak
+    , Text "for"
+    , Space
+    , Text "vegetarians"
+    , Text "."
+    , ParBreak
+    ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 terms(children: ((text(body: [Fruit], 
+                                        size: 8.0pt), 
+                                   text(body: [A tasty, edible thing.], 
+                                        size: 8.0pt)), 
+                                  (text(body: [Veggie], 
+                                        size: 8.0pt), 
+                                   { text(body: [
+An important energy source
+for vegetarians.], 
+                                          size: 8.0pt), 
+                                     parbreak() }))) })
diff --git a/test/typ/layout/terms-03.out b/test/typ/layout/terms-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/terms-03.out
@@ -0,0 +1,98 @@
+--- parse tree ---
+[ Code
+    "typ/layout/terms-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/terms-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/terms-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/terms-03.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ NormalArg (Literal (Numeric 8.0 Pt)) ])
+, SoftBreak
+, DescListItem
+    [ Text "First" , Space , Text "list" ]
+    [ Code
+        "typ/layout/terms-03.typ"
+        ( line 4 , column 16 )
+        (FuncCall
+           (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 6)) ])
+    , SoftBreak
+    ]
+, SoftBreak
+, Code
+    "typ/layout/terms-03.typ"
+    ( line 6 , column 2 )
+    (Set
+       (Ident (Identifier "terms"))
+       [ KeyValArg
+           (Identifier "hanging-indent") (Literal (Numeric 30.0 Pt))
+       ])
+, SoftBreak
+, DescListItem
+    [ Text "Second" , Space , Text "list" ]
+    [ Code
+        "typ/layout/terms-03.typ"
+        ( line 7 , column 17 )
+        (FuncCall
+           (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 5)) ])
+    , ParBreak
+    ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+], size: 8.0pt), 
+                 terms(children: ((text(body: [First list], 
+                                        size: 8.0pt), 
+                                   { text(body: [Lorem ipsum dolor sit amet, consectetur], 
+                                          size: 8.0pt), 
+                                     text(body: [
+], 
+                                          size: 8.0pt) }))), 
+                 text(body: [
+], size: 8.0pt), 
+                 terms(children: ((text(body: [Second list], 
+                                        size: 8.0pt), 
+                                   { text(body: [Lorem ipsum dolor sit amet,], 
+                                          size: 8.0pt), 
+                                     parbreak() })), 
+                       hanging-indent: 30.0pt) })
diff --git a/test/typ/layout/terms-04.out b/test/typ/layout/terms-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/terms-04.out
@@ -0,0 +1,104 @@
+--- parse tree ---
+[ Code
+    "typ/layout/terms-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/terms-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/terms-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/terms-04.typ"
+    ( line 3 , column 2 )
+    (Show
+       (Just (Ident (Identifier "terms")))
+       (FuncExpr
+          [ NormalParam (Identifier "it") ]
+          (FuncCall
+             (Ident (Identifier "table"))
+             [ KeyValArg (Identifier "columns") (Literal (Int 2))
+             , KeyValArg (Identifier "inset") (Literal (Numeric 3.0 Pt))
+             , SpreadArg
+                 (FuncCall
+                    (FieldAccess
+                       (Ident (Identifier "flatten"))
+                       (FuncCall
+                          (FieldAccess
+                             (Ident (Identifier "map"))
+                             (FieldAccess
+                                (Ident (Identifier "children")) (Ident (Identifier "it"))))
+                          [ NormalArg
+                              (FuncExpr
+                                 [ NormalParam (Identifier "v") ]
+                                 (Array
+                                    [ Reg
+                                        (FuncCall
+                                           (Ident (Identifier "emph"))
+                                           [ NormalArg
+                                               (FieldAccess
+                                                  (Ident (Identifier "term"))
+                                                  (Ident (Identifier "v")))
+                                           ])
+                                    , Reg
+                                        (FieldAccess
+                                           (Ident (Identifier "description"))
+                                           (Ident (Identifier "v")))
+                                    ]))
+                          ]))
+                    [])
+             ])))
+, ParBreak
+, DescListItem [ Text "A" ] [ Text "One" , Space , Text "letter" ]
+, SoftBreak
+, DescListItem
+    [ Text "BB" ] [ Text "Two" , Space , Text "letters" ]
+, SoftBreak
+, DescListItem
+    [ Text "CCC" ] [ Text "Three" , Space , Text "letters" , ParBreak ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 table(children: (emph(body: text(body: [A])), 
+                                  text(body: [One letter]), 
+                                  emph(body: text(body: [BB])), 
+                                  text(body: [Two letters]), 
+                                  emph(body: text(body: [CCC])), 
+                                  { text(body: [Three letters]), 
+                                    parbreak() }), 
+                       columns: 2, 
+                       inset: 3.0pt) })
diff --git a/test/typ/layout/terms-05.out b/test/typ/layout/terms-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/terms-05.out
@@ -0,0 +1,61 @@
+--- parse tree ---
+[ Code
+    "typ/layout/terms-05.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/terms-05.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/terms-05.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, DescListItem [ Text "Term" ] []
+, SoftBreak
+, Text "Not"
+, Space
+, Text "in"
+, Space
+, Text "list"
+, SoftBreak
+, Text "/"
+, Text "Nope"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 terms(children: ((text(body: [Term]), 
+                                   {  }))), 
+                 text(body: [Not in list
+/Nope]), 
+                 parbreak() })
diff --git a/test/typ/layout/terms-06.out b/test/typ/layout/terms-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/terms-06.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/layout/transform-00.out b/test/typ/layout/transform-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/transform-00.out
@@ -0,0 +1,214 @@
+--- parse tree ---
+[ Code
+    "typ/layout/transform-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/transform-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/transform-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/transform-00.typ"
+    ( line 3 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "size"))) (Literal (Numeric 11.0 Pt)))
+, SoftBreak
+, Code
+    "typ/layout/transform-00.typ"
+    ( line 4 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "tex")))
+       (Block
+          (CodeBlock
+             [ Block (Content [ Text "T" ])
+             , FuncCall
+                 (Ident (Identifier "h"))
+                 [ NormalArg
+                     (Times
+                        (Negated (Literal (Float 0.14))) (Ident (Identifier "size")))
+                 ]
+             , FuncCall
+                 (Ident (Identifier "box"))
+                 [ NormalArg
+                     (FuncCall
+                        (Ident (Identifier "move"))
+                        [ KeyValArg
+                            (Identifier "dy")
+                            (Times (Literal (Float 0.22)) (Ident (Identifier "size")))
+                        , BlockArg [ Text "E" ]
+                        ])
+                 ]
+             , FuncCall
+                 (Ident (Identifier "h"))
+                 [ NormalArg
+                     (Times
+                        (Negated (Literal (Float 0.12))) (Ident (Identifier "size")))
+                 ]
+             , Block (Content [ Text "X" ])
+             ])))
+, ParBreak
+, Code
+    "typ/layout/transform-00.typ"
+    ( line 12 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "xetex")))
+       (Block
+          (CodeBlock
+             [ Block (Content [ Text "X" ])
+             , FuncCall
+                 (Ident (Identifier "h"))
+                 [ NormalArg
+                     (Times
+                        (Negated (Literal (Float 0.14))) (Ident (Identifier "size")))
+                 ]
+             , FuncCall
+                 (Ident (Identifier "box"))
+                 [ NormalArg
+                     (FuncCall
+                        (Ident (Identifier "scale"))
+                        [ KeyValArg
+                            (Identifier "x") (Negated (Literal (Numeric 100.0 Percent)))
+                        , NormalArg
+                            (FuncCall
+                               (Ident (Identifier "move"))
+                               [ KeyValArg
+                                   (Identifier "dy")
+                                   (Times (Literal (Float 0.26)) (Ident (Identifier "size")))
+                               , BlockArg [ Text "E" ]
+                               ])
+                        ])
+                 ]
+             , FuncCall
+                 (Ident (Identifier "h"))
+                 [ NormalArg
+                     (Times
+                        (Negated (Literal (Float 0.14))) (Ident (Identifier "size")))
+                 ]
+             , Block (Content [ Text "T" ])
+             , FuncCall
+                 (Ident (Identifier "h"))
+                 [ NormalArg
+                     (Times
+                        (Negated (Literal (Float 0.14))) (Ident (Identifier "size")))
+                 ]
+             , FuncCall
+                 (Ident (Identifier "box"))
+                 [ NormalArg
+                     (FuncCall
+                        (Ident (Identifier "move"))
+                        [ KeyValArg
+                            (Identifier "dy")
+                            (Times (Literal (Float 0.26)) (Ident (Identifier "size")))
+                        , BlockArg [ Text "E" ]
+                        ])
+                 ]
+             , FuncCall
+                 (Ident (Identifier "h"))
+                 [ NormalArg
+                     (Times
+                        (Negated (Literal (Float 0.12))) (Ident (Identifier "size")))
+                 ]
+             , Block (Content [ Text "X" ])
+             ])))
+, ParBreak
+, Code
+    "typ/layout/transform-00.typ"
+    ( line 24 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg
+           (Identifier "font") (Literal (String "New Computer Modern"))
+       , NormalArg (Ident (Identifier "size"))
+       ])
+, SoftBreak
+, Text "Neither"
+, Space
+, Code
+    "typ/layout/transform-00.typ"
+    ( line 25 , column 10 )
+    (Ident (Identifier "tex"))
+, Text ","
+, Space
+, HardBreak
+, Text "nor"
+, Space
+, Code
+    "typ/layout/transform-00.typ"
+    ( line 26 , column 6 )
+    (Ident (Identifier "xetex"))
+, Text "!"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 parbreak(), 
+                 text(body: [
+Neither ], 
+                      font: "New Computer Modern", 
+                      size: 11.0pt), 
+                 text(body: [T]), 
+                 h(amount: -1.54pt), 
+                 box(body: move(body: text(body: [E]), 
+                                dy: 2.42pt)), 
+                 h(amount: -1.3199999999999998pt), 
+                 text(body: [X]), 
+                 text(body: [, ], 
+                      font: "New Computer Modern", 
+                      size: 11.0pt), 
+                 linebreak(), 
+                 text(body: [nor ], 
+                      font: "New Computer Modern", 
+                      size: 11.0pt), 
+                 text(body: [X]), 
+                 h(amount: -1.54pt), 
+                 box(body: scale(body: move(body: text(body: [E]), 
+                                            dy: 2.8600000000000003pt), 
+                                 x: -100%)), 
+                 h(amount: -1.54pt), 
+                 text(body: [T]), 
+                 h(amount: -1.54pt), 
+                 box(body: move(body: text(body: [E]), 
+                                dy: 2.8600000000000003pt)), 
+                 h(amount: -1.3199999999999998pt), 
+                 text(body: [X]), 
+                 text(body: [!], 
+                      font: "New Computer Modern", 
+                      size: 11.0pt), 
+                 parbreak() })
diff --git a/test/typ/layout/transform-01.out b/test/typ/layout/transform-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/transform-01.out
@@ -0,0 +1,83 @@
+--- parse tree ---
+[ Code
+    "typ/layout/transform-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/transform-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/transform-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/transform-01.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 80.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/layout/transform-01.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "align"))
+       [ NormalArg
+           (Plus (Ident (Identifier "center")) (Ident (Identifier "horizon")))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rotate"))
+              [ NormalArg (Literal (Numeric 20.0 Deg))
+              , NormalArg
+                  (FuncCall
+                     (Ident (Identifier "scale"))
+                     [ NormalArg (Literal (Numeric 70.0 Percent))
+                     , NormalArg
+                         (FuncCall
+                            (Ident (Identifier "image"))
+                            [ NormalArg (Literal (String "/assets/files/tiger.jpg")) ])
+                     ])
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 align(alignment: Axes(center, horizon), 
+                       body: rotate(angle: 20.0deg, 
+                                    body: scale(body: image(path: "/assets/files/tiger.jpg"), 
+                                                factor: 70%))), 
+                 parbreak() })
diff --git a/test/typ/layout/transform-02.out b/test/typ/layout/transform-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/transform-02.out
@@ -0,0 +1,68 @@
+--- parse tree ---
+[ Code
+    "typ/layout/transform-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/transform-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/transform-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/transform-02.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "rotate"))
+       [ NormalArg (Literal (Numeric 10.0 Deg))
+       , KeyValArg
+           (Identifier "origin")
+           (Plus (Ident (Identifier "top")) (Ident (Identifier "left")))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "image"))
+              [ NormalArg (Literal (String "/assets/files/tiger.jpg"))
+              , KeyValArg (Identifier "width") (Literal (Numeric 50.0 Percent))
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 rotate(angle: 10.0deg, 
+                        body: image(path: "/assets/files/tiger.jpg", 
+                                    width: 50%), 
+                        origin: Axes(left, top)), 
+                 parbreak() })
diff --git a/test/typ/layout/transform-03.out b/test/typ/layout/transform-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/layout/transform-03.out
@@ -0,0 +1,139 @@
+--- parse tree ---
+[ Code
+    "typ/layout/transform-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/layout/transform-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/layout/transform-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/layout/transform-03.typ"
+    ( line 3 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "r")))
+       (FuncCall
+          (Ident (Identifier "rect"))
+          [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Pt))
+          , KeyValArg (Identifier "height") (Literal (Numeric 10.0 Pt))
+          , KeyValArg (Identifier "fill") (Ident (Identifier "red"))
+          ]))
+, SoftBreak
+, Code
+    "typ/layout/transform-03.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 65.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/layout/transform-03.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "scale"))
+              [ NormalArg (Ident (Identifier "r"))
+              , KeyValArg (Identifier "x") (Literal (Numeric 50.0 Percent))
+              , KeyValArg (Identifier "y") (Literal (Numeric 200.0 Percent))
+              , KeyValArg
+                  (Identifier "origin")
+                  (Plus (Ident (Identifier "left")) (Ident (Identifier "top")))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/layout/transform-03.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "scale"))
+              [ NormalArg (Ident (Identifier "r"))
+              , KeyValArg (Identifier "x") (Literal (Numeric 50.0 Percent))
+              , KeyValArg (Identifier "origin") (Ident (Identifier "center"))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/layout/transform-03.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "scale"))
+              [ NormalArg (Ident (Identifier "r"))
+              , KeyValArg (Identifier "x") (Literal (Numeric 50.0 Percent))
+              , KeyValArg (Identifier "y") (Literal (Numeric 200.0 Percent))
+              , KeyValArg
+                  (Identifier "origin")
+                  (Plus (Ident (Identifier "right")) (Ident (Identifier "bottom")))
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 box(body: scale(body: rect(fill: rgb(100%,25%,21%,100%), 
+                                            height: 10.0pt, 
+                                            width: 100.0pt), 
+                                 origin: Axes(left, top), 
+                                 x: 50%, 
+                                 y: 200%)), 
+                 text(body: [
+]), 
+                 box(body: scale(body: rect(fill: rgb(100%,25%,21%,100%), 
+                                            height: 10.0pt, 
+                                            width: 100.0pt), 
+                                 origin: center, 
+                                 x: 50%)), 
+                 text(body: [
+]), 
+                 box(body: scale(body: rect(fill: rgb(100%,25%,21%,100%), 
+                                            height: 10.0pt, 
+                                            width: 100.0pt), 
+                                 origin: Axes(right, bottom), 
+                                 x: 50%, 
+                                 y: 200%)), 
+                 parbreak() })
diff --git a/test/typ/math/accent-00.out b/test/typ/math/accent-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/accent-00.out
@@ -0,0 +1,155 @@
+--- parse tree ---
+[ Code
+    "typ/math/accent-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/accent-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/accent-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    False
+    [ Code
+        "typ/math/accent-00.typ"
+        ( line 3 , column 2 )
+        (FuncCall (Ident (Identifier "grave")) [ BlockArg [ Text "a" ] ])
+    , Text ","
+    , Code
+        "typ/math/accent-00.typ"
+        ( line 3 , column 12 )
+        (FuncCall (Ident (Identifier "acute")) [ BlockArg [ Text "b" ] ])
+    , Text ","
+    , Code
+        "typ/math/accent-00.typ"
+        ( line 3 , column 22 )
+        (FuncCall (Ident (Identifier "hat")) [ BlockArg [ Text "f" ] ])
+    , Text ","
+    , Code
+        "typ/math/accent-00.typ"
+        ( line 3 , column 30 )
+        (FuncCall
+           (Ident (Identifier "tilde")) [ BlockArg [ Text "\167" ] ])
+    , Text ","
+    , Code
+        "typ/math/accent-00.typ"
+        ( line 3 , column 40 )
+        (FuncCall
+           (Ident (Identifier "macron")) [ BlockArg [ Text "\228" ] ])
+    , Text ","
+    , Code
+        "typ/math/accent-00.typ"
+        ( line 3 , column 51 )
+        (FuncCall (Ident (Identifier "diaer")) [ BlockArg [ Text "a" ] ])
+    , Text ","
+    , Text "\228"
+    , HardBreak
+    , Code
+        "typ/math/accent-00.typ"
+        ( line 4 , column 2 )
+        (FuncCall (Ident (Identifier "breve")) [ BlockArg [ Text "&" ] ])
+    , Text ","
+    , Code
+        "typ/math/accent-00.typ"
+        ( line 4 , column 13 )
+        (FuncCall (Ident (Identifier "dot")) [ BlockArg [ Text "!" ] ])
+    , Text ","
+    , Code
+        "typ/math/accent-00.typ"
+        ( line 4 , column 21 )
+        (FuncCall (Ident (Identifier "circle")) [ BlockArg [ Text "a" ] ])
+    , Text ","
+    , Code
+        "typ/math/accent-00.typ"
+        ( line 4 , column 32 )
+        (FuncCall (Ident (Identifier "caron")) [ BlockArg [ Text "@" ] ])
+    , Text ","
+    , Code
+        "typ/math/accent-00.typ"
+        ( line 4 , column 42 )
+        (FuncCall (Ident (Identifier "arrow")) [ BlockArg [ Text "Z" ] ])
+    , Text ","
+    , Code
+        "typ/math/accent-00.typ"
+        ( line 4 , column 52 )
+        (FuncCall
+           (FieldAccess (Ident (Identifier "l")) (Ident (Identifier "arrow")))
+           [ BlockArg [ Text "Z" ] ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: false, 
+                               body: { math.accent(accent: `, 
+                                                   base: text(body: [a])), 
+                                       text(body: [,]), 
+                                       math.accent(accent: ´, 
+                                                   base: text(body: [b])), 
+                                       text(body: [,]), 
+                                       math.accent(accent: ^, 
+                                                   base: text(body: [f])), 
+                                       text(body: [,]), 
+                                       math.accent(accent: ∼, 
+                                                   base: text(body: [§])), 
+                                       text(body: [,]), 
+                                       math.accent(accent: ¯, 
+                                                   base: text(body: [ä])), 
+                                       text(body: [,]), 
+                                       math.accent(accent: ¨, 
+                                                   base: text(body: [a])), 
+                                       text(body: [,]), 
+                                       text(body: [ä]), 
+                                       linebreak(), 
+                                       math.accent(accent: ˘, 
+                                                   base: text(body: [&])), 
+                                       text(body: [,]), 
+                                       math.accent(accent: ⋅, 
+                                                   base: text(body: [!])), 
+                                       text(body: [,]), 
+                                       math.accent(accent: ○, 
+                                                   base: text(body: [a])), 
+                                       text(body: [,]), 
+                                       math.accent(accent: ˇ, 
+                                                   base: text(body: [@])), 
+                                       text(body: [,]), 
+                                       math.accent(accent: →, 
+                                                   base: text(body: [Z])), 
+                                       text(body: [,]), 
+                                       math.accent(accent: ←, 
+                                                   base: text(body: [Z])) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/accent-01.out b/test/typ/math/accent-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/accent-01.out
@@ -0,0 +1,125 @@
+--- parse tree ---
+[ Code
+    "typ/math/accent-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/accent-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/accent-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Equation
+    True
+    [ Text "x"
+    , MAlignPoint
+    , Text "="
+    , Text "p"
+    , HardBreak
+    , Code
+        "typ/math/accent-01.typ"
+        ( line 2 , column 12 )
+        (FuncCall (Ident (Identifier "dot")) [ BlockArg [ Text "x" ] ])
+    , MAlignPoint
+    , Text "="
+    , Text "v"
+    , HardBreak
+    , Code
+        "typ/math/accent-01.typ"
+        ( line 2 , column 26 )
+        (FuncCall
+           (FieldAccess
+              (Ident (Identifier "double")) (Ident (Identifier "dot")))
+           [ BlockArg [ Text "x" ] ])
+    , MAlignPoint
+    , Text "="
+    , Text "a"
+    , HardBreak
+    , Code
+        "typ/math/accent-01.typ"
+        ( line 2 , column 47 )
+        (FuncCall
+           (FieldAccess
+              (Ident (Identifier "triple")) (Ident (Identifier "dot")))
+           [ BlockArg [ Text "x" ] ])
+    , MAlignPoint
+    , Text "="
+    , Text "j"
+    , HardBreak
+    , Code
+        "typ/math/accent-01.typ"
+        ( line 2 , column 68 )
+        (FuncCall
+           (FieldAccess
+              (Ident (Identifier "quad")) (Ident (Identifier "dot")))
+           [ BlockArg [ Text "x" ] ])
+    , MAlignPoint
+    , Text "="
+    , Text "s"
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [x]), 
+                                       math.alignpoint(), 
+                                       text(body: [=]), 
+                                       text(body: [p]), 
+                                       linebreak(), 
+                                       math.accent(accent: ⋅, 
+                                                   base: text(body: [x])), 
+                                       math.alignpoint(), 
+                                       text(body: [=]), 
+                                       text(body: [v]), 
+                                       linebreak(), 
+                                       math.accent(accent: ¨, 
+                                                   base: text(body: [x])), 
+                                       math.alignpoint(), 
+                                       text(body: [=]), 
+                                       text(body: [a]), 
+                                       linebreak(), 
+                                       math.accent(accent: ⃛, 
+                                                   base: text(body: [x])), 
+                                       math.alignpoint(), 
+                                       text(body: [=]), 
+                                       text(body: [j]), 
+                                       linebreak(), 
+                                       math.accent(accent: ⃜, 
+                                                   base: text(body: [x])), 
+                                       math.alignpoint(), 
+                                       text(body: [=]), 
+                                       text(body: [s]) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/accent-02.out b/test/typ/math/accent-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/accent-02.out
@@ -0,0 +1,95 @@
+--- parse tree ---
+[ Code
+    "typ/math/accent-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/accent-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/accent-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    False
+    [ Code
+        "typ/math/accent-02.typ"
+        ( line 3 , column 2 )
+        (FuncCall
+           (Ident (Identifier "accent"))
+           [ BlockArg [ Text "\246" ] , BlockArg [ Text "." ] ])
+    , Text ","
+    , Code
+        "typ/math/accent-02.typ"
+        ( line 3 , column 16 )
+        (FuncCall
+           (Ident (Identifier "accent"))
+           [ BlockArg [ Text "v" ]
+           , BlockArg
+               [ Code
+                   "typ/math/accent-02.typ"
+                   ( line 3 , column 26 )
+                   (FieldAccess (Ident (Identifier "l")) (Ident (Identifier "arrow")))
+               ]
+           ])
+    , Text ","
+    , Code
+        "typ/math/accent-02.typ"
+        ( line 3 , column 31 )
+        (FuncCall
+           (Ident (Identifier "accent"))
+           [ BlockArg
+               [ Code
+                   "typ/math/accent-02.typ"
+                   ( line 3 , column 38 )
+                   (Ident (Identifier "ZZ"))
+               ]
+           , BlockArg [ Text "\771" ]
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: false, 
+                               body: { math.accent(accent: text(body: [.]), 
+                                                   base: text(body: [ö])), 
+                                       text(body: [,]), 
+                                       math.accent(accent: text(body: [←]), 
+                                                   base: text(body: [v])), 
+                                       text(body: [,]), 
+                                       math.accent(accent: text(body: [̃]), 
+                                                   base: text(body: [ℤ])) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/accent-03.out b/test/typ/math/accent-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/accent-03.out
@@ -0,0 +1,82 @@
+--- parse tree ---
+[ Code
+    "typ/math/accent-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/accent-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/accent-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    False
+    [ Code
+        "typ/math/accent-03.typ"
+        ( line 3 , column 2 )
+        (FuncCall
+           (Ident (Identifier "sqrt"))
+           [ BlockArg
+               [ Code
+                   "typ/math/accent-03.typ"
+                   ( line 3 , column 7 )
+                   (FuncCall (Ident (Identifier "tilde")) [ BlockArg [ Text "T" ] ])
+               ]
+           ])
+    , Text "+"
+    , MFrac
+        (Code
+           "typ/math/accent-03.typ"
+           ( line 3 , column 19 )
+           (FuncCall (Ident (Identifier "hat")) [ BlockArg [ Text "f" ] ]))
+        (Code
+           "typ/math/accent-03.typ"
+           ( line 3 , column 26 )
+           (FuncCall (Ident (Identifier "hat")) [ BlockArg [ Text "g" ] ]))
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: false, 
+                               body: { math.sqrt(radicand: math.accent(accent: ∼, 
+                                                                       base: text(body: [T]))), 
+                                       text(body: [+]), 
+                                       math.frac(denom: math.accent(accent: ^, 
+                                                                    base: text(body: [g])), 
+                                                 num: math.accent(accent: ^, 
+                                                                  base: text(body: [f]))) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/accent-04.out b/test/typ/math/accent-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/accent-04.out
@@ -0,0 +1,79 @@
+--- parse tree ---
+[ Code
+    "typ/math/accent-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/accent-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/accent-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    False
+    [ Code
+        "typ/math/accent-04.typ"
+        ( line 3 , column 2 )
+        (FuncCall
+           (Ident (Identifier "arrow"))
+           [ BlockArg [ Text "ABC " , Text "+" , Text "d" ] ])
+    , Text ","
+    , Code
+        "typ/math/accent-04.typ"
+        ( line 3 , column 20 )
+        (FuncCall
+           (Ident (Identifier "tilde"))
+           [ BlockArg
+               [ Code
+                   "typ/math/accent-04.typ"
+                   ( line 3 , column 26 )
+                   (Ident (Identifier "sum"))
+               ]
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: false, 
+                               body: { math.accent(accent: →, 
+                                                   base: { text(body: [ABC ]), 
+                                                           text(body: [+]), 
+                                                           text(body: [d]) }), 
+                                       text(body: [,]), 
+                                       math.accent(accent: ∼, 
+                                                   base: text(body: [∑])) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/accent-05.out b/test/typ/math/accent-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/accent-05.out
@@ -0,0 +1,98 @@
+--- parse tree ---
+[ Code
+    "typ/math/accent-05.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/accent-05.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/accent-05.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    False
+    [ MAttach Nothing (Just (Text "x")) (Text "A")
+    , Code
+        "typ/math/accent-05.typ"
+        ( line 3 , column 6 )
+        (FieldAccess (Ident (Identifier "not")) (Ident (Identifier "eq")))
+    , MAttach
+        Nothing
+        (Just (Text "x"))
+        (Code
+           "typ/math/accent-05.typ"
+           ( line 3 , column 9 )
+           (FuncCall (Ident (Identifier "hat")) [ BlockArg [ Text "A" ] ]))
+    , Code
+        "typ/math/accent-05.typ"
+        ( line 3 , column 18 )
+        (FieldAccess (Ident (Identifier "not")) (Ident (Identifier "eq")))
+    , MAttach
+        Nothing
+        (Just (Text "x"))
+        (Code
+           "typ/math/accent-05.typ"
+           ( line 3 , column 21 )
+           (FuncCall
+              (Ident (Identifier "hat"))
+              [ BlockArg
+                  [ Code
+                      "typ/math/accent-05.typ"
+                      ( line 3 , column 25 )
+                      (FuncCall (Ident (Identifier "hat")) [ BlockArg [ Text "A" ] ])
+                  ]
+              ]))
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: false, 
+                               body: { math.attach(b: none, 
+                                                   base: text(body: [A]), 
+                                                   t: text(body: [x])), 
+                                       text(body: [≠]), 
+                                       math.attach(b: none, 
+                                                   base: math.accent(accent: ^, 
+                                                                     base: text(body: [A])), 
+                                                   t: text(body: [x])), 
+                                       text(body: [≠]), 
+                                       math.attach(b: none, 
+                                                   base: math.accent(accent: ^, 
+                                                                     base: math.accent(accent: ^, 
+                                                                                       base: text(body: [A]))), 
+                                                   t: text(body: [x])) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/accent-06.out b/test/typ/math/accent-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/accent-06.out
@@ -0,0 +1,109 @@
+--- parse tree ---
+[ Code
+    "typ/math/accent-06.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/accent-06.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/accent-06.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Code
+        "typ/math/accent-06.typ"
+        ( line 3 , column 3 )
+        (FuncCall
+           (Ident (Identifier "tilde"))
+           [ BlockArg
+               [ Code
+                   "typ/math/accent-06.typ"
+                   ( line 3 , column 9 )
+                   (Ident (Identifier "integral"))
+               ]
+           ])
+    , Text ","
+    , MAttach
+        (Just (Text "a"))
+        (Just (Text "b"))
+        (Code
+           "typ/math/accent-06.typ"
+           ( line 3 , column 20 )
+           (FuncCall
+              (Ident (Identifier "tilde"))
+              [ BlockArg
+                  [ Code
+                      "typ/math/accent-06.typ"
+                      ( line 3 , column 26 )
+                      (Ident (Identifier "integral"))
+                  ]
+              ]))
+    , Text ","
+    , Code
+        "typ/math/accent-06.typ"
+        ( line 3 , column 41 )
+        (FuncCall
+           (Ident (Identifier "tilde"))
+           [ BlockArg
+               [ MAttach
+                   (Just (Text "a"))
+                   (Just (Text "b"))
+                   (Code
+                      "typ/math/accent-06.typ"
+                      ( line 3 , column 47 )
+                      (Ident (Identifier "integral")))
+               ]
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { math.accent(accent: ∼, 
+                                                   base: text(body: [∫])), 
+                                       text(body: [,]), 
+                                       math.attach(b: text(body: [a]), 
+                                                   base: math.accent(accent: ∼, 
+                                                                     base: text(body: [∫])), 
+                                                   t: text(body: [b])), 
+                                       text(body: [,]), 
+                                       math.accent(accent: ∼, 
+                                                   base: math.attach(b: text(body: [a]), 
+                                                                     base: text(body: [∫]), 
+                                                                     t: text(body: [b]))) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/alignment-00.out b/test/typ/math/alignment-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/alignment-00.out
@@ -0,0 +1,118 @@
+--- parse tree ---
+[ Code
+    "typ/math/alignment-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/alignment-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/alignment-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/math/alignment-00.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 225.0 Pt)) ])
+, SoftBreak
+, Equation
+    True
+    [ Text " a "
+    , MAlignPoint
+    , Text "="
+    , Text "c"
+    , HardBreak
+    , MAlignPoint
+    , Text "="
+    , Text "c"
+    , Text "+"
+    , Text "1"
+    , MAlignPoint
+    , Text " By definition "
+    , HardBreak
+    , MAlignPoint
+    , Text "="
+    , Text "d"
+    , Text "+"
+    , Text "100"
+    , Text "+"
+    , Text "1000"
+    , HardBreak
+    , MAlignPoint
+    , Text "="
+    , Text "x"
+    , MAlignPoint
+    , MAlignPoint
+    , Text " Even longer "
+    , HardBreak
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [ a ]), 
+                                       math.alignpoint(), 
+                                       text(body: [=]), 
+                                       text(body: [c]), 
+                                       linebreak(), 
+                                       math.alignpoint(), 
+                                       text(body: [=]), 
+                                       text(body: [c]), 
+                                       text(body: [+]), 
+                                       text(body: [1]), 
+                                       math.alignpoint(), 
+                                       text(body: [ By definition ]), 
+                                       linebreak(), 
+                                       math.alignpoint(), 
+                                       text(body: [=]), 
+                                       text(body: [d]), 
+                                       text(body: [+]), 
+                                       text(body: [100]), 
+                                       text(body: [+]), 
+                                       text(body: [1000]), 
+                                       linebreak(), 
+                                       math.alignpoint(), 
+                                       text(body: [=]), 
+                                       text(body: [x]), 
+                                       math.alignpoint(), 
+                                       math.alignpoint(), 
+                                       text(body: [ Even longer ]), 
+                                       linebreak() }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/alignment-01.out b/test/typ/math/alignment-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/alignment-01.out
@@ -0,0 +1,67 @@
+--- parse tree ---
+[ Code
+    "typ/math/alignment-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/alignment-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/alignment-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ MAlignPoint
+    , Text " right "
+    , HardBreak
+    , Text "a very long line "
+    , HardBreak
+    , Text "left "
+    , HardBreak
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { math.alignpoint(), 
+                                       text(body: [ right ]), 
+                                       linebreak(), 
+                                       text(body: [a very long line ]), 
+                                       linebreak(), 
+                                       text(body: [left ]), 
+                                       linebreak() }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/alignment-02.out b/test/typ/math/alignment-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/alignment-02.out
@@ -0,0 +1,65 @@
+--- parse tree ---
+[ Code
+    "typ/math/alignment-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/alignment-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/alignment-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Text " right "
+    , HardBreak
+    , Text "a very long line "
+    , HardBreak
+    , Text "left "
+    , HardBreak
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [ right ]), 
+                                       linebreak(), 
+                                       text(body: [a very long line ]), 
+                                       linebreak(), 
+                                       text(body: [left ]), 
+                                       linebreak() }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/alignment-03.out b/test/typ/math/alignment-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/alignment-03.out
@@ -0,0 +1,96 @@
+--- parse tree ---
+[ Code
+    "typ/math/alignment-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/alignment-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/alignment-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Text "a"
+    , MAlignPoint
+    , Text "="
+    , Text "b"
+    , MAlignPoint
+    , Code
+        "typ/math/alignment-03.typ"
+        ( line 4 , column 9 )
+        (Ident (Identifier "quad"))
+    , Text "c"
+    , MAlignPoint
+    , Text "="
+    , Text "d"
+    , HardBreak
+    , Text "e"
+    , MAlignPoint
+    , Text "="
+    , Text "f"
+    , MAlignPoint
+    , Text "g"
+    , MAlignPoint
+    , Text "="
+    , Text "h"
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [a]), 
+                                       math.alignpoint(), 
+                                       text(body: [=]), 
+                                       text(body: [b]), 
+                                       math.alignpoint(), 
+                                       text(body: [ ]), 
+                                       text(body: [c]), 
+                                       math.alignpoint(), 
+                                       text(body: [=]), 
+                                       text(body: [d]), 
+                                       linebreak(), 
+                                       text(body: [e]), 
+                                       math.alignpoint(), 
+                                       text(body: [=]), 
+                                       text(body: [f]), 
+                                       math.alignpoint(), 
+                                       text(body: [g]), 
+                                       math.alignpoint(), 
+                                       text(body: [=]), 
+                                       text(body: [h]) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/attach-00.out b/test/typ/math/attach-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/attach-00.out
@@ -0,0 +1,99 @@
+--- parse tree ---
+[ Code
+    "typ/math/attach-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/attach-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/attach-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    False
+    [ MAttach (Just (Text "x")) Nothing (Text "f")
+    , Text "+"
+    , MAttach Nothing (Just (Text "b")) (Text "t")
+    , Text "+"
+    , MAttach (Just (Text "1")) (Just (Text "2")) (Text "V")
+    , Text "+"
+    , Code
+        "typ/math/attach-00.typ"
+        ( line 3 , column 22 )
+        (FuncCall
+           (Ident (Identifier "attach"))
+           [ BlockArg [ Text "A" ]
+           , KeyValArg
+               (Identifier "t")
+               (Block
+                  (Content
+                     [ Code
+                         "typ/math/attach-00.typ"
+                         ( line 3 , column 35 )
+                         (Ident (Identifier "alpha"))
+                     ]))
+           , KeyValArg
+               (Identifier "b")
+               (Block
+                  (Content
+                     [ Code
+                         "typ/math/attach-00.typ"
+                         ( line 3 , column 45 )
+                         (Ident (Identifier "beta"))
+                     ]))
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: false, 
+                               body: { math.attach(b: text(body: [x]), 
+                                                   base: text(body: [f]), 
+                                                   t: none), 
+                                       text(body: [+]), 
+                                       math.attach(b: none, 
+                                                   base: text(body: [t]), 
+                                                   t: text(body: [b])), 
+                                       text(body: [+]), 
+                                       math.attach(b: text(body: [1]), 
+                                                   base: text(body: [V]), 
+                                                   t: text(body: [2])), 
+                                       text(body: [+]), 
+                                       math.attach(b: text(body: [β]), 
+                                                   base: text(body: [A]), 
+                                                   t: text(body: [α])) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/attach-01.out b/test/typ/math/attach-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/attach-01.out
@@ -0,0 +1,143 @@
+--- parse tree ---
+[ Code
+    "typ/math/attach-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/attach-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/attach-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Equation
+    True
+    [ Code
+        "typ/math/attach-01.typ"
+        ( line 5 , column 1 )
+        (FuncCall
+           (Ident (Identifier "attach"))
+           [ BlockArg
+               [ Code
+                   "typ/math/attach-01.typ"
+                   ( line 5 , column 8 )
+                   (FuncCall (Ident (Identifier "upright")) [ BlockArg [ Text "O" ] ])
+               ]
+           , KeyValArg (Identifier "bl") (Block (Content [ Text "8" ]))
+           , KeyValArg (Identifier "tl") (Block (Content [ Text "16" ]))
+           , KeyValArg (Identifier "br") (Block (Content [ Text "2" ]))
+           , KeyValArg
+               (Identifier "tr")
+               (Block
+                  (Content
+                     [ Text "2"
+                     , Code
+                         "typ/math/attach-01.typ"
+                         ( line 5 , column 47 )
+                         (Ident (Identifier "minus"))
+                     ]))
+           ])
+    , Text ","
+    , Code
+        "typ/math/attach-01.typ"
+        ( line 6 , column 1 )
+        (FuncCall
+           (Ident (Identifier "attach"))
+           [ BlockArg [ Text "Pb" ]
+           , KeyValArg (Identifier "bl") (Block (Content [ Text "82" ]))
+           , KeyValArg (Identifier "tl") (Block (Content [ Text "207" ]))
+           ])
+    , Text "+"
+    , Code
+        "typ/math/attach-01.typ"
+        ( line 6 , column 33 )
+        (FuncCall
+           (Ident (Identifier "attach"))
+           [ BlockArg
+               [ Code
+                   "typ/math/attach-01.typ"
+                   ( line 6 , column 40 )
+                   (FuncCall (Ident (Identifier "upright")) [ BlockArg [ Text "e" ] ])
+               ]
+           , KeyValArg
+               (Identifier "bl")
+               (Block
+                  (Content
+                     [ Code
+                         "typ/math/attach-01.typ"
+                         ( line 6 , column 56 )
+                         (Ident (Identifier "minus"))
+                     , Text "1"
+                     ]))
+           , KeyValArg (Identifier "tl") (Block (Content [ Text "0" ]))
+           ])
+    , Text "+"
+    , MAttach
+        (Just (Text "e"))
+        Nothing
+        (Code
+           "typ/math/attach-01.typ"
+           ( line 6 , column 69 )
+           (FuncCall (Ident (Identifier "macron")) [ BlockArg [ Text "v" ] ]))
+    , HardBreak
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { math.attach(base: math.upright(body: text(body: [O])), 
+                                                   bl: text(body: [8]), 
+                                                   br: text(body: [2]), 
+                                                   tl: text(body: [16]), 
+                                                   tr: { text(body: [2]), 
+                                                         text(body: [−]) }), 
+                                       text(body: [,]), 
+                                       math.attach(base: text(body: [Pb]), 
+                                                   bl: text(body: [82]), 
+                                                   tl: text(body: [207])), 
+                                       text(body: [+]), 
+                                       math.attach(base: math.upright(body: text(body: [e])), 
+                                                   bl: { text(body: [−]), 
+                                                         text(body: [1]) }, 
+                                                   tl: text(body: [0])), 
+                                       text(body: [+]), 
+                                       math.attach(b: text(body: [e]), 
+                                                   base: math.accent(accent: ¯, 
+                                                                     base: text(body: [v])), 
+                                                   t: none), 
+                                       linebreak() }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/attach-02.out b/test/typ/math/attach-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/attach-02.out
@@ -0,0 +1,465 @@
+--- parse tree ---
+[ Code
+    "typ/math/attach-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/attach-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/attach-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Code
+        "typ/math/attach-02.typ"
+        ( line 4 , column 1 )
+        (FuncCall
+           (Ident (Identifier "attach"))
+           [ BlockArg [ Text "a" ]
+           , KeyValArg (Identifier "tl") (Block (Content [ Text "u" ]))
+           ])
+    , Text ","
+    , Code
+        "typ/math/attach-02.typ"
+        ( line 4 , column 21 )
+        (FuncCall
+           (Ident (Identifier "attach"))
+           [ BlockArg [ Text "a" ]
+           , KeyValArg (Identifier "tr") (Block (Content [ Text "v" ]))
+           ])
+    , Text ","
+    , Code
+        "typ/math/attach-02.typ"
+        ( line 4 , column 41 )
+        (FuncCall
+           (Ident (Identifier "attach"))
+           [ BlockArg [ Text "a" ]
+           , KeyValArg (Identifier "bl") (Block (Content [ Text "x" ]))
+           ])
+    , Text ","
+    , Code
+        "typ/math/attach-02.typ"
+        ( line 5 , column 1 )
+        (FuncCall
+           (Ident (Identifier "attach"))
+           [ BlockArg [ Text "a" ]
+           , KeyValArg (Identifier "br") (Block (Content [ Text "y" ]))
+           ])
+    , Text ","
+    , MAttach
+        Nothing
+        (Just (Text "t"))
+        (Code
+           "typ/math/attach-02.typ"
+           ( line 5 , column 21 )
+           (FuncCall (Ident (Identifier "limits")) [ BlockArg [ Text "a" ] ]))
+    , Text ","
+    , MAttach
+        (Just (Text "b"))
+        Nothing
+        (Code
+           "typ/math/attach-02.typ"
+           ( line 5 , column 41 )
+           (FuncCall (Ident (Identifier "limits")) [ BlockArg [ Text "a" ] ]))
+    , HardBreak
+    , Code
+        "typ/math/attach-02.typ"
+        ( line 7 , column 1 )
+        (FuncCall
+           (Ident (Identifier "attach"))
+           [ BlockArg [ Text "a" ]
+           , KeyValArg (Identifier "tr") (Block (Content [ Text "v" ]))
+           , KeyValArg (Identifier "t") (Block (Content [ Text "t" ]))
+           ])
+    , Text ","
+    , Code
+        "typ/math/attach-02.typ"
+        ( line 8 , column 1 )
+        (FuncCall
+           (Ident (Identifier "attach"))
+           [ BlockArg [ Text "a" ]
+           , KeyValArg (Identifier "tr") (Block (Content [ Text "v" ]))
+           , KeyValArg (Identifier "br") (Block (Content [ Text "y" ]))
+           ])
+    , Text ","
+    , Code
+        "typ/math/attach-02.typ"
+        ( line 9 , column 1 )
+        (FuncCall
+           (Ident (Identifier "attach"))
+           [ BlockArg [ Text "a" ]
+           , KeyValArg (Identifier "br") (Block (Content [ Text "y" ]))
+           , KeyValArg (Identifier "b") (Block (Content [ Text "b" ]))
+           ])
+    , Text ","
+    , Code
+        "typ/math/attach-02.typ"
+        ( line 10 , column 1 )
+        (FuncCall
+           (Ident (Identifier "attach"))
+           [ BlockArg
+               [ Code
+                   "typ/math/attach-02.typ"
+                   ( line 10 , column 8 )
+                   (FuncCall (Ident (Identifier "limits")) [ BlockArg [ Text "a" ] ])
+               ]
+           , KeyValArg (Identifier "b") (Block (Content [ Text "b" ]))
+           , KeyValArg (Identifier "bl") (Block (Content [ Text "x" ]))
+           ])
+    , Text ","
+    , Code
+        "typ/math/attach-02.typ"
+        ( line 11 , column 1 )
+        (FuncCall
+           (Ident (Identifier "attach"))
+           [ BlockArg [ Text "a" ]
+           , KeyValArg (Identifier "tl") (Block (Content [ Text "u" ]))
+           , KeyValArg (Identifier "bl") (Block (Content [ Text "x" ]))
+           ])
+    , Text ","
+    , Code
+        "typ/math/attach-02.typ"
+        ( line 12 , column 1 )
+        (FuncCall
+           (Ident (Identifier "attach"))
+           [ BlockArg
+               [ Code
+                   "typ/math/attach-02.typ"
+                   ( line 12 , column 8 )
+                   (FuncCall (Ident (Identifier "limits")) [ BlockArg [ Text "a" ] ])
+               ]
+           , KeyValArg (Identifier "t") (Block (Content [ Text "t" ]))
+           , KeyValArg (Identifier "tl") (Block (Content [ Text "u" ]))
+           ])
+    , HardBreak
+    , Code
+        "typ/math/attach-02.typ"
+        ( line 14 , column 1 )
+        (FuncCall
+           (Ident (Identifier "attach"))
+           [ BlockArg [ Text "a" ]
+           , KeyValArg (Identifier "tl") (Block (Content [ Text "u" ]))
+           , KeyValArg (Identifier "tr") (Block (Content [ Text "v" ]))
+           ])
+    , Text ","
+    , Code
+        "typ/math/attach-02.typ"
+        ( line 15 , column 1 )
+        (FuncCall
+           (Ident (Identifier "attach"))
+           [ BlockArg
+               [ Code
+                   "typ/math/attach-02.typ"
+                   ( line 15 , column 8 )
+                   (FuncCall (Ident (Identifier "limits")) [ BlockArg [ Text "a" ] ])
+               ]
+           , KeyValArg (Identifier "t") (Block (Content [ Text "t" ]))
+           , KeyValArg (Identifier "br") (Block (Content [ Text "y" ]))
+           ])
+    , Text ","
+    , Code
+        "typ/math/attach-02.typ"
+        ( line 16 , column 1 )
+        (FuncCall
+           (Ident (Identifier "attach"))
+           [ BlockArg
+               [ Code
+                   "typ/math/attach-02.typ"
+                   ( line 16 , column 8 )
+                   (FuncCall (Ident (Identifier "limits")) [ BlockArg [ Text "a" ] ])
+               ]
+           , KeyValArg (Identifier "b") (Block (Content [ Text "b" ]))
+           , KeyValArg (Identifier "tr") (Block (Content [ Text "v" ]))
+           ])
+    , Text ","
+    , Code
+        "typ/math/attach-02.typ"
+        ( line 17 , column 1 )
+        (FuncCall
+           (Ident (Identifier "attach"))
+           [ BlockArg [ Text "a" ]
+           , KeyValArg (Identifier "bl") (Block (Content [ Text "x" ]))
+           , KeyValArg (Identifier "br") (Block (Content [ Text "y" ]))
+           ])
+    , Text ","
+    , Code
+        "typ/math/attach-02.typ"
+        ( line 18 , column 1 )
+        (FuncCall
+           (Ident (Identifier "attach"))
+           [ BlockArg
+               [ Code
+                   "typ/math/attach-02.typ"
+                   ( line 18 , column 8 )
+                   (FuncCall (Ident (Identifier "limits")) [ BlockArg [ Text "a" ] ])
+               ]
+           , KeyValArg (Identifier "b") (Block (Content [ Text "b" ]))
+           , KeyValArg (Identifier "tl") (Block (Content [ Text "u" ]))
+           ])
+    , Text ","
+    , Code
+        "typ/math/attach-02.typ"
+        ( line 19 , column 1 )
+        (FuncCall
+           (Ident (Identifier "attach"))
+           [ BlockArg
+               [ Code
+                   "typ/math/attach-02.typ"
+                   ( line 19 , column 8 )
+                   (FuncCall (Ident (Identifier "limits")) [ BlockArg [ Text "a" ] ])
+               ]
+           , KeyValArg (Identifier "t") (Block (Content [ Text "t" ]))
+           , KeyValArg (Identifier "bl") (Block (Content [ Text "u" ]))
+           ])
+    , Text ","
+    , MAttach
+        (Just (Text "b"))
+        (Just (Text "t"))
+        (Code
+           "typ/math/attach-02.typ"
+           ( line 20 , column 1 )
+           (FuncCall (Ident (Identifier "limits")) [ BlockArg [ Text "a" ] ]))
+    , HardBreak
+    , Code
+        "typ/math/attach-02.typ"
+        ( line 22 , column 1 )
+        (FuncCall
+           (Ident (Identifier "attach"))
+           [ BlockArg [ Text "a" ]
+           , KeyValArg (Identifier "tl") (Block (Content [ Text "u" ]))
+           , KeyValArg (Identifier "tr") (Block (Content [ Text "v" ]))
+           , KeyValArg (Identifier "bl") (Block (Content [ Text "x" ]))
+           , KeyValArg (Identifier "br") (Block (Content [ Text "y" ]))
+           ])
+    , Text ","
+    , Code
+        "typ/math/attach-02.typ"
+        ( line 23 , column 1 )
+        (FuncCall
+           (Ident (Identifier "attach"))
+           [ BlockArg
+               [ Code
+                   "typ/math/attach-02.typ"
+                   ( line 23 , column 8 )
+                   (FuncCall (Ident (Identifier "limits")) [ BlockArg [ Text "a" ] ])
+               ]
+           , KeyValArg (Identifier "t") (Block (Content [ Text "t" ]))
+           , KeyValArg (Identifier "bl") (Block (Content [ Text "x" ]))
+           , KeyValArg (Identifier "br") (Block (Content [ Text "y" ]))
+           , KeyValArg (Identifier "b") (Block (Content [ Text "b" ]))
+           ])
+    , Text ","
+    , Code
+        "typ/math/attach-02.typ"
+        ( line 24 , column 1 )
+        (FuncCall
+           (Ident (Identifier "attach"))
+           [ BlockArg
+               [ Code
+                   "typ/math/attach-02.typ"
+                   ( line 24 , column 8 )
+                   (FuncCall (Ident (Identifier "limits")) [ BlockArg [ Text "a" ] ])
+               ]
+           , KeyValArg (Identifier "t") (Block (Content [ Text "t" ]))
+           , KeyValArg (Identifier "tl") (Block (Content [ Text "u" ]))
+           , KeyValArg (Identifier "tr") (Block (Content [ Text "v" ]))
+           , KeyValArg (Identifier "b") (Block (Content [ Text "b" ]))
+           ])
+    , Text ","
+    , Code
+        "typ/math/attach-02.typ"
+        ( line 25 , column 1 )
+        (FuncCall
+           (Ident (Identifier "attach"))
+           [ BlockArg
+               [ Code
+                   "typ/math/attach-02.typ"
+                   ( line 25 , column 8 )
+                   (FuncCall (Ident (Identifier "limits")) [ BlockArg [ Text "a" ] ])
+               ]
+           , KeyValArg (Identifier "tl") (Block (Content [ Text "u" ]))
+           , KeyValArg (Identifier "bl") (Block (Content [ Text "x" ]))
+           , KeyValArg (Identifier "t") (Block (Content [ Text "t" ]))
+           , KeyValArg (Identifier "b") (Block (Content [ Text "b" ]))
+           ])
+    , Text ","
+    , Code
+        "typ/math/attach-02.typ"
+        ( line 26 , column 1 )
+        (FuncCall
+           (Ident (Identifier "attach"))
+           [ BlockArg
+               [ Code
+                   "typ/math/attach-02.typ"
+                   ( line 26 , column 8 )
+                   (FuncCall (Ident (Identifier "limits")) [ BlockArg [ Text "a" ] ])
+               ]
+           , KeyValArg (Identifier "t") (Block (Content [ Text "t" ]))
+           , KeyValArg (Identifier "b") (Block (Content [ Text "b" ]))
+           , KeyValArg (Identifier "tr") (Block (Content [ Text "v" ]))
+           , KeyValArg (Identifier "br") (Block (Content [ Text "y" ]))
+           ])
+    , Text ","
+    , Code
+        "typ/math/attach-02.typ"
+        ( line 27 , column 1 )
+        (FuncCall
+           (Ident (Identifier "attach"))
+           [ BlockArg [ Text "a" ]
+           , KeyValArg (Identifier "tl") (Block (Content [ Text "u" ]))
+           , KeyValArg (Identifier "t") (Block (Content [ Text "t" ]))
+           , KeyValArg (Identifier "tr") (Block (Content [ Text "v" ]))
+           , KeyValArg (Identifier "bl") (Block (Content [ Text "x" ]))
+           , KeyValArg (Identifier "b") (Block (Content [ Text "b" ]))
+           , KeyValArg (Identifier "br") (Block (Content [ Text "y" ]))
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { math.attach(base: text(body: [a]), 
+                                                   tl: text(body: [u])), 
+                                       text(body: [,]), 
+                                       math.attach(base: text(body: [a]), 
+                                                   tr: text(body: [v])), 
+                                       text(body: [,]), 
+                                       math.attach(base: text(body: [a]), 
+                                                   bl: text(body: [x])), 
+                                       text(body: [,]), 
+                                       math.attach(base: text(body: [a]), 
+                                                   br: text(body: [y])), 
+                                       text(body: [,]), 
+                                       math.attach(b: none, 
+                                                   base: math.limits(body: text(body: [a])), 
+                                                   t: text(body: [t])), 
+                                       text(body: [,]), 
+                                       math.attach(b: text(body: [b]), 
+                                                   base: math.limits(body: text(body: [a])), 
+                                                   t: none), 
+                                       linebreak(), 
+                                       math.attach(base: text(body: [a]), 
+                                                   t: text(body: [t]), 
+                                                   tr: text(body: [v])), 
+                                       text(body: [,]), 
+                                       math.attach(base: text(body: [a]), 
+                                                   br: text(body: [y]), 
+                                                   tr: text(body: [v])), 
+                                       text(body: [,]), 
+                                       math.attach(b: text(body: [b]), 
+                                                   base: text(body: [a]), 
+                                                   br: text(body: [y])), 
+                                       text(body: [,]), 
+                                       math.attach(b: text(body: [b]), 
+                                                   base: math.limits(body: text(body: [a])), 
+                                                   bl: text(body: [x])), 
+                                       text(body: [,]), 
+                                       math.attach(base: text(body: [a]), 
+                                                   bl: text(body: [x]), 
+                                                   tl: text(body: [u])), 
+                                       text(body: [,]), 
+                                       math.attach(base: math.limits(body: text(body: [a])), 
+                                                   t: text(body: [t]), 
+                                                   tl: text(body: [u])), 
+                                       linebreak(), 
+                                       math.attach(base: text(body: [a]), 
+                                                   tl: text(body: [u]), 
+                                                   tr: text(body: [v])), 
+                                       text(body: [,]), 
+                                       math.attach(base: math.limits(body: text(body: [a])), 
+                                                   br: text(body: [y]), 
+                                                   t: text(body: [t])), 
+                                       text(body: [,]), 
+                                       math.attach(b: text(body: [b]), 
+                                                   base: math.limits(body: text(body: [a])), 
+                                                   tr: text(body: [v])), 
+                                       text(body: [,]), 
+                                       math.attach(base: text(body: [a]), 
+                                                   bl: text(body: [x]), 
+                                                   br: text(body: [y])), 
+                                       text(body: [,]), 
+                                       math.attach(b: text(body: [b]), 
+                                                   base: math.limits(body: text(body: [a])), 
+                                                   tl: text(body: [u])), 
+                                       text(body: [,]), 
+                                       math.attach(base: math.limits(body: text(body: [a])), 
+                                                   bl: text(body: [u]), 
+                                                   t: text(body: [t])), 
+                                       text(body: [,]), 
+                                       math.attach(b: text(body: [b]), 
+                                                   base: math.limits(body: text(body: [a])), 
+                                                   t: text(body: [t])), 
+                                       linebreak(), 
+                                       math.attach(base: text(body: [a]), 
+                                                   bl: text(body: [x]), 
+                                                   br: text(body: [y]), 
+                                                   tl: text(body: [u]), 
+                                                   tr: text(body: [v])), 
+                                       text(body: [,]), 
+                                       math.attach(b: text(body: [b]), 
+                                                   base: math.limits(body: text(body: [a])), 
+                                                   bl: text(body: [x]), 
+                                                   br: text(body: [y]), 
+                                                   t: text(body: [t])), 
+                                       text(body: [,]), 
+                                       math.attach(b: text(body: [b]), 
+                                                   base: math.limits(body: text(body: [a])), 
+                                                   t: text(body: [t]), 
+                                                   tl: text(body: [u]), 
+                                                   tr: text(body: [v])), 
+                                       text(body: [,]), 
+                                       math.attach(b: text(body: [b]), 
+                                                   base: math.limits(body: text(body: [a])), 
+                                                   bl: text(body: [x]), 
+                                                   t: text(body: [t]), 
+                                                   tl: text(body: [u])), 
+                                       text(body: [,]), 
+                                       math.attach(b: text(body: [b]), 
+                                                   base: math.limits(body: text(body: [a])), 
+                                                   br: text(body: [y]), 
+                                                   t: text(body: [t]), 
+                                                   tr: text(body: [v])), 
+                                       text(body: [,]), 
+                                       math.attach(b: text(body: [b]), 
+                                                   base: text(body: [a]), 
+                                                   bl: text(body: [x]), 
+                                                   br: text(body: [y]), 
+                                                   t: text(body: [t]), 
+                                                   tl: text(body: [u]), 
+                                                   tr: text(body: [v])) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/attach-03.out b/test/typ/math/attach-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/attach-03.out
@@ -0,0 +1,157 @@
+--- parse tree ---
+[ Code
+    "typ/math/attach-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/attach-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/attach-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    False
+    [ MAttach
+        (Just (Text "1"))
+        Nothing
+        (Code
+           "typ/math/attach-03.typ"
+           ( line 3 , column 2 )
+           (Ident (Identifier "pi")))
+    , MGroup (Just "(") (Just ")") [ Text "Y" ]
+    , Text ","
+    , MAttach
+        (Just
+           (MGroup
+              Nothing
+              Nothing
+              [ Text "f" , MGroup (Just "(") (Just ")") [ Text "x" ] ]))
+        Nothing
+        (Text "a")
+    , Text ","
+    , MAttach
+        Nothing
+        (Just
+           (Code
+              "typ/math/attach-03.typ"
+              ( line 3 , column 21 )
+              (FuncCall (Ident (Identifier "zeta")) [ BlockArg [ Text "x" ] ])))
+        (Text "a")
+    , HardBreak
+    , MAttach
+        Nothing
+        (Just
+           (Code
+              "typ/math/attach-03.typ"
+              ( line 4 , column 4 )
+              (FuncCall
+                 (FieldAccess
+                    (Ident (Identifier "eq")) (Ident (Identifier "subset")))
+                 [ BlockArg [ Text "x" ] ])))
+        (Text "a")
+    , Text ","
+    , MAttach
+        (Just
+           (MGroup
+              Nothing
+              Nothing
+              [ Code
+                  "typ/math/attach-03.typ"
+                  ( line 4 , column 21 )
+                  (FuncCall (Ident (Identifier "zeta")) [ BlockArg [ Text "x" ] ])
+              ]))
+        Nothing
+        (Text "a")
+    , Text ","
+    , MAttach
+        (Just
+           (MGroup
+              Nothing
+              Nothing
+              [ Text "1" , MGroup (Just "(") (Just ")") [ Text "Y" ] ]))
+        Nothing
+        (Code
+           "typ/math/attach-03.typ"
+           ( line 4 , column 31 )
+           (Ident (Identifier "pi")))
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: false, 
+                               body: { math.attach(b: text(body: [1]), 
+                                                   base: text(body: [π]), 
+                                                   t: none), 
+                                       math.lr(body: ({ [(], 
+                                                        text(body: [Y]), 
+                                                        [)] })), 
+                                       text(body: [,]), 
+                                       math.attach(b: { text(body: [f]), 
+                                                        math.lr(body: ({ [(], 
+                                                                         text(body: [x]), 
+                                                                         [)] })) }, 
+                                                   base: text(body: [a]), 
+                                                   t: none), 
+                                       text(body: [,]), 
+                                       math.attach(b: none, 
+                                                   base: text(body: [a]), 
+                                                   t: { text(body: [ζ]), 
+                                                        text(body: [(]), 
+                                                        text(body: [x]), 
+                                                        text(body: [)]) }), 
+                                       linebreak(), 
+                                       math.attach(b: none, 
+                                                   base: text(body: [a]), 
+                                                   t: { text(body: [⊆]), 
+                                                        text(body: [(]), 
+                                                        text(body: [x]), 
+                                                        text(body: [)]) }), 
+                                       text(body: [,]), 
+                                       math.attach(b: { text(body: [ζ]), 
+                                                        text(body: [(]), 
+                                                        text(body: [x]), 
+                                                        text(body: [)]) }, 
+                                                   base: text(body: [a]), 
+                                                   t: none), 
+                                       text(body: [,]), 
+                                       math.attach(b: { text(body: [1]), 
+                                                        math.lr(body: ({ [(], 
+                                                                         text(body: [Y]), 
+                                                                         [)] })) }, 
+                                                   base: text(body: [π]), 
+                                                   t: none) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/attach-04.out b/test/typ/math/attach-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/attach-04.out
@@ -0,0 +1,322 @@
+--- parse tree ---
+[ Code
+    "typ/math/attach-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/attach-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/attach-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ MFrac
+        (Text "1")
+        (MGroup
+           Nothing
+           Nothing
+           [ MAttach
+               Nothing
+               (Just (Text "5"))
+               (MAttach
+                  Nothing
+                  (Just (Text "4"))
+                  (MAttach
+                     Nothing
+                     (Just (Text "3"))
+                     (MAttach Nothing (Just (Text "2")) (Text "V"))))
+           ])
+    , Text ","
+    , MFrac
+        (Text "1")
+        (Code
+           "typ/math/attach-04.typ"
+           ( line 4 , column 5 )
+           (FuncCall
+              (Ident (Identifier "attach"))
+              [ BlockArg [ Text "V" ]
+              , KeyValArg
+                  (Identifier "tl")
+                  (Block
+                     (Content
+                        [ Code
+                            "typ/math/attach-04.typ"
+                            ( line 4 , column 19 )
+                            (FuncCall
+                               (Ident (Identifier "attach"))
+                               [ BlockArg [ Text "2" ]
+                               , KeyValArg
+                                   (Identifier "tl")
+                                   (Block
+                                      (Content
+                                         [ Code
+                                             "typ/math/attach-04.typ"
+                                             ( line 4 , column 33 )
+                                             (FuncCall
+                                                (Ident (Identifier "attach"))
+                                                [ BlockArg [ Text "3" ]
+                                                , KeyValArg
+                                                    (Identifier "tl")
+                                                    (Block
+                                                       (Content
+                                                          [ Code
+                                                              "typ/math/attach-04.typ"
+                                                              ( line 4 , column 47 )
+                                                              (FuncCall
+                                                                 (Ident (Identifier "attach"))
+                                                                 [ BlockArg [ Text "4" ]
+                                                                 , KeyValArg
+                                                                     (Identifier "tl")
+                                                                     (Block (Content [ Text "5" ]))
+                                                                 ])
+                                                          ]))
+                                                ])
+                                         ]))
+                               ])
+                        ]))
+              ]))
+    , Text ","
+    , Code
+        "typ/math/attach-04.typ"
+        ( line 5 , column 3 )
+        (FuncCall
+           (Ident (Identifier "attach"))
+           [ BlockArg
+               [ Code
+                   "typ/math/attach-04.typ"
+                   ( line 5 , column 10 )
+                   (Ident (Identifier "Omega"))
+               ]
+           , KeyValArg
+               (Identifier "tl")
+               (Block
+                  (Content
+                     [ Code
+                         "typ/math/attach-04.typ"
+                         ( line 6 , column 9 )
+                         (FuncCall
+                            (Ident (Identifier "attach"))
+                            [ BlockArg [ Text "2" ]
+                            , KeyValArg
+                                (Identifier "tl")
+                                (Block
+                                   (Content
+                                      [ Code
+                                          "typ/math/attach-04.typ"
+                                          ( line 6 , column 23 )
+                                          (FuncCall
+                                             (Ident (Identifier "attach"))
+                                             [ BlockArg [ Text "3" ]
+                                             , KeyValArg
+                                                 (Identifier "tl")
+                                                 (Block
+                                                    (Content
+                                                       [ Code
+                                                           "typ/math/attach-04.typ"
+                                                           ( line 6 , column 37 )
+                                                           (FuncCall
+                                                              (Ident (Identifier "attach"))
+                                                              [ BlockArg [ Text "4" ]
+                                                              , KeyValArg
+                                                                  (Identifier "tl")
+                                                                  (Block (Content [ Text "5" ]))
+                                                              ])
+                                                       ]))
+                                             ])
+                                      ]))
+                            ])
+                     ]))
+           , KeyValArg
+               (Identifier "tr")
+               (Block
+                  (Content
+                     [ Code
+                         "typ/math/attach-04.typ"
+                         ( line 7 , column 9 )
+                         (FuncCall
+                            (Ident (Identifier "attach"))
+                            [ BlockArg [ Text "2" ]
+                            , KeyValArg
+                                (Identifier "tr")
+                                (Block
+                                   (Content
+                                      [ Code
+                                          "typ/math/attach-04.typ"
+                                          ( line 7 , column 23 )
+                                          (FuncCall
+                                             (Ident (Identifier "attach"))
+                                             [ BlockArg [ Text "3" ]
+                                             , KeyValArg
+                                                 (Identifier "tr")
+                                                 (Block
+                                                    (Content
+                                                       [ Code
+                                                           "typ/math/attach-04.typ"
+                                                           ( line 7 , column 37 )
+                                                           (FuncCall
+                                                              (Ident (Identifier "attach"))
+                                                              [ BlockArg [ Text "4" ]
+                                                              , KeyValArg
+                                                                  (Identifier "tr")
+                                                                  (Block (Content [ Text "5" ]))
+                                                              ])
+                                                       ]))
+                                             ])
+                                      ]))
+                            ])
+                     ]))
+           , KeyValArg
+               (Identifier "bl")
+               (Block
+                  (Content
+                     [ Code
+                         "typ/math/attach-04.typ"
+                         ( line 8 , column 9 )
+                         (FuncCall
+                            (Ident (Identifier "attach"))
+                            [ BlockArg [ Text "2" ]
+                            , KeyValArg
+                                (Identifier "bl")
+                                (Block
+                                   (Content
+                                      [ Code
+                                          "typ/math/attach-04.typ"
+                                          ( line 8 , column 23 )
+                                          (FuncCall
+                                             (Ident (Identifier "attach"))
+                                             [ BlockArg [ Text "3" ]
+                                             , KeyValArg
+                                                 (Identifier "bl")
+                                                 (Block
+                                                    (Content
+                                                       [ Code
+                                                           "typ/math/attach-04.typ"
+                                                           ( line 8 , column 37 )
+                                                           (FuncCall
+                                                              (Ident (Identifier "attach"))
+                                                              [ BlockArg [ Text "4" ]
+                                                              , KeyValArg
+                                                                  (Identifier "bl")
+                                                                  (Block (Content [ Text "5" ]))
+                                                              ])
+                                                       ]))
+                                             ])
+                                      ]))
+                            ])
+                     ]))
+           , KeyValArg
+               (Identifier "br")
+               (Block
+                  (Content
+                     [ Code
+                         "typ/math/attach-04.typ"
+                         ( line 9 , column 9 )
+                         (FuncCall
+                            (Ident (Identifier "attach"))
+                            [ BlockArg [ Text "2" ]
+                            , KeyValArg
+                                (Identifier "br")
+                                (Block
+                                   (Content
+                                      [ Code
+                                          "typ/math/attach-04.typ"
+                                          ( line 9 , column 23 )
+                                          (FuncCall
+                                             (Ident (Identifier "attach"))
+                                             [ BlockArg [ Text "3" ]
+                                             , KeyValArg
+                                                 (Identifier "br")
+                                                 (Block
+                                                    (Content
+                                                       [ Code
+                                                           "typ/math/attach-04.typ"
+                                                           ( line 9 , column 37 )
+                                                           (FuncCall
+                                                              (Ident (Identifier "attach"))
+                                                              [ BlockArg [ Text "4" ]
+                                                              , KeyValArg
+                                                                  (Identifier "br")
+                                                                  (Block (Content [ Text "5" ]))
+                                                              ])
+                                                       ]))
+                                             ])
+                                      ]))
+                            ])
+                     ]))
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { math.frac(denom: math.attach(b: none, 
+                                                                    base: math.attach(b: none, 
+                                                                                      base: math.attach(b: none, 
+                                                                                                        base: math.attach(b: none, 
+                                                                                                                          base: text(body: [V]), 
+                                                                                                                          t: text(body: [2])), 
+                                                                                                        t: text(body: [3])), 
+                                                                                      t: text(body: [4])), 
+                                                                    t: text(body: [5])), 
+                                                 num: text(body: [1])), 
+                                       text(body: [,]), 
+                                       math.frac(denom: math.attach(base: text(body: [V]), 
+                                                                    tl: math.attach(base: text(body: [2]), 
+                                                                                    tl: math.attach(base: text(body: [3]), 
+                                                                                                    tl: math.attach(base: text(body: [4]), 
+                                                                                                                    tl: text(body: [5]))))), 
+                                                 num: text(body: [1])), 
+                                       text(body: [,]), 
+                                       math.attach(base: text(body: [Ω]), 
+                                                   bl: math.attach(base: text(body: [2]), 
+                                                                   bl: math.attach(base: text(body: [3]), 
+                                                                                   bl: math.attach(base: text(body: [4]), 
+                                                                                                   bl: text(body: [5])))), 
+                                                   br: math.attach(base: text(body: [2]), 
+                                                                   br: math.attach(base: text(body: [3]), 
+                                                                                   br: math.attach(base: text(body: [4]), 
+                                                                                                   br: text(body: [5])))), 
+                                                   tl: math.attach(base: text(body: [2]), 
+                                                                   tl: math.attach(base: text(body: [3]), 
+                                                                                   tl: math.attach(base: text(body: [4]), 
+                                                                                                   tl: text(body: [5])))), 
+                                                   tr: math.attach(base: text(body: [2]), 
+                                                                   tr: math.attach(base: text(body: [3]), 
+                                                                                   tr: math.attach(base: text(body: [4]), 
+                                                                                                   tr: text(body: [5]))))) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/attach-05.out b/test/typ/math/attach-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/attach-05.out
@@ -0,0 +1,174 @@
+--- parse tree ---
+[ Code
+    "typ/math/attach-05.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/attach-05.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/attach-05.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Code
+        "typ/math/attach-05.typ"
+        ( line 3 , column 3 )
+        (FuncCall
+           (Ident (Identifier "sqrt"))
+           [ BlockArg
+               [ MAttach
+                   (Just (MGroup Nothing Nothing [ MFrac (Text "1") (Text "2") ]))
+                   (Just
+                      (Code
+                         "typ/math/attach-05.typ"
+                         ( line 3 , column 16 )
+                         (Ident (Identifier "zeta"))))
+                   (Text "a")
+               ]
+           ])
+    , Text ","
+    , Code
+        "typ/math/attach-05.typ"
+        ( line 3 , column 23 )
+        (FuncCall
+           (Ident (Identifier "sqrt"))
+           [ BlockArg
+               [ MAttach
+                   (Just
+                      (Code
+                         "typ/math/attach-05.typ"
+                         ( line 3 , column 30 )
+                         (Ident (Identifier "alpha"))))
+                   (Just (MGroup Nothing Nothing [ MFrac (Text "1") (Text "2") ]))
+                   (Text "a")
+               ]
+           ])
+    , Text ","
+    , Code
+        "typ/math/attach-05.typ"
+        ( line 3 , column 44 )
+        (FuncCall
+           (Ident (Identifier "sqrt"))
+           [ BlockArg
+               [ MAttach
+                   (Just (MGroup Nothing Nothing [ MFrac (Text "1") (Text "2") ]))
+                   (Just (MGroup Nothing Nothing [ MFrac (Text "3") (Text "4") ]))
+                   (Text "a")
+               ]
+           ])
+    , HardBreak
+    , Code
+        "typ/math/attach-05.typ"
+        ( line 4 , column 3 )
+        (FuncCall
+           (Ident (Identifier "sqrt"))
+           [ BlockArg
+               [ Code
+                   "typ/math/attach-05.typ"
+                   ( line 4 , column 8 )
+                   (FuncCall
+                      (Ident (Identifier "attach"))
+                      [ BlockArg [ Text "a" ]
+                      , KeyValArg
+                          (Identifier "tl") (Block (Content [ MFrac (Text "1") (Text "2") ]))
+                      , KeyValArg
+                          (Identifier "bl") (Block (Content [ MFrac (Text "3") (Text "4") ]))
+                      ])
+               ]
+           ])
+    , Text ","
+    , Code
+        "typ/math/attach-05.typ"
+        ( line 5 , column 3 )
+        (FuncCall
+           (Ident (Identifier "sqrt"))
+           [ BlockArg
+               [ Code
+                   "typ/math/attach-05.typ"
+                   ( line 5 , column 8 )
+                   (FuncCall
+                      (Ident (Identifier "attach"))
+                      [ BlockArg [ Text "a" ]
+                      , KeyValArg
+                          (Identifier "tl") (Block (Content [ MFrac (Text "1") (Text "2") ]))
+                      , KeyValArg
+                          (Identifier "bl") (Block (Content [ MFrac (Text "3") (Text "4") ]))
+                      , KeyValArg
+                          (Identifier "tr") (Block (Content [ MFrac (Text "1") (Text "2") ]))
+                      , KeyValArg
+                          (Identifier "br") (Block (Content [ MFrac (Text "3") (Text "4") ]))
+                      ])
+               ]
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { math.sqrt(radicand: math.attach(b: math.frac(denom: text(body: [2]), 
+                                                                                    num: text(body: [1])), 
+                                                                       base: text(body: [a]), 
+                                                                       t: text(body: [ζ]))), 
+                                       text(body: [,]), 
+                                       math.sqrt(radicand: math.attach(b: text(body: [α]), 
+                                                                       base: text(body: [a]), 
+                                                                       t: math.frac(denom: text(body: [2]), 
+                                                                                    num: text(body: [1])))), 
+                                       text(body: [,]), 
+                                       math.sqrt(radicand: math.attach(b: math.frac(denom: text(body: [2]), 
+                                                                                    num: text(body: [1])), 
+                                                                       base: text(body: [a]), 
+                                                                       t: math.frac(denom: text(body: [4]), 
+                                                                                    num: text(body: [3])))), 
+                                       linebreak(), 
+                                       math.sqrt(radicand: math.attach(base: text(body: [a]), 
+                                                                       bl: math.frac(denom: text(body: [4]), 
+                                                                                     num: text(body: [3])), 
+                                                                       tl: math.frac(denom: text(body: [2]), 
+                                                                                     num: text(body: [1])))), 
+                                       text(body: [,]), 
+                                       math.sqrt(radicand: math.attach(base: text(body: [a]), 
+                                                                       bl: math.frac(denom: text(body: [4]), 
+                                                                                     num: text(body: [3])), 
+                                                                       br: math.frac(denom: text(body: [4]), 
+                                                                                     num: text(body: [3])), 
+                                                                       tl: math.frac(denom: text(body: [2]), 
+                                                                                     num: text(body: [1])), 
+                                                                       tr: math.frac(denom: text(body: [2]), 
+                                                                                     num: text(body: [1])))) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/attach-06.out b/test/typ/math/attach-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/attach-06.out
@@ -0,0 +1,99 @@
+--- parse tree ---
+[ Code
+    "typ/math/attach-06.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/attach-06.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/attach-06.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ MAttach
+        Nothing
+        (Just (Text "n"))
+        (MGroup
+           (Just "(")
+           (Just ")")
+           [ Code
+               "typ/math/attach-06.typ"
+               ( line 3 , column 4 )
+               (Ident (Identifier "minus"))
+           , Text "1"
+           ])
+    , Text "+"
+    , MAttach
+        Nothing
+        (Just
+           (MGroup
+              Nothing
+              Nothing
+              [ Code
+                  "typ/math/attach-06.typ"
+                  ( line 3 , column 23 )
+                  (Ident (Identifier "minus"))
+              , MFrac (Text "1") (Text "2")
+              ]))
+        (MGroup
+           (Just "(")
+           (Just ")")
+           [ MFrac (Text "1") (Text "2") , Text "+" , Text "3" ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { math.attach(b: none, 
+                                                   base: math.lr(body: ({ [(], 
+                                                                          text(body: [−]), 
+                                                                          text(body: [1]), 
+                                                                          [)] })), 
+                                                   t: text(body: [n])), 
+                                       text(body: [+]), 
+                                       math.attach(b: none, 
+                                                   base: math.lr(body: ({ [(], 
+                                                                          math.frac(denom: text(body: [2]), 
+                                                                                    num: text(body: [1])), 
+                                                                          text(body: [+]), 
+                                                                          text(body: [3]), 
+                                                                          [)] })), 
+                                                   t: { text(body: [−]), 
+                                                        math.frac(denom: text(body: [2]), 
+                                                                  num: text(body: [1])) }) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/attach-07.out b/test/typ/math/attach-07.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/attach-07.out
@@ -0,0 +1,426 @@
+--- parse tree ---
+[ Code
+    "typ/math/attach-07.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/attach-07.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/attach-07.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/math/attach-07.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "size") (Literal (Numeric 8.0 Pt)) ])
+, ParBreak
+, Comment
+, Equation
+    True
+    [ MAttach (Just (Text "1")) Nothing (Text "x")
+    , MAttach (Just (Text "1")) Nothing (Text "p")
+    , MAttach
+        (Just (Text "1"))
+        Nothing
+        (Code
+           "typ/math/attach-07.typ"
+           ( line 5 , column 11 )
+           (FuncCall (Ident (Identifier "frak")) [ BlockArg [ Text "p" ] ]))
+    , MAttach (Just (Text "1")) Nothing (Text "2")
+    , MAttach
+        (Just (Text "1"))
+        Nothing
+        (Code
+           "typ/math/attach-07.typ"
+           ( line 5 , column 25 )
+           (Ident (Identifier "dot")))
+    , MAttach
+        (Just (Text "1"))
+        Nothing
+        (Code
+           "typ/math/attach-07.typ"
+           ( line 5 , column 31 )
+           (Ident (Identifier "lg")))
+    , MAttach (Just (Text "1")) Nothing (Text "!")
+    , MAttach (Just (Text "1")) Nothing (Text "\\")
+    , MAttach (Just (Text "1")) Nothing (Text "]")
+    , MAttach (Just (Text "1")) Nothing (Text " ip")
+    , MAttach
+        (Just (Text "1"))
+        Nothing
+        (Code
+           "typ/math/attach-07.typ"
+           ( line 5 , column 56 )
+           (FuncCall (Ident (Identifier "op")) [ BlockArg [ Text "iq" ] ]))
+    , HardBreak
+    , MAttach Nothing (Just (Text "1")) (Text "x")
+    , MAttach Nothing (Just (Text "1")) (Text "b")
+    , MAttach
+        Nothing
+        (Just (Text "1"))
+        (Code
+           "typ/math/attach-07.typ"
+           ( line 6 , column 11 )
+           (FuncCall (Ident (Identifier "frak")) [ BlockArg [ Text "b" ] ]))
+    , MAttach Nothing (Just (Text "1")) (Text "2")
+    , MAttach
+        Nothing
+        (Just (Text "1"))
+        (Code
+           "typ/math/attach-07.typ"
+           ( line 6 , column 25 )
+           (Ident (Identifier "dot")))
+    , MAttach
+        Nothing
+        (Just (Text "1"))
+        (Code
+           "typ/math/attach-07.typ"
+           ( line 6 , column 31 )
+           (Ident (Identifier "lg")))
+    , MAttach Nothing (Just (Text "1")) (Text "!")
+    , MAttach Nothing (Just (Text "1")) (Text "\\")
+    , MAttach Nothing (Just (Text "1")) (Text "]")
+    , MAttach Nothing (Just (Text "1")) (Text " ib")
+    , MAttach
+        Nothing
+        (Just (Text "1"))
+        (Code
+           "typ/math/attach-07.typ"
+           ( line 6 , column 56 )
+           (FuncCall (Ident (Identifier "op")) [ BlockArg [ Text "id" ] ]))
+    , HardBreak
+    , MAttach (Just (Text "1")) Nothing (Text "x")
+    , MAttach (Just (Text "1")) Nothing (Text "y")
+    , MAttach (Just (Text "1")) Nothing (Text " _")
+    , MAttach Nothing (Just (Text "1")) (Text "x")
+    , MAttach Nothing (Just (Text "1")) (Text "l")
+    , MAttach Nothing (Just (Text "1")) (Text " `")
+    , Code
+        "typ/math/attach-07.typ"
+        ( line 7 , column 31 )
+        (FuncCall
+           (Ident (Identifier "attach"))
+           [ BlockArg [ Text "I" ]
+           , KeyValArg (Identifier "tl") (Block (Content [ Text "1" ]))
+           , KeyValArg (Identifier "bl") (Block (Content [ Text "1" ]))
+           , KeyValArg (Identifier "tr") (Block (Content [ Text "1" ]))
+           , KeyValArg (Identifier "br") (Block (Content [ Text "1" ]))
+           ])
+    , MAttach
+        (Just (Text "1"))
+        (Just (Text "1"))
+        (Code
+           "typ/math/attach-07.typ"
+           ( line 8 , column 3 )
+           (FuncCall
+              (Ident (Identifier "scripts"))
+              [ BlockArg
+                  [ Code
+                      "typ/math/attach-07.typ"
+                      ( line 8 , column 11 )
+                      (Ident (Identifier "sum"))
+                  ]
+              ]))
+    , MAttach
+        (Just (Text "1"))
+        (Just (Text "1"))
+        (Code
+           "typ/math/attach-07.typ"
+           ( line 8 , column 20 )
+           (Ident (Identifier "integral")))
+    , Text "|"
+    , MFrac (Text "1") (Text "2")
+    , MAttach (Just (Text "1")) (Just (Text "1")) (Text "|")
+    , HardBreak
+    , MAttach (Just (Text "1")) (Just (Text "1")) (Text "x")
+    , Text ","
+    , Text " ("
+    , Text "b"
+    , Text "y"
+    , MAttach (Just (Text "1")) (Just (Text "1")) (Text ")")
+    , Code
+        "typ/math/attach-07.typ"
+        ( line 9 , column 24 )
+        (FieldAccess (Ident (Identifier "not")) (Ident (Identifier "eq")))
+    , MAttach
+        (Just (Text "1"))
+        (Just (Text "1"))
+        (MGroup (Just "(") (Just ")") [ Text "b" , Text "y" ])
+    , Text ","
+    , MAttach (Just (Text "1")) Nothing (Text " [\8747]")
+    , MAttach
+        (Just (Text "1"))
+        Nothing
+        (MGroup
+           (Just "[")
+           (Just "]")
+           [ Code
+               "typ/math/attach-07.typ"
+               ( line 9 , column 47 )
+               (Ident (Identifier "integral"))
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 math.equation(block: true, 
+                               body: { math.attach(b: text(body: [1], 
+                                                           size: 8.0pt), 
+                                                   base: text(body: [x], 
+                                                              size: 8.0pt), 
+                                                   t: none), 
+                                       math.attach(b: text(body: [1], 
+                                                           size: 8.0pt), 
+                                                   base: text(body: [p], 
+                                                              size: 8.0pt), 
+                                                   t: none), 
+                                       math.attach(b: text(body: [1], 
+                                                           size: 8.0pt), 
+                                                   base: math.frak(body: text(body: [p], 
+                                                                              size: 8.0pt)), 
+                                                   t: none), 
+                                       math.attach(b: text(body: [1], 
+                                                           size: 8.0pt), 
+                                                   base: text(body: [2], 
+                                                              size: 8.0pt), 
+                                                   t: none), 
+                                       math.attach(b: text(body: [1], 
+                                                           size: 8.0pt), 
+                                                   base: text(body: [⋅], 
+                                                              size: 8.0pt), 
+                                                   t: none), 
+                                       math.attach(b: text(body: [1], 
+                                                           size: 8.0pt), 
+                                                   base: math.op(limits: false, 
+                                                                 text: "lg"), 
+                                                   t: none), 
+                                       math.attach(b: text(body: [1], 
+                                                           size: 8.0pt), 
+                                                   base: text(body: [!], 
+                                                              size: 8.0pt), 
+                                                   t: none), 
+                                       math.attach(b: text(body: [1], 
+                                                           size: 8.0pt), 
+                                                   base: text(body: [\], 
+                                                              size: 8.0pt), 
+                                                   t: none), 
+                                       math.attach(b: text(body: [1], 
+                                                           size: 8.0pt), 
+                                                   base: text(body: []], 
+                                                              size: 8.0pt), 
+                                                   t: none), 
+                                       math.attach(b: text(body: [1], 
+                                                           size: 8.0pt), 
+                                                   base: text(body: [ ip], 
+                                                              size: 8.0pt), 
+                                                   t: none), 
+                                       math.attach(b: text(body: [1], 
+                                                           size: 8.0pt), 
+                                                   base: math.op(text: text(body: [iq], 
+                                                                            size: 8.0pt)), 
+                                                   t: none), 
+                                       linebreak(), 
+                                       math.attach(b: none, 
+                                                   base: text(body: [x], 
+                                                              size: 8.0pt), 
+                                                   t: text(body: [1], 
+                                                           size: 8.0pt)), 
+                                       math.attach(b: none, 
+                                                   base: text(body: [b], 
+                                                              size: 8.0pt), 
+                                                   t: text(body: [1], 
+                                                           size: 8.0pt)), 
+                                       math.attach(b: none, 
+                                                   base: math.frak(body: text(body: [b], 
+                                                                              size: 8.0pt)), 
+                                                   t: text(body: [1], 
+                                                           size: 8.0pt)), 
+                                       math.attach(b: none, 
+                                                   base: text(body: [2], 
+                                                              size: 8.0pt), 
+                                                   t: text(body: [1], 
+                                                           size: 8.0pt)), 
+                                       math.attach(b: none, 
+                                                   base: text(body: [⋅], 
+                                                              size: 8.0pt), 
+                                                   t: text(body: [1], 
+                                                           size: 8.0pt)), 
+                                       math.attach(b: none, 
+                                                   base: math.op(limits: false, 
+                                                                 text: "lg"), 
+                                                   t: text(body: [1], 
+                                                           size: 8.0pt)), 
+                                       math.attach(b: none, 
+                                                   base: text(body: [!], 
+                                                              size: 8.0pt), 
+                                                   t: text(body: [1], 
+                                                           size: 8.0pt)), 
+                                       math.attach(b: none, 
+                                                   base: text(body: [\], 
+                                                              size: 8.0pt), 
+                                                   t: text(body: [1], 
+                                                           size: 8.0pt)), 
+                                       math.attach(b: none, 
+                                                   base: text(body: []], 
+                                                              size: 8.0pt), 
+                                                   t: text(body: [1], 
+                                                           size: 8.0pt)), 
+                                       math.attach(b: none, 
+                                                   base: text(body: [ ib], 
+                                                              size: 8.0pt), 
+                                                   t: text(body: [1], 
+                                                           size: 8.0pt)), 
+                                       math.attach(b: none, 
+                                                   base: math.op(text: text(body: [id], 
+                                                                            size: 8.0pt)), 
+                                                   t: text(body: [1], 
+                                                           size: 8.0pt)), 
+                                       linebreak(), 
+                                       math.attach(b: text(body: [1], 
+                                                           size: 8.0pt), 
+                                                   base: text(body: [x], 
+                                                              size: 8.0pt), 
+                                                   t: none), 
+                                       math.attach(b: text(body: [1], 
+                                                           size: 8.0pt), 
+                                                   base: text(body: [y], 
+                                                              size: 8.0pt), 
+                                                   t: none), 
+                                       math.attach(b: text(body: [1], 
+                                                           size: 8.0pt), 
+                                                   base: text(body: [ _], 
+                                                              size: 8.0pt), 
+                                                   t: none), 
+                                       math.attach(b: none, 
+                                                   base: text(body: [x], 
+                                                              size: 8.0pt), 
+                                                   t: text(body: [1], 
+                                                           size: 8.0pt)), 
+                                       math.attach(b: none, 
+                                                   base: text(body: [l], 
+                                                              size: 8.0pt), 
+                                                   t: text(body: [1], 
+                                                           size: 8.0pt)), 
+                                       math.attach(b: none, 
+                                                   base: text(body: [ `], 
+                                                              size: 8.0pt), 
+                                                   t: text(body: [1], 
+                                                           size: 8.0pt)), 
+                                       math.attach(base: text(body: [I], 
+                                                              size: 8.0pt), 
+                                                   bl: text(body: [1], 
+                                                            size: 8.0pt), 
+                                                   br: text(body: [1], 
+                                                            size: 8.0pt), 
+                                                   tl: text(body: [1], 
+                                                            size: 8.0pt), 
+                                                   tr: text(body: [1], 
+                                                            size: 8.0pt)), 
+                                       math.attach(b: text(body: [1], 
+                                                           size: 8.0pt), 
+                                                   base: math.scripts(body: text(body: [∑], 
+                                                                                 size: 8.0pt)), 
+                                                   t: text(body: [1], 
+                                                           size: 8.0pt)), 
+                                       math.attach(b: text(body: [1], 
+                                                           size: 8.0pt), 
+                                                   base: text(body: [∫], 
+                                                              size: 8.0pt), 
+                                                   t: text(body: [1], 
+                                                           size: 8.0pt)), 
+                                       text(body: [|], 
+                                            size: 8.0pt), 
+                                       math.frac(denom: text(body: [2], 
+                                                             size: 8.0pt), 
+                                                 num: text(body: [1], 
+                                                           size: 8.0pt)), 
+                                       math.attach(b: text(body: [1], 
+                                                           size: 8.0pt), 
+                                                   base: text(body: [|], 
+                                                              size: 8.0pt), 
+                                                   t: text(body: [1], 
+                                                           size: 8.0pt)), 
+                                       linebreak(), 
+                                       math.attach(b: text(body: [1], 
+                                                           size: 8.0pt), 
+                                                   base: text(body: [x], 
+                                                              size: 8.0pt), 
+                                                   t: text(body: [1], 
+                                                           size: 8.0pt)), 
+                                       text(body: [,], 
+                                            size: 8.0pt), 
+                                       text(body: [ (], 
+                                            size: 8.0pt), 
+                                       text(body: [b], 
+                                            size: 8.0pt), 
+                                       text(body: [y], 
+                                            size: 8.0pt), 
+                                       math.attach(b: text(body: [1], 
+                                                           size: 8.0pt), 
+                                                   base: text(body: [)], 
+                                                              size: 8.0pt), 
+                                                   t: text(body: [1], 
+                                                           size: 8.0pt)), 
+                                       text(body: [≠], 
+                                            size: 8.0pt), 
+                                       math.attach(b: text(body: [1], 
+                                                           size: 8.0pt), 
+                                                   base: math.lr(body: ({ [(], 
+                                                                          text(body: [b], 
+                                                                               size: 8.0pt), 
+                                                                          text(body: [y], 
+                                                                               size: 8.0pt), 
+                                                                          [)] })), 
+                                                   t: text(body: [1], 
+                                                           size: 8.0pt)), 
+                                       text(body: [,], 
+                                            size: 8.0pt), 
+                                       math.attach(b: text(body: [1], 
+                                                           size: 8.0pt), 
+                                                   base: text(body: [ [∫]], 
+                                                              size: 8.0pt), 
+                                                   t: none), 
+                                       math.attach(b: text(body: [1], 
+                                                           size: 8.0pt), 
+                                                   base: math.lr(body: ({ [[], 
+                                                                          text(body: [∫], 
+                                                                               size: 8.0pt), 
+                                                                          []] })), 
+                                                   t: none) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/attach-08.out b/test/typ/math/attach-08.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/attach-08.out
@@ -0,0 +1,120 @@
+--- parse tree ---
+[ Code
+    "typ/math/attach-08.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/attach-08.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/attach-08.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ MAttach
+        (Just
+           (MGroup
+              Nothing
+              Nothing
+              [ Text "n"
+              , Code
+                  "typ/math/attach-08.typ"
+                  ( line 3 , column 9 )
+                  (FieldAccess (Ident (Identifier "r")) (Ident (Identifier "arrow")))
+              , Code
+                  "typ/math/attach-08.typ"
+                  ( line 3 , column 11 )
+                  (Ident (Identifier "oo"))
+              , HardBreak
+              , Text "n"
+              , Text " grows"
+              ]))
+        Nothing
+        (Code
+           "typ/math/attach-08.typ"
+           ( line 3 , column 3 )
+           (Ident (Identifier "lim")))
+    , MAttach
+        (Just
+           (MGroup
+              Nothing
+              Nothing
+              [ Text "k"
+              , Text "="
+              , Text "0"
+              , HardBreak
+              , Text "k"
+              , Code
+                  "typ/math/attach-08.typ"
+                  ( line 3 , column 40 )
+                  (Ident (Identifier "in"))
+              , Code
+                  "typ/math/attach-08.typ"
+                  ( line 3 , column 43 )
+                  (Ident (Identifier "NN"))
+              ]))
+        (Just (Text "n"))
+        (Code
+           "typ/math/attach-08.typ"
+           ( line 3 , column 27 )
+           (Ident (Identifier "sum")))
+    , Text "k"
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { math.attach(b: { text(body: [n]), 
+                                                        text(body: [→]), 
+                                                        text(body: [∞]), 
+                                                        linebreak(), 
+                                                        text(body: [n]), 
+                                                        text(body: [ grows]) }, 
+                                                   base: math.op(limits: true, 
+                                                                 text: "lim"), 
+                                                   t: none), 
+                                       math.attach(b: { text(body: [k]), 
+                                                        text(body: [=]), 
+                                                        text(body: [0]), 
+                                                        linebreak(), 
+                                                        text(body: [k]), 
+                                                        text(body: [∈]), 
+                                                        text(body: [ℕ]) }, 
+                                                   base: text(body: [∑]), 
+                                                   t: text(body: [n])), 
+                                       text(body: [k]) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/attach-09.out b/test/typ/math/attach-09.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/attach-09.out
@@ -0,0 +1,154 @@
+--- parse tree ---
+[ Code
+    "typ/math/attach-09.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/attach-09.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/attach-09.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ MAttach
+        (Just (Text "1"))
+        (Just (Text "2"))
+        (Code
+           "typ/math/attach-09.typ"
+           ( line 3 , column 3 )
+           (FuncCall (Ident (Identifier "limits")) [ BlockArg [ Text "A" ] ]))
+    , Code
+        "typ/math/attach-09.typ"
+        ( line 3 , column 17 )
+        (FieldAccess (Ident (Identifier "not")) (Ident (Identifier "eq")))
+    , MAttach (Just (Text "1")) (Just (Text "2")) (Text "A")
+    ]
+, SoftBreak
+, Equation
+    True
+    [ MAttach
+        (Just (Text "1"))
+        (Just (Text "2"))
+        (Code
+           "typ/math/attach-09.typ"
+           ( line 4 , column 3 )
+           (FuncCall
+              (Ident (Identifier "scripts"))
+              [ BlockArg
+                  [ Code
+                      "typ/math/attach-09.typ"
+                      ( line 4 , column 11 )
+                      (Ident (Identifier "sum"))
+                  ]
+              ]))
+    , Code
+        "typ/math/attach-09.typ"
+        ( line 4 , column 20 )
+        (FieldAccess (Ident (Identifier "not")) (Ident (Identifier "eq")))
+    , MAttach
+        (Just (Text "1"))
+        (Just (Text "2"))
+        (Code
+           "typ/math/attach-09.typ"
+           ( line 4 , column 23 )
+           (Ident (Identifier "sum")))
+    ]
+, SoftBreak
+, Equation
+    True
+    [ MAttach
+        (Just (Text "a"))
+        (Just (Text "b"))
+        (Code
+           "typ/math/attach-09.typ"
+           ( line 5 , column 3 )
+           (FuncCall
+              (Ident (Identifier "limits"))
+              [ BlockArg
+                  [ Code
+                      "typ/math/attach-09.typ"
+                      ( line 5 , column 10 )
+                      (Ident (Identifier "integral"))
+                  ]
+              ]))
+    , Code
+        "typ/math/attach-09.typ"
+        ( line 5 , column 24 )
+        (FieldAccess (Ident (Identifier "not")) (Ident (Identifier "eq")))
+    , MAttach
+        (Just (Text "a"))
+        (Just (Text "b"))
+        (Code
+           "typ/math/attach-09.typ"
+           ( line 5 , column 27 )
+           (Ident (Identifier "integral")))
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { math.attach(b: text(body: [1]), 
+                                                   base: math.limits(body: text(body: [A])), 
+                                                   t: text(body: [2])), 
+                                       text(body: [≠]), 
+                                       math.attach(b: text(body: [1]), 
+                                                   base: text(body: [A]), 
+                                                   t: text(body: [2])) }, 
+                               numbering: none), 
+                 text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { math.attach(b: text(body: [1]), 
+                                                   base: math.scripts(body: text(body: [∑])), 
+                                                   t: text(body: [2])), 
+                                       text(body: [≠]), 
+                                       math.attach(b: text(body: [1]), 
+                                                   base: text(body: [∑]), 
+                                                   t: text(body: [2])) }, 
+                               numbering: none), 
+                 text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { math.attach(b: text(body: [a]), 
+                                                   base: math.limits(body: text(body: [∫])), 
+                                                   t: text(body: [b])), 
+                                       text(body: [≠]), 
+                                       math.attach(b: text(body: [a]), 
+                                                   base: text(body: [∫]), 
+                                                   t: text(body: [b])) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/cancel-00.out b/test/typ/math/cancel-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/cancel-00.out
@@ -0,0 +1,141 @@
+--- parse tree ---
+[ Code
+    "typ/math/cancel-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/cancel-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/cancel-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    False
+    [ Text "a"
+    , Text "+"
+    , Text "5"
+    , Text "+"
+    , Code
+        "typ/math/cancel-00.typ"
+        ( line 3 , column 10 )
+        (FuncCall (Ident (Identifier "cancel")) [ BlockArg [ Text "x" ] ])
+    , Text "+"
+    , Text "b"
+    , Code
+        "typ/math/cancel-00.typ"
+        ( line 3 , column 24 )
+        (Ident (Identifier "minus"))
+    , Code
+        "typ/math/cancel-00.typ"
+        ( line 3 , column 26 )
+        (FuncCall (Ident (Identifier "cancel")) [ BlockArg [ Text "x" ] ])
+    ]
+, ParBreak
+, Equation
+    False
+    [ Text "c"
+    , Text "+"
+    , MFrac
+        (MGroup
+           (Just "(")
+           (Just ")")
+           [ Text "a"
+           , Code
+               "typ/math/cancel-00.typ"
+               ( line 5 , column 9 )
+               (FieldAccess (Ident (Identifier "c")) (Ident (Identifier "dot")))
+           , Code
+               "typ/math/cancel-00.typ"
+               ( line 5 , column 15 )
+               (FuncCall
+                  (Ident (Identifier "cancel"))
+                  [ BlockArg
+                      [ Text "b"
+                      , Code
+                          "typ/math/cancel-00.typ"
+                          ( line 5 , column 24 )
+                          (FieldAccess (Ident (Identifier "c")) (Ident (Identifier "dot")))
+                      , Text "c"
+                      ]
+                  ])
+           ])
+        (MGroup
+           Nothing
+           Nothing
+           [ Code
+               "typ/math/cancel-00.typ"
+               ( line 5 , column 35 )
+               (FuncCall
+                  (Ident (Identifier "cancel"))
+                  [ BlockArg
+                      [ Text "b"
+                      , Code
+                          "typ/math/cancel-00.typ"
+                          ( line 5 , column 44 )
+                          (FieldAccess (Ident (Identifier "c")) (Ident (Identifier "dot")))
+                      , Text "c"
+                      ]
+                  ])
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: false, 
+                               body: { text(body: [a]), 
+                                       text(body: [+]), 
+                                       text(body: [5]), 
+                                       text(body: [+]), 
+                                       math.cancel(body: text(body: [x])), 
+                                       text(body: [+]), 
+                                       text(body: [b]), 
+                                       text(body: [−]), 
+                                       math.cancel(body: text(body: [x])) }, 
+                               numbering: none), 
+                 parbreak(), 
+                 math.equation(block: false, 
+                               body: { text(body: [c]), 
+                                       text(body: [+]), 
+                                       math.frac(denom: math.cancel(body: { text(body: [b]), 
+                                                                            text(body: [·]), 
+                                                                            text(body: [c]) }), 
+                                                 num: { text(body: [a]), 
+                                                        text(body: [·]), 
+                                                        math.cancel(body: { text(body: [b]), 
+                                                                            text(body: [·]), 
+                                                                            text(body: [c]) }) }) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/cancel-01.out b/test/typ/math/cancel-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/cancel-01.out
@@ -0,0 +1,182 @@
+--- parse tree ---
+[ Code
+    "typ/math/cancel-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/cancel-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/cancel-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/math/cancel-01.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal Auto) ])
+, SoftBreak
+, Equation
+    True
+    [ Text "a"
+    , Text "+"
+    , Text "b"
+    , Text "+"
+    , Code
+        "typ/math/cancel-01.typ"
+        ( line 4 , column 11 )
+        (FuncCall
+           (Ident (Identifier "cancel"))
+           [ BlockArg [ Text "b" , Text "+" , Text "c" ] ])
+    , Code
+        "typ/math/cancel-01.typ"
+        ( line 4 , column 25 )
+        (Ident (Identifier "minus"))
+    , Code
+        "typ/math/cancel-01.typ"
+        ( line 4 , column 27 )
+        (FuncCall (Ident (Identifier "cancel")) [ BlockArg [ Text "b" ] ])
+    , Code
+        "typ/math/cancel-01.typ"
+        ( line 4 , column 37 )
+        (Ident (Identifier "minus"))
+    , Code
+        "typ/math/cancel-01.typ"
+        ( line 4 , column 39 )
+        (FuncCall (Ident (Identifier "cancel")) [ BlockArg [ Text "c" ] ])
+    , Code
+        "typ/math/cancel-01.typ"
+        ( line 4 , column 49 )
+        (Ident (Identifier "minus"))
+    , Text "5"
+    , Text "+"
+    , Code
+        "typ/math/cancel-01.typ"
+        ( line 4 , column 55 )
+        (FuncCall (Ident (Identifier "cancel")) [ BlockArg [ Text "6" ] ])
+    , Code
+        "typ/math/cancel-01.typ"
+        ( line 4 , column 65 )
+        (Ident (Identifier "minus"))
+    , Code
+        "typ/math/cancel-01.typ"
+        ( line 4 , column 67 )
+        (FuncCall (Ident (Identifier "cancel")) [ BlockArg [ Text "6" ] ])
+    ]
+, SoftBreak
+, Equation
+    True
+    [ Text "e"
+    , Text "+"
+    , MFrac
+        (MGroup
+           (Just "(")
+           (Just ")")
+           [ Text "a"
+           , Code
+               "typ/math/cancel-01.typ"
+               ( line 5 , column 10 )
+               (FieldAccess (Ident (Identifier "c")) (Ident (Identifier "dot")))
+           , Code
+               "typ/math/cancel-01.typ"
+               ( line 5 , column 16 )
+               (FuncCall
+                  (Ident (Identifier "cancel"))
+                  [ BlockArg
+                      [ MGroup
+                          (Just "(")
+                          (Just ")")
+                          [ Text "b" , Text "+" , Text "c" , Text "+" , Text "d" ]
+                      ]
+                  ])
+           ])
+        (MGroup
+           Nothing
+           Nothing
+           [ Code
+               "typ/math/cancel-01.typ"
+               ( line 5 , column 38 )
+               (FuncCall
+                  (Ident (Identifier "cancel"))
+                  [ BlockArg [ Text "b" , Text "+" , Text "c" , Text "+" , Text "d" ]
+                  ])
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [a]), 
+                                       text(body: [+]), 
+                                       text(body: [b]), 
+                                       text(body: [+]), 
+                                       math.cancel(body: { text(body: [b]), 
+                                                           text(body: [+]), 
+                                                           text(body: [c]) }), 
+                                       text(body: [−]), 
+                                       math.cancel(body: text(body: [b])), 
+                                       text(body: [−]), 
+                                       math.cancel(body: text(body: [c])), 
+                                       text(body: [−]), 
+                                       text(body: [5]), 
+                                       text(body: [+]), 
+                                       math.cancel(body: text(body: [6])), 
+                                       text(body: [−]), 
+                                       math.cancel(body: text(body: [6])) }, 
+                               numbering: none), 
+                 text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [e]), 
+                                       text(body: [+]), 
+                                       math.frac(denom: math.cancel(body: { text(body: [b]), 
+                                                                            text(body: [+]), 
+                                                                            text(body: [c]), 
+                                                                            text(body: [+]), 
+                                                                            text(body: [d]) }), 
+                                                 num: { text(body: [a]), 
+                                                        text(body: [·]), 
+                                                        math.cancel(body: math.lr(body: ({ [(], 
+                                                                                           text(body: [b]), 
+                                                                                           text(body: [+]), 
+                                                                                           text(body: [c]), 
+                                                                                           text(body: [+]), 
+                                                                                           text(body: [d]), 
+                                                                                           [)] }))) }) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/cancel-02.out b/test/typ/math/cancel-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/cancel-02.out
@@ -0,0 +1,125 @@
+--- parse tree ---
+[ Code
+    "typ/math/cancel-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/cancel-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/cancel-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    False
+    [ Text "a"
+    , Text "+"
+    , Code
+        "typ/math/cancel-02.typ"
+        ( line 3 , column 6 )
+        (FuncCall
+           (Ident (Identifier "cancel"))
+           [ BlockArg [ Text "x" ]
+           , KeyValArg (Identifier "inverted") (Literal (Boolean True))
+           ])
+    , Code
+        "typ/math/cancel-02.typ"
+        ( line 3 , column 33 )
+        (Ident (Identifier "minus"))
+    , Code
+        "typ/math/cancel-02.typ"
+        ( line 3 , column 35 )
+        (FuncCall
+           (Ident (Identifier "cancel"))
+           [ BlockArg [ Text "x" ]
+           , KeyValArg (Identifier "inverted") (Literal (Boolean True))
+           ])
+    , Text "+"
+    , Text "10"
+    , Text "+"
+    , Code
+        "typ/math/cancel-02.typ"
+        ( line 3 , column 69 )
+        (FuncCall (Ident (Identifier "cancel")) [ BlockArg [ Text "y" ] ])
+    , Code
+        "typ/math/cancel-02.typ"
+        ( line 3 , column 79 )
+        (Ident (Identifier "minus"))
+    , Code
+        "typ/math/cancel-02.typ"
+        ( line 3 , column 81 )
+        (FuncCall (Ident (Identifier "cancel")) [ BlockArg [ Text "y" ] ])
+    ]
+, SoftBreak
+, Equation
+    True
+    [ Text "x"
+    , Text "+"
+    , Code
+        "typ/math/cancel-02.typ"
+        ( line 4 , column 7 )
+        (FuncCall
+           (Ident (Identifier "cancel"))
+           [ BlockArg [ Text "abcdefg" ]
+           , KeyValArg (Identifier "inverted") (Literal (Boolean True))
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: false, 
+                               body: { text(body: [a]), 
+                                       text(body: [+]), 
+                                       math.cancel(body: text(body: [x]), 
+                                                   inverted: true), 
+                                       text(body: [−]), 
+                                       math.cancel(body: text(body: [x]), 
+                                                   inverted: true), 
+                                       text(body: [+]), 
+                                       text(body: [10]), 
+                                       text(body: [+]), 
+                                       math.cancel(body: text(body: [y])), 
+                                       text(body: [−]), 
+                                       math.cancel(body: text(body: [y])) }, 
+                               numbering: none), 
+                 text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [x]), 
+                                       text(body: [+]), 
+                                       math.cancel(body: text(body: [abcdefg]), 
+                                                   inverted: true) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/cancel-03.out b/test/typ/math/cancel-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/cancel-03.out
@@ -0,0 +1,107 @@
+--- parse tree ---
+[ Code
+    "typ/math/cancel-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/cancel-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/cancel-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    False
+    [ Text "a"
+    , Text "+"
+    , Code
+        "typ/math/cancel-03.typ"
+        ( line 3 , column 6 )
+        (FuncCall
+           (Ident (Identifier "cancel"))
+           [ BlockArg [ Text "b" , Text "+" , Text "c" , Text "+" , Text "d" ]
+           , KeyValArg (Identifier "cross") (Literal (Boolean True))
+           , KeyValArg (Identifier "stroke") (Ident (Identifier "red"))
+           ])
+    , Text "+"
+    , Text "e"
+    ]
+, SoftBreak
+, Equation
+    True
+    [ Text "a"
+    , Text "+"
+    , Code
+        "typ/math/cancel-03.typ"
+        ( line 4 , column 7 )
+        (FuncCall
+           (Ident (Identifier "cancel"))
+           [ BlockArg [ Text "b" , Text "+" , Text "c" , Text "+" , Text "d" ]
+           , KeyValArg (Identifier "cross") (Literal (Boolean True))
+           ])
+    , Text "+"
+    , Text "e"
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: false, 
+                               body: { text(body: [a]), 
+                                       text(body: [+]), 
+                                       math.cancel(body: { text(body: [b]), 
+                                                           text(body: [+]), 
+                                                           text(body: [c]), 
+                                                           text(body: [+]), 
+                                                           text(body: [d]) }, 
+                                                   cross: true, 
+                                                   stroke: rgb(100%,25%,21%,100%)), 
+                                       text(body: [+]), 
+                                       text(body: [e]) }, 
+                               numbering: none), 
+                 text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [a]), 
+                                       text(body: [+]), 
+                                       math.cancel(body: { text(body: [b]), 
+                                                           text(body: [+]), 
+                                                           text(body: [c]), 
+                                                           text(body: [+]), 
+                                                           text(body: [d]) }, 
+                                                   cross: true), 
+                                       text(body: [+]), 
+                                       text(body: [e]) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/cancel-04.out b/test/typ/math/cancel-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/cancel-04.out
@@ -0,0 +1,148 @@
+--- parse tree ---
+[ Code
+    "typ/math/cancel-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/cancel-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/cancel-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/math/cancel-04.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 200.0 Pt))
+       , KeyValArg (Identifier "height") (Literal Auto)
+       ])
+, SoftBreak
+, Equation
+    False
+    [ Text "a"
+    , Text "+"
+    , Code
+        "typ/math/cancel-04.typ"
+        ( line 4 , column 6 )
+        (FuncCall
+           (Ident (Identifier "cancel"))
+           [ BlockArg [ Text "x" ]
+           , KeyValArg (Identifier "length") (Literal (Numeric 200.0 Percent))
+           ])
+    , Code
+        "typ/math/cancel-04.typ"
+        ( line 4 , column 31 )
+        (Ident (Identifier "minus"))
+    , Code
+        "typ/math/cancel-04.typ"
+        ( line 4 , column 33 )
+        (FuncCall
+           (Ident (Identifier "cancel"))
+           [ BlockArg [ Text "x" ]
+           , KeyValArg (Identifier "length") (Literal (Numeric 50.0 Percent))
+           , KeyValArg
+               (Identifier "stroke")
+               (Block
+                  (CodeBlock
+                     [ Plus (Ident (Identifier "red")) (Literal (Numeric 1.1 Pt)) ]))
+           ])
+    ]
+, SoftBreak
+, Equation
+    True
+    [ Text "b"
+    , Text "+"
+    , Code
+        "typ/math/cancel-04.typ"
+        ( line 5 , column 7 )
+        (FuncCall
+           (Ident (Identifier "cancel"))
+           [ BlockArg [ Text "x" ]
+           , KeyValArg (Identifier "length") (Literal (Numeric 150.0 Percent))
+           ])
+    , Code
+        "typ/math/cancel-04.typ"
+        ( line 5 , column 32 )
+        (Ident (Identifier "minus"))
+    , Code
+        "typ/math/cancel-04.typ"
+        ( line 5 , column 34 )
+        (FuncCall
+           (Ident (Identifier "cancel"))
+           [ BlockArg [ Text "a" , Text "+" , Text "b" , Text "+" , Text "c" ]
+           , KeyValArg (Identifier "length") (Literal (Numeric 50.0 Percent))
+           , KeyValArg
+               (Identifier "stroke")
+               (Block
+                  (CodeBlock
+                     [ Plus (Ident (Identifier "blue")) (Literal (Numeric 1.2 Pt)) ]))
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 math.equation(block: false, 
+                               body: { text(body: [a]), 
+                                       text(body: [+]), 
+                                       math.cancel(body: text(body: [x]), 
+                                                   length: 200%), 
+                                       text(body: [−]), 
+                                       math.cancel(body: text(body: [x]), 
+                                                   length: 50%, 
+                                                   stroke: (thickness: 1.1pt,
+                                                            color: rgb(100%,25%,21%,100%))) }, 
+                               numbering: none), 
+                 text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [b]), 
+                                       text(body: [+]), 
+                                       math.cancel(body: text(body: [x]), 
+                                                   length: 150%), 
+                                       text(body: [−]), 
+                                       math.cancel(body: { text(body: [a]), 
+                                                           text(body: [+]), 
+                                                           text(body: [b]), 
+                                                           text(body: [+]), 
+                                                           text(body: [c]) }, 
+                                                   length: 50%, 
+                                                   stroke: (thickness: 1.2pt,
+                                                            color: rgb(0%,45%,85%,100%))) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/cancel-05.out b/test/typ/math/cancel-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/cancel-05.out
@@ -0,0 +1,135 @@
+--- parse tree ---
+[ Code
+    "typ/math/cancel-05.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/cancel-05.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/cancel-05.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    False
+    [ Text "x"
+    , Text "+"
+    , Code
+        "typ/math/cancel-05.typ"
+        ( line 3 , column 6 )
+        (FuncCall
+           (Ident (Identifier "cancel"))
+           [ BlockArg [ Text "y" ]
+           , KeyValArg (Identifier "rotation") (Literal (Numeric 90.0 Deg))
+           ])
+    , Code
+        "typ/math/cancel-05.typ"
+        ( line 3 , column 34 )
+        (Ident (Identifier "minus"))
+    , Code
+        "typ/math/cancel-05.typ"
+        ( line 3 , column 36 )
+        (FuncCall
+           (Ident (Identifier "cancel"))
+           [ BlockArg [ Text "z" ]
+           , KeyValArg (Identifier "rotation") (Literal (Numeric 135.0 Deg))
+           ])
+    ]
+, SoftBreak
+, Equation
+    True
+    [ Text "e"
+    , Text "+"
+    , Code
+        "typ/math/cancel-05.typ"
+        ( line 4 , column 7 )
+        (FuncCall
+           (Ident (Identifier "cancel"))
+           [ BlockArg
+               [ MFrac
+                   (MGroup (Just "(") (Just ")") [ Text "j" , Text "+" , Text "e" ])
+                   (MGroup Nothing Nothing [ Text "f" , Text "+" , Text "e" ])
+               ]
+           ])
+    , Code
+        "typ/math/cancel-05.typ"
+        ( line 4 , column 31 )
+        (Ident (Identifier "minus"))
+    , Code
+        "typ/math/cancel-05.typ"
+        ( line 4 , column 33 )
+        (FuncCall
+           (Ident (Identifier "cancel"))
+           [ BlockArg
+               [ MFrac
+                   (MGroup (Just "(") (Just ")") [ Text "j" , Text "+" , Text "e" ])
+                   (MGroup Nothing Nothing [ Text "f" , Text "+" , Text "e" ])
+               ]
+           , KeyValArg (Identifier "rotation") (Literal (Numeric 30.0 Deg))
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: false, 
+                               body: { text(body: [x]), 
+                                       text(body: [+]), 
+                                       math.cancel(body: text(body: [y]), 
+                                                   rotation: 90.0deg), 
+                                       text(body: [−]), 
+                                       math.cancel(body: text(body: [z]), 
+                                                   rotation: 135.0deg) }, 
+                               numbering: none), 
+                 text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [e]), 
+                                       text(body: [+]), 
+                                       math.cancel(body: math.frac(denom: { text(body: [f]), 
+                                                                            text(body: [+]), 
+                                                                            text(body: [e]) }, 
+                                                                   num: { text(body: [j]), 
+                                                                          text(body: [+]), 
+                                                                          text(body: [e]) })), 
+                                       text(body: [−]), 
+                                       math.cancel(body: math.frac(denom: { text(body: [f]), 
+                                                                            text(body: [+]), 
+                                                                            text(body: [e]) }, 
+                                                                   num: { text(body: [j]), 
+                                                                          text(body: [+]), 
+                                                                          text(body: [e]) }), 
+                                                   rotation: 30.0deg) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/cases-00.out b/test/typ/math/cases-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/cases-00.out
@@ -0,0 +1,153 @@
+--- parse tree ---
+[ Code
+    "typ/math/cases-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/cases-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/cases-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Equation
+    True
+    [ MGroup
+        Nothing
+        Nothing
+        [ Text "f"
+        , MGroup (Just "(") (Just ")") [ Text "x" , Text "," , Text "y" ]
+        ]
+    , Code
+        "typ/math/cases-00.typ"
+        ( line 2 , column 11 )
+        (FieldAccess
+           (Ident (Identifier "eq")) (Ident (Identifier "colon")))
+    , Code
+        "typ/math/cases-00.typ"
+        ( line 2 , column 14 )
+        (FuncCall
+           (Ident (Identifier "cases"))
+           [ BlockArg
+               [ Text "1"
+               , Code
+                   "typ/math/cases-00.typ"
+                   ( line 3 , column 5 )
+                   (Ident (Identifier "quad"))
+               , MAlignPoint
+               , Text "if "
+               , MFrac
+                   (MGroup
+                      (Just "(")
+                      (Just ")")
+                      [ Text "x"
+                      , Code
+                          "typ/math/cases-00.typ"
+                          ( line 3 , column 19 )
+                          (Ident (Identifier "dot"))
+                      , Text "y"
+                      ])
+                   (Text "2")
+               , Code
+                   "typ/math/cases-00.typ"
+                   ( line 3 , column 28 )
+                   (FieldAccess (Ident (Identifier "eq")) (Ident (Identifier "lt")))
+               , Text "0"
+               ]
+           , BlockArg
+               [ Text "2"
+               , MAlignPoint
+               , Text "if "
+               , Text "x"
+               , Code
+                   "typ/math/cases-00.typ"
+                   ( line 4 , column 13 )
+                   (Ident (Identifier "divides"))
+               , Text "2"
+               ]
+           , BlockArg
+               [ Text "3"
+               , MAlignPoint
+               , Text "if "
+               , Text "x"
+               , Code
+                   "typ/math/cases-00.typ"
+                   ( line 5 , column 13 )
+                   (Ident (Identifier "in"))
+               , Code
+                   "typ/math/cases-00.typ"
+                   ( line 5 , column 16 )
+                   (Ident (Identifier "NN"))
+               ]
+           , BlockArg [ Text "4" , MAlignPoint , Text "else" ]
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [f]), 
+                                       math.lr(body: ({ [(], 
+                                                        text(body: [x]), 
+                                                        text(body: [,]), 
+                                                        text(body: [y]), 
+                                                        [)] })), 
+                                       text(body: [≔]), 
+                                       math.cases(children: ({ text(body: [1]), 
+                                                               text(body: [ ]), 
+                                                               math.alignpoint(), 
+                                                               text(body: [if ]), 
+                                                               math.frac(denom: text(body: [2]), 
+                                                                         num: { text(body: [x]), 
+                                                                                text(body: [⋅]), 
+                                                                                text(body: [y]) }), 
+                                                               text(body: [≤]), 
+                                                               text(body: [0]) }, 
+                                                             { text(body: [2]), 
+                                                               math.alignpoint(), 
+                                                               text(body: [if ]), 
+                                                               text(body: [x]), 
+                                                               text(body: [∣]), 
+                                                               text(body: [2]) }, 
+                                                             { text(body: [3]), 
+                                                               math.alignpoint(), 
+                                                               text(body: [if ]), 
+                                                               text(body: [x]), 
+                                                               text(body: [∈]), 
+                                                               text(body: [ℕ]) }, 
+                                                             { text(body: [4]), 
+                                                               math.alignpoint(), 
+                                                               text(body: [else]) })) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/content-00.out b/test/typ/math/content-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/content-00.out
@@ -0,0 +1,115 @@
+--- parse tree ---
+[ Code
+    "typ/math/content-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/content-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/content-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/math/content-00.typ"
+    ( line 3 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "monkey")))
+       (FuncCall
+          (Ident (Identifier "move"))
+          [ KeyValArg (Identifier "dy") (Literal (Numeric 0.2 Em))
+          , NormalArg
+              (FuncCall
+                 (Ident (Identifier "image"))
+                 [ NormalArg (Literal (String "/assets/files/monkey.svg"))
+                 , KeyValArg (Identifier "height") (Literal (Numeric 1.0 Em))
+                 ])
+          ]))
+, SoftBreak
+, Equation
+    True
+    [ MAttach
+        (Just
+           (MGroup
+              Nothing
+              Nothing
+              [ Text "i"
+              , Text "="
+              , Code
+                  "typ/math/content-00.typ"
+                  ( line 4 , column 11 )
+                  (FieldAccess
+                     (Ident (Identifier "apple")) (Ident (Identifier "emoji")))
+              ]))
+        (Just
+           (Code
+              "typ/math/content-00.typ"
+              ( line 4 , column 25 )
+              (FieldAccess
+                 (Ident (Identifier "red"))
+                 (FieldAccess
+                    (Ident (Identifier "apple")) (Ident (Identifier "emoji"))))))
+        (Code
+           "typ/math/content-00.typ"
+           ( line 4 , column 3 )
+           (Ident (Identifier "sum")))
+    , Text "i"
+    , Text "+"
+    , MFrac
+        (Code
+           "typ/math/content-00.typ"
+           ( line 4 , column 45 )
+           (Ident (Identifier "monkey")))
+        (Text "2")
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { math.attach(b: { text(body: [i]), 
+                                                        text(body: [=]), 
+                                                        text(body: [🍏]) }, 
+                                                   base: text(body: [∑]), 
+                                                   t: text(body: [🍎])), 
+                                       text(body: [i]), 
+                                       text(body: [+]), 
+                                       math.frac(denom: text(body: [2]), 
+                                                 num: move(body: image(height: 1.0em, 
+                                                                       path: "/assets/files/monkey.svg"), 
+                                                           dy: 0.2em)) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/content-01.out b/test/typ/math/content-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/content-01.out
@@ -0,0 +1,100 @@
+--- parse tree ---
+[ Code
+    "typ/math/content-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/content-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/content-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Text "x"
+    , Code
+        "typ/math/content-01.typ"
+        ( line 3 , column 5 )
+        (FieldAccess
+           (Ident (Identifier "eq")) (Ident (Identifier "colon")))
+    , MFrac
+        (Code
+           "typ/math/content-01.typ"
+           ( line 3 , column 9 )
+           (FuncCall
+              (Ident (Identifier "table"))
+              [ KeyValArg (Identifier "columns") (Literal (Int 2))
+              , BlockArg [ Text "x" ]
+              , BlockArg [ Text "y" ]
+              ]))
+        (Code
+           "typ/math/content-01.typ"
+           ( line 3 , column 33 )
+           (FuncCall
+              (Ident (Identifier "mat"))
+              [ BlockArg [ Text "1" ]
+              , BlockArg [ Text "2" ]
+              , BlockArg [ Text "3" ]
+              ]))
+    , Text "="
+    , Code
+        "typ/math/content-01.typ"
+        ( line 4 , column 9 )
+        (FuncCall
+           (Ident (Identifier "table"))
+           [ BlockArg [ Text "A" ]
+           , BlockArg [ Text "B" ]
+           , BlockArg [ Text "C" ]
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [x]), 
+                                       text(body: [≔]), 
+                                       math.frac(denom: math.mat(rows: ((text(body: [1]), 
+                                                                         text(body: [2]), 
+                                                                         text(body: [3])))), 
+                                                 num: table(children: (text(body: [x]), 
+                                                                       text(body: [y])), 
+                                                            columns: 2)), 
+                                       text(body: [=]), 
+                                       table(children: (text(body: [A]), 
+                                                        text(body: [B]), 
+                                                        text(body: [C]))) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/content-02.out b/test/typ/math/content-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/content-02.out
@@ -0,0 +1,61 @@
+--- parse tree ---
+[ Code
+    "typ/math/content-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/content-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/content-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/math/content-02.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (FieldAccess
+          (Ident (Identifier "attach")) (Ident (Identifier "math")))
+       [ NormalArg (Block (Content [ Equation False [ Text "a" ] ]))
+       , KeyValArg (Identifier "t") (Block (Content [ Text "b" ]))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.attach(base: math.equation(block: false, 
+                                                 body: text(body: [a]), 
+                                                 numbering: none), 
+                             t: text(body: [b])), 
+                 parbreak() })
diff --git a/test/typ/math/content-03.out b/test/typ/math/content-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/content-03.out
@@ -0,0 +1,89 @@
+--- parse tree ---
+[ Code
+    "typ/math/content-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/content-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/content-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/math/content-03.typ"
+    ( line 3 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "here")))
+       (FuncCall
+          (FieldAccess
+             (Ident (Identifier "with")) (Ident (Identifier "text")))
+          [ KeyValArg (Identifier "font") (Literal (String "Noto Sans")) ]))
+, SoftBreak
+, Equation
+    False
+    [ Code
+        "typ/math/content-03.typ"
+        ( line 4 , column 3 )
+        (FuncCall (Ident (Identifier "here")) [ BlockArg [ Text "f" ] ])
+    , Code
+        "typ/math/content-03.typ"
+        ( line 4 , column 11 )
+        (FieldAccess
+           (Ident (Identifier "eq")) (Ident (Identifier "colon")))
+    , Code
+        "typ/math/content-03.typ"
+        ( line 4 , column 15 )
+        (FuncCall
+           (Ident (Identifier "here"))
+           [ BlockArg [ Text "Hi" , Space , Text "there" ] ])
+    ]
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 math.equation(block: false, 
+                               body: { text(body: text(body: [f]), 
+                                            font: "Noto Sans"), 
+                                       text(body: [≔]), 
+                                       text(body: { text(body: [Hi]), 
+                                                    text(body: [ ]), 
+                                                    text(body: [there]) }, 
+                                            font: "Noto Sans") }, 
+                               numbering: none), 
+                 text(body: [.]), 
+                 parbreak() })
diff --git a/test/typ/math/delimited-00.out b/test/typ/math/delimited-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/delimited-00.out
@@ -0,0 +1,128 @@
+--- parse tree ---
+[ Code
+    "typ/math/delimited-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/delimited-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/delimited-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ MGroup (Just "(") (Just ")") [ Text "a" ]
+    , Text "+"
+    , MGroup (Just "{") (Just "}") [ MFrac (Text "b") (Text "2") ]
+    , Text "+"
+    , Text "|"
+    , Text "a"
+    , MFrac (Text "|") (Text "2")
+    , Text "+"
+    , MGroup (Just "(") (Just ")") [ Text "b" ]
+    ]
+, SoftBreak
+, Equation
+    False
+    [ MGroup
+        Nothing
+        Nothing
+        [ Text "f"
+        , MGroup (Just "(") (Just ")") [ MFrac (Text "x") (Text "2") ]
+        ]
+    , Text "<"
+    , Code
+        "typ/math/delimited-00.typ"
+        ( line 4 , column 11 )
+        (FuncCall
+           (Ident (Identifier "zeta"))
+           [ BlockArg
+               [ MAttach Nothing (Just (Text "2")) (Text "c")
+               , Text "+"
+               , Text "|"
+               , Text "a"
+               , Text "+"
+               , MFrac (Text "b") (Text "2")
+               , Text "|"
+               ]
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { math.lr(body: ({ [(], 
+                                                        text(body: [a]), 
+                                                        [)] })), 
+                                       text(body: [+]), 
+                                       math.lr(body: ({ [{], 
+                                                        math.frac(denom: text(body: [2]), 
+                                                                  num: text(body: [b])), 
+                                                        [}] })), 
+                                       text(body: [+]), 
+                                       text(body: [|]), 
+                                       text(body: [a]), 
+                                       math.frac(denom: text(body: [2]), 
+                                                 num: text(body: [|])), 
+                                       text(body: [+]), 
+                                       math.lr(body: ({ [(], 
+                                                        text(body: [b]), 
+                                                        [)] })) }, 
+                               numbering: none), 
+                 text(body: [
+]), 
+                 math.equation(block: false, 
+                               body: { text(body: [f]), 
+                                       math.lr(body: ({ [(], 
+                                                        math.frac(denom: text(body: [2]), 
+                                                                  num: text(body: [x])), 
+                                                        [)] })), 
+                                       text(body: [<]), 
+                                       text(body: [ζ]), 
+                                       text(body: [(]), 
+                                       math.attach(b: none, 
+                                                   base: text(body: [c]), 
+                                                   t: text(body: [2])), 
+                                       text(body: [+]), 
+                                       text(body: [|]), 
+                                       text(body: [a]), 
+                                       text(body: [+]), 
+                                       math.frac(denom: text(body: [2]), 
+                                                 num: text(body: [b])), 
+                                       text(body: [|]), 
+                                       text(body: [)]) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/delimited-01.out b/test/typ/math/delimited-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/delimited-01.out
@@ -0,0 +1,101 @@
+--- parse tree ---
+[ Code
+    "typ/math/delimited-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/delimited-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/delimited-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    False
+    [ MGroup
+        (Just "[")
+        Nothing
+        [ Text "1"
+        , Text ","
+        , Text "2"
+        , MGroup
+            (Just "[")
+            Nothing
+            [ Text "="
+            , MGroup
+                (Just "[")
+                Nothing
+                [ Text "1"
+                , Text ","
+                , Text "2"
+                , Text ")"
+                , Code
+                    "typ/math/delimited-01.typ"
+                    ( line 3 , column 16 )
+                    (FieldAccess (Ident (Identifier "not")) (Ident (Identifier "eq")))
+                , Code
+                    "typ/math/delimited-01.typ"
+                    ( line 3 , column 19 )
+                    (Ident (Identifier "zeta"))
+                , Text "("
+                , MFrac (Text "x") (Text "2")
+                , Text ")"
+                ]
+            ]
+        ]
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: false, 
+                               body: { text(body: [[]), 
+                                       text(body: [1]), 
+                                       text(body: [,]), 
+                                       text(body: [2]), 
+                                       text(body: [[]), 
+                                       text(body: [=]), 
+                                       text(body: [[]), 
+                                       text(body: [1]), 
+                                       text(body: [,]), 
+                                       text(body: [2]), 
+                                       text(body: [)]), 
+                                       text(body: [≠]), 
+                                       text(body: [ζ]), 
+                                       text(body: [(]), 
+                                       math.frac(denom: text(body: [2]), 
+                                                 num: text(body: [x])), 
+                                       text(body: [)]) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/delimited-02.out b/test/typ/math/delimited-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/delimited-02.out
@@ -0,0 +1,146 @@
+--- parse tree ---
+[ Code
+    "typ/math/delimited-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/delimited-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/delimited-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Code
+        "typ/math/delimited-02.typ"
+        ( line 3 , column 3 )
+        (FieldAccess
+           (Ident (Identifier "l"))
+           (FieldAccess
+              (Ident (Identifier "double")) (Ident (Identifier "bracket"))))
+    , MFrac (Text "a") (Text "b")
+    , Code
+        "typ/math/delimited-02.typ"
+        ( line 3 , column 8 )
+        (FieldAccess
+           (Ident (Identifier "r"))
+           (FieldAccess
+              (Ident (Identifier "double")) (Ident (Identifier "bracket"))))
+    , Code
+        "typ/math/delimited-02.typ"
+        ( line 3 , column 11 )
+        (FieldAccess (Ident (Identifier "not")) (Ident (Identifier "eq")))
+    , Code
+        "typ/math/delimited-02.typ"
+        ( line 3 , column 14 )
+        (FuncCall
+           (Ident (Identifier "lr"))
+           [ BlockArg
+               [ Code
+                   "typ/math/delimited-02.typ"
+                   ( line 3 , column 17 )
+                   (FieldAccess
+                      (Ident (Identifier "r"))
+                      (FieldAccess
+                         (Ident (Identifier "double")) (Ident (Identifier "bracket"))))
+               , MFrac (Text "a") (Text "b")
+               , Code
+                   "typ/math/delimited-02.typ"
+                   ( line 3 , column 22 )
+                   (FieldAccess
+                      (Ident (Identifier "r"))
+                      (FieldAccess
+                         (Ident (Identifier "double")) (Ident (Identifier "bracket"))))
+               ]
+           ])
+    , Code
+        "typ/math/delimited-02.typ"
+        ( line 3 , column 26 )
+        (FieldAccess (Ident (Identifier "not")) (Ident (Identifier "eq")))
+    , MGroup
+        (Just "[") Nothing [ MFrac (Text "a") (Text "b") , Text ")" ]
+    ]
+, SoftBreak
+, Equation
+    True
+    [ Code
+        "typ/math/delimited-02.typ"
+        ( line 4 , column 3 )
+        (FuncCall
+           (Ident (Identifier "lr"))
+           [ BlockArg [ Text "|" , Text "]" , Text "1" ]
+           , BlockArg
+               [ Text "2"
+               , Text "["
+               , Text "+"
+               , MFrac (Text "1") (Text "2")
+               , Text "|"
+               ]
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [⟦]), 
+                                       math.frac(denom: text(body: [b]), 
+                                                 num: text(body: [a])), 
+                                       text(body: [⟧]), 
+                                       text(body: [≠]), 
+                                       math.lr(body: ({ text(body: [⟧]), 
+                                                        math.frac(denom: text(body: [b]), 
+                                                                  num: text(body: [a])), 
+                                                        text(body: [⟧]) })), 
+                                       text(body: [≠]), 
+                                       text(body: [[]), 
+                                       math.frac(denom: text(body: [b]), 
+                                                 num: text(body: [a])), 
+                                       text(body: [)]) }, 
+                               numbering: none), 
+                 text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: math.lr(body: ({ text(body: [|]), 
+                                                      text(body: []]), 
+                                                      text(body: [1]) }, 
+                                                    { text(body: [2]), 
+                                                      text(body: [[]), 
+                                                      text(body: [+]), 
+                                                      math.frac(denom: text(body: [2]), 
+                                                                num: text(body: [1])), 
+                                                      text(body: [|]) })), 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/delimited-03.out b/test/typ/math/delimited-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/delimited-03.out
@@ -0,0 +1,96 @@
+--- parse tree ---
+[ Code
+    "typ/math/delimited-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/delimited-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/delimited-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Text "|"
+    , Text "x"
+    , Text "+"
+    , Text "|"
+    , Text "y"
+    , Text "|"
+    , Text "+"
+    , MFrac (Text "z") (Text "a")
+    , Text "|"
+    , HardBreak
+    , Text "|"
+    , Text "x"
+    , Text "+"
+    , Code
+        "typ/math/delimited-03.typ"
+        ( line 4 , column 8 )
+        (FuncCall
+           (Ident (Identifier "lr"))
+           [ BlockArg [ Text "|" , Text "y" , Text "|" ] ])
+    , Text "+"
+    , MFrac (Text "z") (Text "a")
+    , Text "|"
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [|]), 
+                                       text(body: [x]), 
+                                       text(body: [+]), 
+                                       text(body: [|]), 
+                                       text(body: [y]), 
+                                       text(body: [|]), 
+                                       text(body: [+]), 
+                                       math.frac(denom: text(body: [a]), 
+                                                 num: text(body: [z])), 
+                                       text(body: [|]), 
+                                       linebreak(), 
+                                       text(body: [|]), 
+                                       text(body: [x]), 
+                                       text(body: [+]), 
+                                       math.lr(body: ({ text(body: [|]), 
+                                                        text(body: [y]), 
+                                                        text(body: [|]) })), 
+                                       text(body: [+]), 
+                                       math.frac(denom: text(body: [a]), 
+                                                 num: text(body: [z])), 
+                                       text(body: [|]) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/delimited-04.out b/test/typ/math/delimited-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/delimited-04.out
@@ -0,0 +1,93 @@
+--- parse tree ---
+[ Code
+    "typ/math/delimited-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/delimited-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/delimited-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Code
+        "typ/math/delimited-04.typ"
+        ( line 3 , column 3 )
+        (FieldAccess
+           (Ident (Identifier "l")) (Ident (Identifier "bracket")))
+    , MFrac (Text "a") (Text "b")
+    , Code
+        "typ/math/delimited-04.typ"
+        ( line 3 , column 17 )
+        (FieldAccess
+           (Ident (Identifier "r")) (Ident (Identifier "bracket")))
+    , Text "="
+    , Code
+        "typ/math/delimited-04.typ"
+        ( line 4 , column 5 )
+        (FuncCall
+           (Ident (Identifier "lr"))
+           [ BlockArg
+               [ Code
+                   "typ/math/delimited-04.typ"
+                   ( line 4 , column 8 )
+                   (FieldAccess
+                      (Ident (Identifier "l")) (Ident (Identifier "bracket")))
+               , MFrac (Text "a") (Text "b")
+               , Code
+                   "typ/math/delimited-04.typ"
+                   ( line 4 , column 22 )
+                   (FieldAccess
+                      (Ident (Identifier "r")) (Ident (Identifier "bracket")))
+               ]
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [[]), 
+                                       math.frac(denom: text(body: [b]), 
+                                                 num: text(body: [a])), 
+                                       text(body: []]), 
+                                       text(body: [=]), 
+                                       math.lr(body: ({ text(body: [[]), 
+                                                        math.frac(denom: text(body: [b]), 
+                                                                  num: text(body: [a])), 
+                                                        text(body: []]) })) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/delimited-05.out b/test/typ/math/delimited-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/delimited-05.out
@@ -0,0 +1,77 @@
+--- parse tree ---
+[ Code
+    "typ/math/delimited-05.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/delimited-05.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/delimited-05.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Code
+        "typ/math/delimited-05.typ"
+        ( line 3 , column 3 )
+        (FuncCall
+           (Ident (Identifier "lr"))
+           [ BlockArg [ MFrac (Text "a") (Text "b") , Text "]" ] ])
+    , Text "="
+    , Text "a"
+    , Text "="
+    , Code
+        "typ/math/delimited-05.typ"
+        ( line 3 , column 19 )
+        (FuncCall
+           (Ident (Identifier "lr"))
+           [ BlockArg [ Text "{" , MFrac (Text "a") (Text "b") ] ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { math.lr(body: ({ math.frac(denom: text(body: [b]), 
+                                                                  num: text(body: [a])), 
+                                                        text(body: []]) })), 
+                                       text(body: [=]), 
+                                       text(body: [a]), 
+                                       text(body: [=]), 
+                                       math.lr(body: ({ text(body: [{]), 
+                                                        math.frac(denom: text(body: [b]), 
+                                                                  num: text(body: [a])) })) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/delimited-06.out b/test/typ/math/delimited-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/delimited-06.out
@@ -0,0 +1,98 @@
+--- parse tree ---
+[ Code
+    "typ/math/delimited-06.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/delimited-06.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/delimited-06.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Code
+        "typ/math/delimited-06.typ"
+        ( line 3 , column 3 )
+        (FuncCall
+           (Ident (Identifier "lr"))
+           [ BlockArg
+               [ Text "]"
+               , MAttach
+                   (Just (MGroup Nothing Nothing [ Text "x" , Text "=" , Text "1" ]))
+                   (Just (Text "n"))
+                   (Code
+                      "typ/math/delimited-06.typ"
+                      ( line 3 , column 7 )
+                      (Ident (Identifier "sum")))
+               , Text "x"
+               , Text "]"
+               ]
+           , KeyValArg (Identifier "size") (Literal (Numeric 70.0 Percent))
+           ])
+    , Text "<"
+    , Code
+        "typ/math/delimited-06.typ"
+        ( line 4 , column 5 )
+        (FuncCall
+           (Ident (Identifier "lr"))
+           [ BlockArg
+               [ MGroup (Just "(") (Just ")") [ Text "1" , Text "," , Text "2" ] ]
+           , KeyValArg (Identifier "size") (Literal (Numeric 200.0 Percent))
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { math.lr(body: ({ text(body: []]), 
+                                                        math.attach(b: { text(body: [x]), 
+                                                                         text(body: [=]), 
+                                                                         text(body: [1]) }, 
+                                                                    base: text(body: [∑]), 
+                                                                    t: text(body: [n])), 
+                                                        text(body: [x]), 
+                                                        text(body: []]) }), 
+                                               size: 70%), 
+                                       text(body: [<]), 
+                                       math.lr(body: (math.lr(body: ({ [(], 
+                                                                       text(body: [1]), 
+                                                                       text(body: [,]), 
+                                                                       text(body: [2]), 
+                                                                       [)] }))), 
+                                               size: 200%) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/delimited-07.out b/test/typ/math/delimited-07.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/delimited-07.out
@@ -0,0 +1,85 @@
+--- parse tree ---
+[ Code
+    "typ/math/delimited-07.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/delimited-07.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/delimited-07.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    False
+    [ Code
+        "typ/math/delimited-07.typ"
+        ( line 3 , column 2 )
+        (FuncCall
+           (Ident (Identifier "floor"))
+           [ BlockArg [ MFrac (Text "x") (Text "2") ] ])
+    , Text ","
+    , Code
+        "typ/math/delimited-07.typ"
+        ( line 3 , column 14 )
+        (FuncCall
+           (Ident (Identifier "ceil"))
+           [ BlockArg [ MFrac (Text "x") (Text "2") ] ])
+    , Text ","
+    , Code
+        "typ/math/delimited-07.typ"
+        ( line 3 , column 25 )
+        (FuncCall (Ident (Identifier "abs")) [ BlockArg [ Text "x" ] ])
+    , Text ","
+    , Code
+        "typ/math/delimited-07.typ"
+        ( line 3 , column 33 )
+        (FuncCall (Ident (Identifier "norm")) [ BlockArg [ Text "x" ] ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: false, 
+                               body: { math.floor(body: math.frac(denom: text(body: [2]), 
+                                                                  num: text(body: [x]))), 
+                                       text(body: [,]), 
+                                       math.ceil(body: math.frac(denom: text(body: [2]), 
+                                                                 num: text(body: [x]))), 
+                                       text(body: [,]), 
+                                       math.abs(body: text(body: [x])), 
+                                       text(body: [,]), 
+                                       math.norm(body: text(body: [x])) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/delimited-08.out b/test/typ/math/delimited-08.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/delimited-08.out
@@ -0,0 +1,84 @@
+--- parse tree ---
+[ Code
+    "typ/math/delimited-08.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/delimited-08.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/delimited-08.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Code
+        "typ/math/delimited-08.typ"
+        ( line 3 , column 3 )
+        (FuncCall
+           (Ident (Identifier "lr"))
+           [ BlockArg
+               [ Code
+                   "typ/math/delimited-08.typ"
+                   ( line 4 , column 5 )
+                   (FuncCall
+                      (Ident (Identifier "text"))
+                      [ BlockArg [ Text "(" ]
+                      , KeyValArg (Identifier "fill") (Ident (Identifier "green"))
+                      ])
+               , MFrac (Text "a") (Text "b")
+               , Code
+                   "typ/math/delimited-08.typ"
+                   ( line 5 , column 5 )
+                   (FuncCall
+                      (Ident (Identifier "text"))
+                      [ BlockArg [ Text ")" ]
+                      , KeyValArg (Identifier "fill") (Ident (Identifier "blue"))
+                      ])
+               ]
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: math.lr(body: ({ text(body: text(body: [(]), 
+                                                           fill: rgb(18%,80%,25%,100%)), 
+                                                      math.frac(denom: text(body: [b]), 
+                                                                num: text(body: [a])), 
+                                                      text(body: text(body: [)]), 
+                                                           fill: rgb(0%,45%,85%,100%)) })), 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/frac-00.out b/test/typ/math/frac-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/frac-00.out
@@ -0,0 +1,78 @@
+--- parse tree ---
+[ Code
+    "typ/math/frac-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/frac-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/frac-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Text "x"
+    , Text "="
+    , MFrac (Text "1") (Text "2")
+    , Text "="
+    , MFrac (Text "a") (MGroup Nothing Nothing [ Text "a" , Text "h" ])
+    , Text "="
+    , MFrac (Text "a") (Text "a")
+    , Text "="
+    , MFrac
+        (Text "a") (MGroup Nothing Nothing [ MFrac (Text "1") (Text "2") ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [x]), 
+                                       text(body: [=]), 
+                                       math.frac(denom: text(body: [2]), 
+                                                 num: text(body: [1])), 
+                                       text(body: [=]), 
+                                       math.frac(denom: { text(body: [a]), 
+                                                          text(body: [h]) }, 
+                                                 num: text(body: [a])), 
+                                       text(body: [=]), 
+                                       math.frac(denom: text(body: [a]), 
+                                                 num: text(body: [a])), 
+                                       text(body: [=]), 
+                                       math.frac(denom: math.frac(denom: text(body: [2]), 
+                                                                  num: text(body: [1])), 
+                                                 num: text(body: [a])) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/frac-01.out b/test/typ/math/frac-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/frac-01.out
@@ -0,0 +1,85 @@
+--- parse tree ---
+[ Code
+    "typ/math/frac-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/frac-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/frac-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ MFrac
+        (MGroup
+           (Just "(")
+           (Just ")")
+           [ Text "|"
+           , Text "x"
+           , Text "|"
+           , Text "+"
+           , Text "|"
+           , Text "y"
+           , Text "|"
+           ])
+        (Text "2")
+    , Text "<"
+    , MFrac
+        (MGroup (Just "[") (Just "]") [ Text "1" , Text "+" , Text "2" ])
+        (Text "3")
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { math.frac(denom: text(body: [2]), 
+                                                 num: { text(body: [|]), 
+                                                        text(body: [x]), 
+                                                        text(body: [|]), 
+                                                        text(body: [+]), 
+                                                        text(body: [|]), 
+                                                        text(body: [y]), 
+                                                        text(body: [|]) }), 
+                                       text(body: [<]), 
+                                       math.frac(denom: text(body: [3]), 
+                                                 num: math.lr(body: ({ [[], 
+                                                                       text(body: [1]), 
+                                                                       text(body: [+]), 
+                                                                       text(body: [2]), 
+                                                                       []] }))) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/frac-02.out b/test/typ/math/frac-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/frac-02.out
@@ -0,0 +1,101 @@
+--- parse tree ---
+[ Code
+    "typ/math/frac-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/frac-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/frac-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Text "x"
+    , Text "="
+    , MFrac
+        (MGroup
+           (Just "(")
+           (Just ")")
+           [ Code
+               "typ/math/frac-02.typ"
+               ( line 3 , column 8 )
+               (Ident (Identifier "minus"))
+           , Text "b"
+           , Code
+               "typ/math/frac-02.typ"
+               ( line 3 , column 11 )
+               (FieldAccess
+                  (Ident (Identifier "minus")) (Ident (Identifier "plus")))
+           , Code
+               "typ/math/frac-02.typ"
+               ( line 3 , column 22 )
+               (FuncCall
+                  (Ident (Identifier "sqrt"))
+                  [ BlockArg
+                      [ MAttach Nothing (Just (Text "2")) (Text "b")
+                      , Code
+                          "typ/math/frac-02.typ"
+                          ( line 3 , column 31 )
+                          (Ident (Identifier "minus"))
+                      , Text "4"
+                      , Text "a"
+                      , Text "c"
+                      ]
+                  ])
+           ])
+        (MGroup Nothing Nothing [ Text "2" , Text "a" ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [x]), 
+                                       text(body: [=]), 
+                                       math.frac(denom: { text(body: [2]), 
+                                                          text(body: [a]) }, 
+                                                 num: { text(body: [−]), 
+                                                        text(body: [b]), 
+                                                        text(body: [±]), 
+                                                        math.sqrt(radicand: { math.attach(b: none, 
+                                                                                          base: text(body: [b]), 
+                                                                                          t: text(body: [2])), 
+                                                                              text(body: [−]), 
+                                                                              text(body: [4]), 
+                                                                              text(body: [a]), 
+                                                                              text(body: [c]) }) }) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/frac-03.out b/test/typ/math/frac-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/frac-03.out
@@ -0,0 +1,73 @@
+--- parse tree ---
+[ Code
+    "typ/math/frac-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/frac-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/frac-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Code
+        "typ/math/frac-03.typ"
+        ( line 3 , column 3 )
+        (FuncCall
+           (Ident (Identifier "binom"))
+           [ BlockArg
+               [ Code
+                   "typ/math/frac-03.typ"
+                   ( line 3 , column 9 )
+                   (Ident (Identifier "circle"))
+               ]
+           , BlockArg
+               [ Code
+                   "typ/math/frac-03.typ"
+                   ( line 3 , column 17 )
+                   (Ident (Identifier "square"))
+               ]
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: math.binom(lower: text(body: [□]), 
+                                                upper: text(body: [○])), 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/frac-04.out b/test/typ/math/frac-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/frac-04.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/math/frac-05.out b/test/typ/math/frac-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/frac-05.out
@@ -0,0 +1,72 @@
+--- parse tree ---
+[ Code
+    "typ/math/frac-05.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/frac-05.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/frac-05.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ MFrac (MFrac (Text "1") (Text "2")) (Text "3")
+    , Text "="
+    , MFrac
+        (MGroup (Just "(") (Just ")") [ MFrac (Text "1") (Text "2") ])
+        (Text "3")
+    , Text "="
+    , MFrac
+        (Text "1") (MGroup Nothing Nothing [ MFrac (Text "2") (Text "3") ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { math.frac(denom: text(body: [3]), 
+                                                 num: math.frac(denom: text(body: [2]), 
+                                                                num: text(body: [1]))), 
+                                       text(body: [=]), 
+                                       math.frac(denom: text(body: [3]), 
+                                                 num: math.frac(denom: text(body: [2]), 
+                                                                num: text(body: [1]))), 
+                                       text(body: [=]), 
+                                       math.frac(denom: math.frac(denom: text(body: [3]), 
+                                                                  num: text(body: [2])), 
+                                                 num: text(body: [1])) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/frac-06.out b/test/typ/math/frac-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/frac-06.out
@@ -0,0 +1,226 @@
+--- parse tree ---
+[ Code
+    "typ/math/frac-06.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/frac-06.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/frac-06.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ MFrac
+        (MAttach (Just (Text "1")) Nothing (Text "a"))
+        (MAttach (Just (Text "2")) Nothing (Text "b"))
+    , Text ","
+    , MFrac
+        (Text "1")
+        (MGroup
+           Nothing
+           Nothing
+           [ Text "f" , MGroup (Just "(") (Just ")") [ Text "x" ] ])
+    , Text ","
+    , MFrac
+        (Code
+           "typ/math/frac-06.typ"
+           ( line 3 , column 20 )
+           (FuncCall (Ident (Identifier "zeta")) [ BlockArg [ Text "x" ] ]))
+        (Text "2")
+    , Text ","
+    , Text " foo"
+    , Code
+        "typ/math/frac-06.typ"
+        ( line 3 , column 36 )
+        (FieldAccess
+           (Ident (Identifier "l"))
+           (FieldAccess
+              (Ident (Identifier "double")) (Ident (Identifier "bracket"))))
+    , Text "x"
+    , MFrac
+        (Code
+           "typ/math/frac-06.typ"
+           ( line 3 , column 39 )
+           (FieldAccess
+              (Ident (Identifier "r"))
+              (FieldAccess
+                 (Ident (Identifier "double")) (Ident (Identifier "bracket")))))
+        (Text "2")
+    , HardBreak
+    , MFrac (Text "1.2") (Text "3.7")
+    , Text ","
+    , MAttach Nothing (Just (Text "3.4")) (Text "2.3")
+    , HardBreak
+    , Text "\127987"
+    , Text "\65039"
+    , Text "\8205"
+    , Text "\127752"
+    , MFrac (MGroup (Just "[") (Just "]") [ Text "x" ]) (Text "2")
+    , Text ","
+    , Text "f"
+    , MFrac (MGroup (Just "[") (Just "]") [ Text "x" ]) (Text "2")
+    , Text ","
+    , Code
+        "typ/math/frac-06.typ"
+        ( line 5 , column 23 )
+        (Ident (Identifier "phi"))
+    , MFrac (MGroup (Just "[") (Just "]") [ Text "x" ]) (Text "2")
+    , Text ","
+    , Text "\127987"
+    , Text "\65039"
+    , Text "\8205"
+    , Text "\127752"
+    , MFrac (MGroup (Just "[") (Just "]") [ Text "x" ]) (Text "2")
+    , HardBreak
+    , Text "+"
+    , MFrac (MGroup (Just "[") (Just "]") [ Text "x" ]) (Text "2")
+    , Text ","
+    , Text "1"
+    , MFrac (MGroup (Just "(") (Just ")") [ Text "x" ]) (Text "2")
+    , Text ","
+    , Text "2"
+    , MFrac (MGroup (Just "[") (Just "]") [ Text "x" ]) (Text "2")
+    , MGroup
+        Nothing
+        Nothing
+        [ HardBreak , MGroup (Just "(") (Just ")") [ Text "a" ] ]
+    , MFrac (Text "b") (Text "2")
+    , Text ","
+    , MGroup
+        Nothing
+        Nothing
+        [ Text "b" , MGroup (Just "(") (Just ")") [ Text "a" ] ]
+    , MFrac (MGroup (Just "[") (Just "]") [ Text "b" ]) (Text "2")
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { math.frac(denom: math.attach(b: text(body: [2]), 
+                                                                    base: text(body: [b]), 
+                                                                    t: none), 
+                                                 num: math.attach(b: text(body: [1]), 
+                                                                  base: text(body: [a]), 
+                                                                  t: none)), 
+                                       text(body: [,]), 
+                                       math.frac(denom: { text(body: [f]), 
+                                                          math.lr(body: ({ [(], 
+                                                                           text(body: [x]), 
+                                                                           [)] })) }, 
+                                                 num: text(body: [1])), 
+                                       text(body: [,]), 
+                                       math.frac(denom: text(body: [2]), 
+                                                 num: { text(body: [ζ]), 
+                                                        text(body: [(]), 
+                                                        text(body: [x]), 
+                                                        text(body: [)]) }), 
+                                       text(body: [,]), 
+                                       text(body: [ foo]), 
+                                       text(body: [⟦]), 
+                                       text(body: [x]), 
+                                       math.frac(denom: text(body: [2]), 
+                                                 num: text(body: [⟧])), 
+                                       linebreak(), 
+                                       math.frac(denom: text(body: [3.7]), 
+                                                 num: text(body: [1.2])), 
+                                       text(body: [,]), 
+                                       math.attach(b: none, 
+                                                   base: text(body: [2.3]), 
+                                                   t: text(body: [3.4])), 
+                                       linebreak(), 
+                                       text(body: [🏳]), 
+                                       text(body: [️]), 
+                                       text(body: [‍]), 
+                                       text(body: [🌈]), 
+                                       math.frac(denom: text(body: [2]), 
+                                                 num: math.lr(body: ({ [[], 
+                                                                       text(body: [x]), 
+                                                                       []] }))), 
+                                       text(body: [,]), 
+                                       text(body: [f]), 
+                                       math.frac(denom: text(body: [2]), 
+                                                 num: math.lr(body: ({ [[], 
+                                                                       text(body: [x]), 
+                                                                       []] }))), 
+                                       text(body: [,]), 
+                                       text(body: [φ]), 
+                                       math.frac(denom: text(body: [2]), 
+                                                 num: math.lr(body: ({ [[], 
+                                                                       text(body: [x]), 
+                                                                       []] }))), 
+                                       text(body: [,]), 
+                                       text(body: [🏳]), 
+                                       text(body: [️]), 
+                                       text(body: [‍]), 
+                                       text(body: [🌈]), 
+                                       math.frac(denom: text(body: [2]), 
+                                                 num: math.lr(body: ({ [[], 
+                                                                       text(body: [x]), 
+                                                                       []] }))), 
+                                       linebreak(), 
+                                       text(body: [+]), 
+                                       math.frac(denom: text(body: [2]), 
+                                                 num: math.lr(body: ({ [[], 
+                                                                       text(body: [x]), 
+                                                                       []] }))), 
+                                       text(body: [,]), 
+                                       text(body: [1]), 
+                                       math.frac(denom: text(body: [2]), 
+                                                 num: text(body: [x])), 
+                                       text(body: [,]), 
+                                       text(body: [2]), 
+                                       math.frac(denom: text(body: [2]), 
+                                                 num: math.lr(body: ({ [[], 
+                                                                       text(body: [x]), 
+                                                                       []] }))), 
+                                       linebreak(), 
+                                       math.lr(body: ({ [(], 
+                                                        text(body: [a]), 
+                                                        [)] })), 
+                                       math.frac(denom: text(body: [2]), 
+                                                 num: text(body: [b])), 
+                                       text(body: [,]), 
+                                       text(body: [b]), 
+                                       math.lr(body: ({ [(], 
+                                                        text(body: [a]), 
+                                                        [)] })), 
+                                       math.frac(denom: text(body: [2]), 
+                                                 num: math.lr(body: ({ [[], 
+                                                                       text(body: [b]), 
+                                                                       []] }))) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/matrix-00.out b/test/typ/math/matrix-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/matrix-00.out
@@ -0,0 +1,157 @@
+--- parse tree ---
+[ Code
+    "typ/math/matrix-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/matrix-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/matrix-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/math/matrix-00.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "align"))
+       [ NormalArg (Ident (Identifier "center")) ])
+, SoftBreak
+, Equation
+    False
+    [ Code
+        "typ/math/matrix-00.typ"
+        ( line 4 , column 2 )
+        (FuncCall (Ident (Identifier "mat")) [])
+    , Code
+        "typ/math/matrix-00.typ"
+        ( line 4 , column 8 )
+        (Ident (Identifier "dot"))
+    , Code
+        "typ/math/matrix-00.typ"
+        ( line 5 , column 2 )
+        (FuncCall
+           (Ident (Identifier "mat"))
+           [ ArrayArg [ [ MGroup Nothing Nothing [] ] ] ])
+    , Code
+        "typ/math/matrix-00.typ"
+        ( line 5 , column 9 )
+        (Ident (Identifier "dot"))
+    , Code
+        "typ/math/matrix-00.typ"
+        ( line 6 , column 2 )
+        (FuncCall
+           (Ident (Identifier "mat"))
+           [ BlockArg [ Text "1" ] , BlockArg [ Text "2" ] ])
+    , Code
+        "typ/math/matrix-00.typ"
+        ( line 6 , column 12 )
+        (Ident (Identifier "dot"))
+    , Code
+        "typ/math/matrix-00.typ"
+        ( line 7 , column 2 )
+        (FuncCall
+           (Ident (Identifier "mat"))
+           [ ArrayArg [ [ Text "1" , Text "2" ] ] ])
+    , HardBreak
+    , Code
+        "typ/math/matrix-00.typ"
+        ( line 8 , column 2 )
+        (FuncCall
+           (Ident (Identifier "mat"))
+           [ ArrayArg [ [ Text "1" ] , [ Text "2" ] ] ])
+    , Code
+        "typ/math/matrix-00.typ"
+        ( line 8 , column 12 )
+        (Ident (Identifier "dot"))
+    , Code
+        "typ/math/matrix-00.typ"
+        ( line 9 , column 2 )
+        (FuncCall
+           (Ident (Identifier "mat"))
+           [ ArrayArg [ [ Text "1" , Text "2" ] , [ Text "3" , Text "4" ] ] ])
+    , Code
+        "typ/math/matrix-00.typ"
+        ( line 9 , column 18 )
+        (Ident (Identifier "dot"))
+    , Code
+        "typ/math/matrix-00.typ"
+        ( line 10 , column 2 )
+        (FuncCall
+           (Ident (Identifier "mat"))
+           [ ArrayArg
+               [ [ MGroup
+                     Nothing Nothing [ Text "1" , Text "+" , MAlignPoint , Text "2" ]
+                 , MFrac (Text "1") (Text "2")
+                 ]
+               , [ MGroup Nothing Nothing [ MAlignPoint , Text "3" ] , Text "4" ]
+               ]
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 math.equation(block: false, 
+                               body: { math.mat(rows: ()), 
+                                       text(body: [⋅]), 
+                                       math.mat(rows: (({  }))), 
+                                       text(body: [⋅]), 
+                                       math.mat(rows: ((text(body: [1]), 
+                                                        text(body: [2])))), 
+                                       text(body: [⋅]), 
+                                       math.mat(rows: ((text(body: [1]), 
+                                                        text(body: [2])))), 
+                                       linebreak(), 
+                                       math.mat(rows: ((text(body: [1])), 
+                                                       (text(body: [2])))), 
+                                       text(body: [⋅]), 
+                                       math.mat(rows: ((text(body: [1]), 
+                                                        text(body: [2])), 
+                                                       (text(body: [3]), 
+                                                        text(body: [4])))), 
+                                       text(body: [⋅]), 
+                                       math.mat(rows: (({ text(body: [1]), 
+                                                          text(body: [+]), 
+                                                          math.alignpoint(), 
+                                                          text(body: [2]) }, 
+                                                        math.frac(denom: text(body: [2]), 
+                                                                  num: text(body: [1]))), 
+                                                       ({ math.alignpoint(), 
+                                                          text(body: [3]) }, 
+                                                        text(body: [4])))) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/matrix-01.out b/test/typ/math/matrix-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/matrix-01.out
@@ -0,0 +1,119 @@
+--- parse tree ---
+[ Code
+    "typ/math/matrix-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/matrix-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/matrix-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Code
+        "typ/math/matrix-01.typ"
+        ( line 3 , column 3 )
+        (FuncCall
+           (Ident (Identifier "mat"))
+           [ ArrayArg
+               [ [ Text "1"
+                 , Text "2"
+                 , Code
+                     "typ/math/matrix-01.typ"
+                     ( line 4 , column 9 )
+                     (FieldAccess (Ident (Identifier "h")) (Ident (Identifier "dots")))
+                 , Text "10"
+                 ]
+               , [ Text "2"
+                 , Text "2"
+                 , Code
+                     "typ/math/matrix-01.typ"
+                     ( line 5 , column 9 )
+                     (FieldAccess (Ident (Identifier "h")) (Ident (Identifier "dots")))
+                 , Text "10"
+                 ]
+               , [ Code
+                     "typ/math/matrix-01.typ"
+                     ( line 6 , column 3 )
+                     (FieldAccess (Ident (Identifier "v")) (Ident (Identifier "dots")))
+                 , Code
+                     "typ/math/matrix-01.typ"
+                     ( line 6 , column 11 )
+                     (FieldAccess (Ident (Identifier "v")) (Ident (Identifier "dots")))
+                 , Code
+                     "typ/math/matrix-01.typ"
+                     ( line 6 , column 19 )
+                     (FieldAccess
+                        (Ident (Identifier "down")) (Ident (Identifier "dots")))
+                 , Code
+                     "typ/math/matrix-01.typ"
+                     ( line 6 , column 30 )
+                     (FieldAccess (Ident (Identifier "v")) (Ident (Identifier "dots")))
+                 ]
+               , [ Text "10"
+                 , Text "10"
+                 , Code
+                     "typ/math/matrix-01.typ"
+                     ( line 7 , column 11 )
+                     (FieldAccess (Ident (Identifier "h")) (Ident (Identifier "dots")))
+                 , Text "10"
+                 ]
+               ]
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: math.mat(rows: ((text(body: [1]), 
+                                                      text(body: [2]), 
+                                                      text(body: […]), 
+                                                      text(body: [10])), 
+                                                     (text(body: [2]), 
+                                                      text(body: [2]), 
+                                                      text(body: […]), 
+                                                      text(body: [10])), 
+                                                     (text(body: [⋮]), 
+                                                      text(body: [⋮]), 
+                                                      text(body: [⋱]), 
+                                                      text(body: [⋮])), 
+                                                     (text(body: [10]), 
+                                                      text(body: [10]), 
+                                                      text(body: […]), 
+                                                      text(body: [10])))), 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/matrix-02.out b/test/typ/math/matrix-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/matrix-02.out
@@ -0,0 +1,104 @@
+--- parse tree ---
+[ Code
+    "typ/math/matrix-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/matrix-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/matrix-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Code
+        "typ/math/matrix-02.typ"
+        ( line 3 , column 3 )
+        (FuncCall
+           (Ident (Identifier "mat"))
+           [ ArrayArg
+               [ [ Text "a" , MAttach Nothing (Just (Text "2")) (Text "b") ]
+               , [ MGroup
+                     Nothing
+                     Nothing
+                     [ MAttach
+                         (Just (MGroup Nothing Nothing [ Text "x" , HardBreak , Text "y" ]))
+                         Nothing
+                         (Code
+                            "typ/math/matrix-02.typ"
+                            ( line 5 , column 3 )
+                            (Ident (Identifier "sum")))
+                     , Text "x"
+                     ]
+                 , MAttach
+                     Nothing
+                     (Just (MGroup Nothing Nothing [ MFrac (Text "1") (Text "2") ]))
+                     (Text "a")
+                 ]
+               , [ Code
+                     "typ/math/matrix-02.typ"
+                     ( line 6 , column 3 )
+                     (Ident (Identifier "zeta"))
+                 , Code
+                     "typ/math/matrix-02.typ"
+                     ( line 6 , column 9 )
+                     (Ident (Identifier "alpha"))
+                 ]
+               ]
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: math.mat(rows: ((text(body: [a]), 
+                                                      math.attach(b: none, 
+                                                                  base: text(body: [b]), 
+                                                                  t: text(body: [2]))), 
+                                                     ({ math.attach(b: { text(body: [x]), 
+                                                                         linebreak(), 
+                                                                         text(body: [y]) }, 
+                                                                    base: text(body: [∑]), 
+                                                                    t: none), 
+                                                        text(body: [x]) }, 
+                                                      math.attach(b: none, 
+                                                                  base: text(body: [a]), 
+                                                                  t: math.frac(denom: text(body: [2]), 
+                                                                               num: text(body: [1])))), 
+                                                     (text(body: [ζ]), 
+                                                      text(body: [α])))), 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/matrix-03.out b/test/typ/math/matrix-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/matrix-03.out
@@ -0,0 +1,103 @@
+--- parse tree ---
+[ Code
+    "typ/math/matrix-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/matrix-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/matrix-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/math/matrix-03.typ"
+    ( line 3 , column 2 )
+    (Set
+       (FieldAccess
+          (Ident (Identifier "mat")) (Ident (Identifier "math")))
+       [ KeyValArg (Identifier "delim") (Literal (String "[")) ])
+, SoftBreak
+, Equation
+    True
+    [ Code
+        "typ/math/matrix-03.typ"
+        ( line 4 , column 3 )
+        (FuncCall
+           (Ident (Identifier "mat"))
+           [ ArrayArg [ [ Text "1" , Text "2" ] , [ Text "3" , Text "4" ] ] ])
+    ]
+, SoftBreak
+, Equation
+    True
+    [ Text "a"
+    , Text "+"
+    , Code
+        "typ/math/matrix-03.typ"
+        ( line 5 , column 7 )
+        (FuncCall
+           (Ident (Identifier "mat"))
+           [ KeyValArg (Identifier "delim") (Literal None)
+           , ArrayArg [ [ Text "1" , Text "2" ] , [ Text "3" , Text "4" ] ]
+           ])
+    , Text "+"
+    , Text "b"
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: math.mat(delim: "[", 
+                                              rows: ((text(body: [1]), 
+                                                      text(body: [2])), 
+                                                     (text(body: [3]), 
+                                                      text(body: [4])))), 
+                               numbering: none), 
+                 text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [a]), 
+                                       text(body: [+]), 
+                                       math.mat(delim: none, 
+                                                rows: ((text(body: [1]), 
+                                                        text(body: [2])), 
+                                                       (text(body: [3]), 
+                                                        text(body: [4])))), 
+                                       text(body: [+]), 
+                                       text(body: [b]) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/matrix-04.out b/test/typ/math/matrix-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/matrix-04.out
@@ -0,0 +1,258 @@
+--- parse tree ---
+[ Code
+    "typ/math/matrix-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/matrix-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/matrix-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/math/matrix-04.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "align"))
+       [ NormalArg (Ident (Identifier "center")) ])
+, SoftBreak
+, Code
+    "typ/math/matrix-04.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "grid"))
+       [ KeyValArg (Identifier "columns") (Literal (Int 3))
+       , KeyValArg (Identifier "gutter") (Literal (Numeric 10.0 Pt))
+       , NormalArg
+           (Block
+              (Content
+                 [ Equation
+                     True
+                     [ Code
+                         "typ/math/matrix-04.typ"
+                         ( line 8 , column 5 )
+                         (FuncCall
+                            (Ident (Identifier "mat"))
+                            [ BlockArg [ Text "1" ]
+                            , BlockArg [ Text "2" ]
+                            , KeyValArg (Identifier "delim") (Block (Content [ Text "[" ]))
+                            ])
+                     ]
+                 ]))
+       , NormalArg
+           (Block
+              (Content
+                 [ Equation
+                     True
+                     [ Code
+                         "typ/math/matrix-04.typ"
+                         ( line 9 , column 5 )
+                         (FuncCall
+                            (Ident (Identifier "mat"))
+                            [ ArrayArg [ [ Text "1" , Text "2" ] ]
+                            , KeyValArg (Identifier "delim") (Block (Content [ Text "[" ]))
+                            ])
+                     ]
+                 ]))
+       , NormalArg
+           (Block
+              (Content
+                 [ Equation
+                     True
+                     [ Code
+                         "typ/math/matrix-04.typ"
+                         ( line 10 , column 5 )
+                         (FuncCall
+                            (Ident (Identifier "mat"))
+                            [ KeyValArg (Identifier "delim") (Block (Content [ Text "[" ]))
+                            , BlockArg [ Text "1" ]
+                            , BlockArg [ Text "2" ]
+                            ])
+                     ]
+                 ]))
+       , NormalArg
+           (Block
+              (Content
+                 [ Equation
+                     True
+                     [ Code
+                         "typ/math/matrix-04.typ"
+                         ( line 12 , column 5 )
+                         (FuncCall
+                            (Ident (Identifier "mat"))
+                            [ ArrayArg [ [ Text "1" ] , [ Text "2" ] ]
+                            , KeyValArg (Identifier "delim") (Block (Content [ Text "[" ]))
+                            ])
+                     ]
+                 ]))
+       , NormalArg
+           (Block
+              (Content
+                 [ Equation
+                     True
+                     [ Code
+                         "typ/math/matrix-04.typ"
+                         ( line 13 , column 5 )
+                         (FuncCall
+                            (Ident (Identifier "mat"))
+                            [ ArrayArg [ [ Text "1" ] ]
+                            , KeyValArg (Identifier "delim") (Block (Content [ Text "[" ]))
+                            , BlockArg [ Text "2" ]
+                            ])
+                     ]
+                 ]))
+       , NormalArg
+           (Block
+              (Content
+                 [ Equation
+                     True
+                     [ Code
+                         "typ/math/matrix-04.typ"
+                         ( line 14 , column 5 )
+                         (FuncCall
+                            (Ident (Identifier "mat"))
+                            [ KeyValArg (Identifier "delim") (Block (Content [ Text "[" ]))
+                            , ArrayArg [ [ Text "1" ] , [ Text "2" ] ]
+                            ])
+                     ]
+                 ]))
+       , NormalArg
+           (Block
+              (Content
+                 [ Equation
+                     True
+                     [ Code
+                         "typ/math/matrix-04.typ"
+                         ( line 16 , column 5 )
+                         (FuncCall
+                            (Ident (Identifier "mat"))
+                            [ ArrayArg [ [ Text "1" , Text "2" ] ]
+                            , KeyValArg (Identifier "delim") (Block (Content [ Text "[" ]))
+                            , BlockArg [ Text "3" ]
+                            , BlockArg [ Text "4" ]
+                            ])
+                     ]
+                 ]))
+       , NormalArg
+           (Block
+              (Content
+                 [ Equation
+                     True
+                     [ Code
+                         "typ/math/matrix-04.typ"
+                         ( line 17 , column 5 )
+                         (FuncCall
+                            (Ident (Identifier "mat"))
+                            [ KeyValArg (Identifier "delim") (Block (Content [ Text "[" ]))
+                            , ArrayArg [ [ Text "1" , Text "2" ] , [ Text "3" , Text "4" ] ]
+                            ])
+                     ]
+                 ]))
+       , NormalArg
+           (Block
+              (Content
+                 [ Equation
+                     True
+                     [ Code
+                         "typ/math/matrix-04.typ"
+                         ( line 18 , column 5 )
+                         (FuncCall
+                            (Ident (Identifier "mat"))
+                            [ ArrayArg [ [ Text "1" , Text "2" ] , [ Text "3" , Text "4" ] ]
+                            , KeyValArg (Identifier "delim") (Block (Content [ Text "[" ]))
+                            ])
+                     ]
+                 ]))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 grid(children: (math.equation(block: true, 
+                                               body: math.mat(delim: text(body: [[]), 
+                                                              rows: ((text(body: [1]), 
+                                                                      text(body: [2])))), 
+                                               numbering: none), 
+                                 math.equation(block: true, 
+                                               body: math.mat(delim: text(body: [[]), 
+                                                              rows: ((text(body: [1]), 
+                                                                      text(body: [2])))), 
+                                               numbering: none), 
+                                 math.equation(block: true, 
+                                               body: math.mat(delim: text(body: [[]), 
+                                                              rows: ((text(body: [1]), 
+                                                                      text(body: [2])))), 
+                                               numbering: none), 
+                                 math.equation(block: true, 
+                                               body: math.mat(delim: text(body: [[]), 
+                                                              rows: ((text(body: [1])), 
+                                                                     (text(body: [2])))), 
+                                               numbering: none), 
+                                 math.equation(block: true, 
+                                               body: math.mat(delim: text(body: [[]), 
+                                                              rows: ((text(body: [1])), 
+                                                                     (text(body: [2])))), 
+                                               numbering: none), 
+                                 math.equation(block: true, 
+                                               body: math.mat(delim: text(body: [[]), 
+                                                              rows: ((text(body: [1])), 
+                                                                     (text(body: [2])))), 
+                                               numbering: none), 
+                                 math.equation(block: true, 
+                                               body: math.mat(delim: text(body: [[]), 
+                                                              rows: ((text(body: [1]), 
+                                                                      text(body: [2])), 
+                                                                     (text(body: [3]), 
+                                                                      text(body: [4])))), 
+                                               numbering: none), 
+                                 math.equation(block: true, 
+                                               body: math.mat(delim: text(body: [[]), 
+                                                              rows: ((text(body: [1]), 
+                                                                      text(body: [2])), 
+                                                                     (text(body: [3]), 
+                                                                      text(body: [4])))), 
+                                               numbering: none), 
+                                 math.equation(block: true, 
+                                               body: math.mat(delim: text(body: [[]), 
+                                                              rows: ((text(body: [1]), 
+                                                                      text(body: [2])), 
+                                                                     (text(body: [3]), 
+                                                                      text(body: [4])))), 
+                                               numbering: none)), 
+                      columns: 3, 
+                      gutter: 10.0pt), 
+                 parbreak() })
diff --git a/test/typ/math/matrix-05.out b/test/typ/math/matrix-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/matrix-05.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/math/matrix-alignment-00.out b/test/typ/math/matrix-alignment-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/matrix-alignment-00.out
@@ -0,0 +1,95 @@
+--- parse tree ---
+[ Code
+    "typ/math/matrix-alignment-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/matrix-alignment-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/matrix-alignment-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Code
+        "typ/math/matrix-alignment-00.typ"
+        ( line 3 , column 3 )
+        (FuncCall
+           (Ident (Identifier "vec"))
+           [ BlockArg
+               [ Text " a "
+               , MAlignPoint
+               , Text " a a a "
+               , MAlignPoint
+               , Text " a a"
+               ]
+           , BlockArg
+               [ Text " a a "
+               , MAlignPoint
+               , Text " a a "
+               , MAlignPoint
+               , Text " a"
+               ]
+           , BlockArg
+               [ Text " a a a "
+               , MAlignPoint
+               , Text " a "
+               , MAlignPoint
+               , Text " a a a"
+               ]
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: math.vec(children: ({ text(body: [ a ]), 
+                                                           math.alignpoint(), 
+                                                           text(body: [ a a a ]), 
+                                                           math.alignpoint(), 
+                                                           text(body: [ a a]) }, 
+                                                         { text(body: [ a a ]), 
+                                                           math.alignpoint(), 
+                                                           text(body: [ a a ]), 
+                                                           math.alignpoint(), 
+                                                           text(body: [ a]) }, 
+                                                         { text(body: [ a a a ]), 
+                                                           math.alignpoint(), 
+                                                           text(body: [ a ]), 
+                                                           math.alignpoint(), 
+                                                           text(body: [ a a a]) })), 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/matrix-alignment-01.out b/test/typ/math/matrix-alignment-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/matrix-alignment-01.out
@@ -0,0 +1,106 @@
+--- parse tree ---
+[ Code
+    "typ/math/matrix-alignment-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/matrix-alignment-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/matrix-alignment-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Code
+        "typ/math/matrix-alignment-01.typ"
+        ( line 3 , column 3 )
+        (FuncCall
+           (Ident (Identifier "mat"))
+           [ ArrayArg
+               [ [ MGroup
+                     Nothing
+                     Nothing
+                     [ Text " a "
+                     , MAlignPoint
+                     , Text " a a a "
+                     , MAlignPoint
+                     , Text " a a"
+                     ]
+                 ]
+               , [ MGroup
+                     Nothing
+                     Nothing
+                     [ Text " a a "
+                     , MAlignPoint
+                     , Text " a a "
+                     , MAlignPoint
+                     , Text " a"
+                     ]
+                 ]
+               , [ MGroup
+                     Nothing
+                     Nothing
+                     [ Text " a a a "
+                     , MAlignPoint
+                     , Text " a "
+                     , MAlignPoint
+                     , Text " a a a"
+                     ]
+                 ]
+               ]
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: math.mat(rows: (({ text(body: [ a ]), 
+                                                        math.alignpoint(), 
+                                                        text(body: [ a a a ]), 
+                                                        math.alignpoint(), 
+                                                        text(body: [ a a]) }), 
+                                                     ({ text(body: [ a a ]), 
+                                                        math.alignpoint(), 
+                                                        text(body: [ a a ]), 
+                                                        math.alignpoint(), 
+                                                        text(body: [ a]) }), 
+                                                     ({ text(body: [ a a a ]), 
+                                                        math.alignpoint(), 
+                                                        text(body: [ a ]), 
+                                                        math.alignpoint(), 
+                                                        text(body: [ a a a]) }))), 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/matrix-alignment-02.out b/test/typ/math/matrix-alignment-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/matrix-alignment-02.out
@@ -0,0 +1,73 @@
+--- parse tree ---
+[ Code
+    "typ/math/matrix-alignment-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/matrix-alignment-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/matrix-alignment-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Code
+        "typ/math/matrix-alignment-02.typ"
+        ( line 3 , column 3 )
+        (FuncCall
+           (Ident (Identifier "mat"))
+           [ ArrayArg
+               [ [ Text " a" , Text " a a a" , Text " a a" ]
+               , [ Text " a a" , Text " a a" , Text " a" ]
+               , [ Text " a a a" , Text " a" , Text " a a a" ]
+               ]
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: math.mat(rows: ((text(body: [ a]), 
+                                                      text(body: [ a a a]), 
+                                                      text(body: [ a a])), 
+                                                     (text(body: [ a a]), 
+                                                      text(body: [ a a]), 
+                                                      text(body: [ a])), 
+                                                     (text(body: [ a a a]), 
+                                                      text(body: [ a]), 
+                                                      text(body: [ a a a])))), 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/matrix-alignment-03.out b/test/typ/math/matrix-alignment-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/matrix-alignment-03.out
@@ -0,0 +1,91 @@
+--- parse tree ---
+[ Code
+    "typ/math/matrix-alignment-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/matrix-alignment-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/matrix-alignment-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Code
+        "typ/math/matrix-alignment-03.typ"
+        ( line 3 , column 3 )
+        (FuncCall
+           (Ident (Identifier "mat"))
+           [ ArrayArg
+               [ [ MGroup Nothing Nothing [ MAlignPoint , Text "a" ]
+                 , MGroup Nothing Nothing [ MAlignPoint , Text "a a a" ]
+                 , MGroup Nothing Nothing [ MAlignPoint , Text "a a" ]
+                 ]
+               , [ MGroup Nothing Nothing [ MAlignPoint , Text "a a" ]
+                 , MGroup Nothing Nothing [ MAlignPoint , Text "a a" ]
+                 , MGroup Nothing Nothing [ MAlignPoint , Text "a" ]
+                 ]
+               , [ MGroup Nothing Nothing [ MAlignPoint , Text "a a a" ]
+                 , MGroup Nothing Nothing [ MAlignPoint , Text "a" ]
+                 , MGroup Nothing Nothing [ MAlignPoint , Text "a a a" ]
+                 ]
+               ]
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: math.mat(rows: (({ math.alignpoint(), 
+                                                        text(body: [a]) }, 
+                                                      { math.alignpoint(), 
+                                                        text(body: [a a a]) }, 
+                                                      { math.alignpoint(), 
+                                                        text(body: [a a]) }), 
+                                                     ({ math.alignpoint(), 
+                                                        text(body: [a a]) }, 
+                                                      { math.alignpoint(), 
+                                                        text(body: [a a]) }, 
+                                                      { math.alignpoint(), 
+                                                        text(body: [a]) }), 
+                                                     ({ math.alignpoint(), 
+                                                        text(body: [a a a]) }, 
+                                                      { math.alignpoint(), 
+                                                        text(body: [a]) }, 
+                                                      { math.alignpoint(), 
+                                                        text(body: [a a a]) }))), 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/matrix-alignment-04.out b/test/typ/math/matrix-alignment-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/matrix-alignment-04.out
@@ -0,0 +1,91 @@
+--- parse tree ---
+[ Code
+    "typ/math/matrix-alignment-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/matrix-alignment-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/matrix-alignment-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Code
+        "typ/math/matrix-alignment-04.typ"
+        ( line 3 , column 3 )
+        (FuncCall
+           (Ident (Identifier "mat"))
+           [ ArrayArg
+               [ [ MGroup Nothing Nothing [ Text " a" , MAlignPoint ]
+                 , MGroup Nothing Nothing [ Text " a a a" , MAlignPoint ]
+                 , MGroup Nothing Nothing [ Text " a a" , MAlignPoint ]
+                 ]
+               , [ MGroup Nothing Nothing [ Text " a a" , MAlignPoint ]
+                 , MGroup Nothing Nothing [ Text " a a" , MAlignPoint ]
+                 , MGroup Nothing Nothing [ Text " a" , MAlignPoint ]
+                 ]
+               , [ MGroup Nothing Nothing [ Text " a a a" , MAlignPoint ]
+                 , MGroup Nothing Nothing [ Text " a" , MAlignPoint ]
+                 , MGroup Nothing Nothing [ Text " a a a" , MAlignPoint ]
+                 ]
+               ]
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: math.mat(rows: (({ text(body: [ a]), 
+                                                        math.alignpoint() }, 
+                                                      { text(body: [ a a a]), 
+                                                        math.alignpoint() }, 
+                                                      { text(body: [ a a]), 
+                                                        math.alignpoint() }), 
+                                                     ({ text(body: [ a a]), 
+                                                        math.alignpoint() }, 
+                                                      { text(body: [ a a]), 
+                                                        math.alignpoint() }, 
+                                                      { text(body: [ a]), 
+                                                        math.alignpoint() }), 
+                                                     ({ text(body: [ a a a]), 
+                                                        math.alignpoint() }, 
+                                                      { text(body: [ a]), 
+                                                        math.alignpoint() }, 
+                                                      { text(body: [ a a a]), 
+                                                        math.alignpoint() }))), 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/matrix-alignment-05.out b/test/typ/math/matrix-alignment-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/matrix-alignment-05.out
@@ -0,0 +1,223 @@
+--- parse tree ---
+[ Code
+    "typ/math/matrix-alignment-05.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/matrix-alignment-05.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/matrix-alignment-05.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Code
+        "typ/math/matrix-alignment-05.typ"
+        ( line 3 , column 3 )
+        (FuncCall
+           (Ident (Identifier "mat"))
+           [ ArrayArg
+               [ [ MGroup
+                     Nothing Nothing [ MAlignPoint , Text "a" , Text "+" , Text "b" ]
+                 , Text "c"
+                 ]
+               , [ MGroup Nothing Nothing [ MAlignPoint , Text "d" ] , Text "e" ]
+               ]
+           ])
+    ]
+, SoftBreak
+, Equation
+    True
+    [ Code
+        "typ/math/matrix-alignment-05.typ"
+        ( line 4 , column 3 )
+        (FuncCall
+           (Ident (Identifier "mat"))
+           [ ArrayArg
+               [ [ MGroup
+                     Nothing
+                     Nothing
+                     [ MAlignPoint , Text "a" , Text "+" , Text "b" , MAlignPoint ]
+                 , Text "c"
+                 ]
+               , [ MGroup Nothing Nothing [ MAlignPoint , Text "d" , MAlignPoint ]
+                 , Text "e"
+                 ]
+               ]
+           ])
+    ]
+, SoftBreak
+, Equation
+    True
+    [ Code
+        "typ/math/matrix-alignment-05.typ"
+        ( line 5 , column 3 )
+        (FuncCall
+           (Ident (Identifier "mat"))
+           [ ArrayArg
+               [ [ MGroup
+                     Nothing
+                     Nothing
+                     [ MAlignPoint
+                     , MAlignPoint
+                     , MAlignPoint
+                     , Text "a"
+                     , Text "+"
+                     , Text "b"
+                     ]
+                 , Text "c"
+                 ]
+               , [ MGroup
+                     Nothing
+                     Nothing
+                     [ MAlignPoint , MAlignPoint , MAlignPoint , Text "d" ]
+                 , Text "e"
+                 ]
+               ]
+           ])
+    ]
+, SoftBreak
+, Equation
+    True
+    [ Code
+        "typ/math/matrix-alignment-05.typ"
+        ( line 6 , column 3 )
+        (FuncCall
+           (Ident (Identifier "mat"))
+           [ ArrayArg
+               [ [ MGroup
+                     Nothing
+                     Nothing
+                     [ Text "."
+                     , MAlignPoint
+                     , Text "a"
+                     , Text "+"
+                     , Text "b"
+                     , MAlignPoint
+                     , Text "."
+                     ]
+                 , Text "c"
+                 ]
+               , [ MGroup
+                     Nothing
+                     Nothing
+                     [ Code
+                         "typ/math/matrix-alignment-05.typ"
+                         ( line 6 , column 17 )
+                         (FieldAccess (Ident (Identifier "h")) (Ident (Identifier "dots")))
+                     , Text "."
+                     , Text "."
+                     , MAlignPoint
+                     , Text "d"
+                     , MAlignPoint
+                     , Code
+                         "typ/math/matrix-alignment-05.typ"
+                         ( line 6 , column 25 )
+                         (FieldAccess (Ident (Identifier "h")) (Ident (Identifier "dots")))
+                     , Text "."
+                     , Text "."
+                     ]
+                 , Text "e"
+                 ]
+               ]
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: math.mat(rows: (({ math.alignpoint(), 
+                                                        text(body: [a]), 
+                                                        text(body: [+]), 
+                                                        text(body: [b]) }, 
+                                                      text(body: [c])), 
+                                                     ({ math.alignpoint(), 
+                                                        text(body: [d]) }, 
+                                                      text(body: [e])))), 
+                               numbering: none), 
+                 text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: math.mat(rows: (({ math.alignpoint(), 
+                                                        text(body: [a]), 
+                                                        text(body: [+]), 
+                                                        text(body: [b]), 
+                                                        math.alignpoint() }, 
+                                                      text(body: [c])), 
+                                                     ({ math.alignpoint(), 
+                                                        text(body: [d]), 
+                                                        math.alignpoint() }, 
+                                                      text(body: [e])))), 
+                               numbering: none), 
+                 text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: math.mat(rows: (({ math.alignpoint(), 
+                                                        math.alignpoint(), 
+                                                        math.alignpoint(), 
+                                                        text(body: [a]), 
+                                                        text(body: [+]), 
+                                                        text(body: [b]) }, 
+                                                      text(body: [c])), 
+                                                     ({ math.alignpoint(), 
+                                                        math.alignpoint(), 
+                                                        math.alignpoint(), 
+                                                        text(body: [d]) }, 
+                                                      text(body: [e])))), 
+                               numbering: none), 
+                 text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: math.mat(rows: (({ text(body: [.]), 
+                                                        math.alignpoint(), 
+                                                        text(body: [a]), 
+                                                        text(body: [+]), 
+                                                        text(body: [b]), 
+                                                        math.alignpoint(), 
+                                                        text(body: [.]) }, 
+                                                      text(body: [c])), 
+                                                     ({ text(body: […]), 
+                                                        text(body: [.]), 
+                                                        text(body: [.]), 
+                                                        math.alignpoint(), 
+                                                        text(body: [d]), 
+                                                        math.alignpoint(), 
+                                                        text(body: […]), 
+                                                        text(body: [.]), 
+                                                        text(body: [.]) }, 
+                                                      text(body: [e])))), 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/matrix-alignment-06.out b/test/typ/math/matrix-alignment-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/matrix-alignment-06.out
@@ -0,0 +1,321 @@
+--- parse tree ---
+[ Code
+    "typ/math/matrix-alignment-06.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/matrix-alignment-06.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/matrix-alignment-06.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Code
+        "typ/math/matrix-alignment-06.typ"
+        ( line 3 , column 3 )
+        (FuncCall
+           (Ident (Identifier "mat"))
+           [ ArrayArg
+               [ [ MGroup
+                     Nothing
+                     Nothing
+                     [ Code
+                         "typ/math/matrix-alignment-06.typ"
+                         ( line 3 , column 7 )
+                         (Ident (Identifier "minus"))
+                     , Text "1"
+                     ]
+                 , Text "1"
+                 , Text "1"
+                 ]
+               , [ Text "1"
+                 , MGroup
+                     Nothing
+                     Nothing
+                     [ Code
+                         "typ/math/matrix-alignment-06.typ"
+                         ( line 3 , column 20 )
+                         (Ident (Identifier "minus"))
+                     , Text "1"
+                     ]
+                 , Text "1"
+                 ]
+               , [ Text "1"
+                 , Text "1"
+                 , MGroup
+                     Nothing
+                     Nothing
+                     [ Code
+                         "typ/math/matrix-alignment-06.typ"
+                         ( line 3 , column 33 )
+                         (Ident (Identifier "minus"))
+                     , Text "1"
+                     ]
+                 ]
+               ]
+           ])
+    ]
+, SoftBreak
+, Equation
+    True
+    [ Code
+        "typ/math/matrix-alignment-06.typ"
+        ( line 4 , column 3 )
+        (FuncCall
+           (Ident (Identifier "mat"))
+           [ ArrayArg
+               [ [ MGroup
+                     Nothing
+                     Nothing
+                     [ Code
+                         "typ/math/matrix-alignment-06.typ"
+                         ( line 4 , column 7 )
+                         (Ident (Identifier "minus"))
+                     , Text "1"
+                     , MAlignPoint
+                     ]
+                 , MGroup Nothing Nothing [ Text "1" , MAlignPoint ]
+                 , MGroup Nothing Nothing [ Text "1" , MAlignPoint ]
+                 ]
+               , [ MGroup Nothing Nothing [ Text "1" , MAlignPoint ]
+                 , MGroup
+                     Nothing
+                     Nothing
+                     [ Code
+                         "typ/math/matrix-alignment-06.typ"
+                         ( line 4 , column 24 )
+                         (Ident (Identifier "minus"))
+                     , Text "1"
+                     , MAlignPoint
+                     ]
+                 , MGroup Nothing Nothing [ Text "1" , MAlignPoint ]
+                 ]
+               , [ MGroup Nothing Nothing [ Text "1" , MAlignPoint ]
+                 , MGroup Nothing Nothing [ Text "1" , MAlignPoint ]
+                 , MGroup
+                     Nothing
+                     Nothing
+                     [ Code
+                         "typ/math/matrix-alignment-06.typ"
+                         ( line 4 , column 41 )
+                         (Ident (Identifier "minus"))
+                     , Text "1"
+                     , MAlignPoint
+                     ]
+                 ]
+               ]
+           ])
+    ]
+, SoftBreak
+, Equation
+    True
+    [ Code
+        "typ/math/matrix-alignment-06.typ"
+        ( line 5 , column 3 )
+        (FuncCall
+           (Ident (Identifier "mat"))
+           [ ArrayArg
+               [ [ MGroup
+                     Nothing
+                     Nothing
+                     [ Code
+                         "typ/math/matrix-alignment-06.typ"
+                         ( line 5 , column 7 )
+                         (Ident (Identifier "minus"))
+                     , Text "1"
+                     , MAlignPoint
+                     ]
+                 , MGroup Nothing Nothing [ Text "1" , MAlignPoint ]
+                 , MGroup Nothing Nothing [ Text "1" , MAlignPoint ]
+                 ]
+               , [ Text "1"
+                 , MGroup
+                     Nothing
+                     Nothing
+                     [ Code
+                         "typ/math/matrix-alignment-06.typ"
+                         ( line 5 , column 23 )
+                         (Ident (Identifier "minus"))
+                     , Text "1"
+                     ]
+                 , Text "1"
+                 ]
+               , [ Text "1"
+                 , Text "1"
+                 , MGroup
+                     Nothing
+                     Nothing
+                     [ Code
+                         "typ/math/matrix-alignment-06.typ"
+                         ( line 5 , column 36 )
+                         (Ident (Identifier "minus"))
+                     , Text "1"
+                     ]
+                 ]
+               ]
+           ])
+    ]
+, SoftBreak
+, Equation
+    True
+    [ Code
+        "typ/math/matrix-alignment-06.typ"
+        ( line 6 , column 3 )
+        (FuncCall
+           (Ident (Identifier "mat"))
+           [ ArrayArg
+               [ [ MGroup
+                     Nothing
+                     Nothing
+                     [ MAlignPoint
+                     , Code
+                         "typ/math/matrix-alignment-06.typ"
+                         ( line 6 , column 8 )
+                         (Ident (Identifier "minus"))
+                     , Text "1"
+                     ]
+                 , MGroup Nothing Nothing [ MAlignPoint , Text "1" ]
+                 , MGroup Nothing Nothing [ MAlignPoint , Text "1" ]
+                 ]
+               , [ Text "1"
+                 , MGroup
+                     Nothing
+                     Nothing
+                     [ Code
+                         "typ/math/matrix-alignment-06.typ"
+                         ( line 6 , column 23 )
+                         (Ident (Identifier "minus"))
+                     , Text "1"
+                     ]
+                 , Text "1"
+                 ]
+               , [ Text "1"
+                 , Text "1"
+                 , MGroup
+                     Nothing
+                     Nothing
+                     [ Code
+                         "typ/math/matrix-alignment-06.typ"
+                         ( line 6 , column 36 )
+                         (Ident (Identifier "minus"))
+                     , Text "1"
+                     ]
+                 ]
+               ]
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: math.mat(rows: (({ text(body: [−]), 
+                                                        text(body: [1]) }, 
+                                                      text(body: [1]), 
+                                                      text(body: [1])), 
+                                                     (text(body: [1]), 
+                                                      { text(body: [−]), 
+                                                        text(body: [1]) }, 
+                                                      text(body: [1])), 
+                                                     (text(body: [1]), 
+                                                      text(body: [1]), 
+                                                      { text(body: [−]), 
+                                                        text(body: [1]) }))), 
+                               numbering: none), 
+                 text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: math.mat(rows: (({ text(body: [−]), 
+                                                        text(body: [1]), 
+                                                        math.alignpoint() }, 
+                                                      { text(body: [1]), 
+                                                        math.alignpoint() }, 
+                                                      { text(body: [1]), 
+                                                        math.alignpoint() }), 
+                                                     ({ text(body: [1]), 
+                                                        math.alignpoint() }, 
+                                                      { text(body: [−]), 
+                                                        text(body: [1]), 
+                                                        math.alignpoint() }, 
+                                                      { text(body: [1]), 
+                                                        math.alignpoint() }), 
+                                                     ({ text(body: [1]), 
+                                                        math.alignpoint() }, 
+                                                      { text(body: [1]), 
+                                                        math.alignpoint() }, 
+                                                      { text(body: [−]), 
+                                                        text(body: [1]), 
+                                                        math.alignpoint() }))), 
+                               numbering: none), 
+                 text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: math.mat(rows: (({ text(body: [−]), 
+                                                        text(body: [1]), 
+                                                        math.alignpoint() }, 
+                                                      { text(body: [1]), 
+                                                        math.alignpoint() }, 
+                                                      { text(body: [1]), 
+                                                        math.alignpoint() }), 
+                                                     (text(body: [1]), 
+                                                      { text(body: [−]), 
+                                                        text(body: [1]) }, 
+                                                      text(body: [1])), 
+                                                     (text(body: [1]), 
+                                                      text(body: [1]), 
+                                                      { text(body: [−]), 
+                                                        text(body: [1]) }))), 
+                               numbering: none), 
+                 text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: math.mat(rows: (({ math.alignpoint(), 
+                                                        text(body: [−]), 
+                                                        text(body: [1]) }, 
+                                                      { math.alignpoint(), 
+                                                        text(body: [1]) }, 
+                                                      { math.alignpoint(), 
+                                                        text(body: [1]) }), 
+                                                     (text(body: [1]), 
+                                                      { text(body: [−]), 
+                                                        text(body: [1]) }, 
+                                                      text(body: [1])), 
+                                                     (text(body: [1]), 
+                                                      text(body: [1]), 
+                                                      { text(body: [−]), 
+                                                        text(body: [1]) }))), 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/multiline-00.out b/test/typ/math/multiline-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/multiline-00.out
@@ -0,0 +1,101 @@
+--- parse tree ---
+[ Code
+    "typ/math/multiline-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/multiline-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/multiline-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Text "x"
+    , MAlignPoint
+    , Text "="
+    , Text "x"
+    , Text "+"
+    , Text "y"
+    , HardBreak
+    , MAlignPoint
+    , Text "="
+    , Text "x"
+    , Text "+"
+    , Text "2"
+    , Text "z"
+    , HardBreak
+    , MAlignPoint
+    , Text "="
+    , Code
+        "typ/math/multiline-00.typ"
+        ( line 5 , column 8 )
+        (Ident (Identifier "sum"))
+    , Text "x"
+    , Code
+        "typ/math/multiline-00.typ"
+        ( line 5 , column 14 )
+        (Ident (Identifier "dot"))
+    , Text "2"
+    , Text "z"
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [x]), 
+                                       math.alignpoint(), 
+                                       text(body: [=]), 
+                                       text(body: [x]), 
+                                       text(body: [+]), 
+                                       text(body: [y]), 
+                                       linebreak(), 
+                                       math.alignpoint(), 
+                                       text(body: [=]), 
+                                       text(body: [x]), 
+                                       text(body: [+]), 
+                                       text(body: [2]), 
+                                       text(body: [z]), 
+                                       linebreak(), 
+                                       math.alignpoint(), 
+                                       text(body: [=]), 
+                                       text(body: [∑]), 
+                                       text(body: [x]), 
+                                       text(body: [⋅]), 
+                                       text(body: [2]), 
+                                       text(body: [z]) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/multiline-01.out b/test/typ/math/multiline-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/multiline-01.out
@@ -0,0 +1,112 @@
+--- parse tree ---
+[ Code
+    "typ/math/multiline-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/multiline-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/multiline-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Text "x"
+    , Text "+"
+    , Text "1"
+    , MAlignPoint
+    , Text "="
+    , MAttach Nothing (Just (Text "2")) (Text "a")
+    , Text "+"
+    , MAttach Nothing (Just (Text "2")) (Text "b")
+    , HardBreak
+    , Text "y"
+    , MAlignPoint
+    , Text "="
+    , Text "a"
+    , Text "+"
+    , MAttach Nothing (Just (Text "2")) (Text "b")
+    , HardBreak
+    , Text "z"
+    , MAlignPoint
+    , Text "="
+    , Code
+        "typ/math/multiline-01.typ"
+        ( line 5 , column 12 )
+        (Ident (Identifier "alpha"))
+    , Code
+        "typ/math/multiline-01.typ"
+        ( line 5 , column 18 )
+        (Ident (Identifier "dot"))
+    , Code
+        "typ/math/multiline-01.typ"
+        ( line 5 , column 22 )
+        (Ident (Identifier "beta"))
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [x]), 
+                                       text(body: [+]), 
+                                       text(body: [1]), 
+                                       math.alignpoint(), 
+                                       text(body: [=]), 
+                                       math.attach(b: none, 
+                                                   base: text(body: [a]), 
+                                                   t: text(body: [2])), 
+                                       text(body: [+]), 
+                                       math.attach(b: none, 
+                                                   base: text(body: [b]), 
+                                                   t: text(body: [2])), 
+                                       linebreak(), 
+                                       text(body: [y]), 
+                                       math.alignpoint(), 
+                                       text(body: [=]), 
+                                       text(body: [a]), 
+                                       text(body: [+]), 
+                                       math.attach(b: none, 
+                                                   base: text(body: [b]), 
+                                                   t: text(body: [2])), 
+                                       linebreak(), 
+                                       text(body: [z]), 
+                                       math.alignpoint(), 
+                                       text(body: [=]), 
+                                       text(body: [α]), 
+                                       text(body: [⋅]), 
+                                       text(body: [β]) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/multiline-02.out b/test/typ/math/multiline-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/multiline-02.out
@@ -0,0 +1,91 @@
+--- parse tree ---
+[ Code
+    "typ/math/multiline-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/multiline-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/multiline-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Text "a"
+    , Text "+"
+    , Text "b"
+    , MAlignPoint
+    , Text "="
+    , Text "2"
+    , Text "+"
+    , Text "3"
+    , MAlignPoint
+    , Text "="
+    , Text "5"
+    , HardBreak
+    , Text "b"
+    , MAlignPoint
+    , Text "="
+    , Text "c"
+    , MAlignPoint
+    , Text "="
+    , Text "3"
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [a]), 
+                                       text(body: [+]), 
+                                       text(body: [b]), 
+                                       math.alignpoint(), 
+                                       text(body: [=]), 
+                                       text(body: [2]), 
+                                       text(body: [+]), 
+                                       text(body: [3]), 
+                                       math.alignpoint(), 
+                                       text(body: [=]), 
+                                       text(body: [5]), 
+                                       linebreak(), 
+                                       text(body: [b]), 
+                                       math.alignpoint(), 
+                                       text(body: [=]), 
+                                       text(body: [c]), 
+                                       math.alignpoint(), 
+                                       text(body: [=]), 
+                                       text(body: [3]) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/multiline-03.out b/test/typ/math/multiline-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/multiline-03.out
@@ -0,0 +1,90 @@
+--- parse tree ---
+[ Code
+    "typ/math/multiline-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/multiline-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/multiline-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Text "f"
+    , Code
+        "typ/math/multiline-03.typ"
+        ( line 3 , column 5 )
+        (FieldAccess
+           (Ident (Identifier "eq")) (Ident (Identifier "colon")))
+    , Code
+        "typ/math/multiline-03.typ"
+        ( line 3 , column 8 )
+        (FuncCall
+           (Ident (Identifier "cases"))
+           [ BlockArg
+               [ Text "1"
+               , Text "+"
+               , Text "2"
+               , MAlignPoint
+               , Text "iff "
+               , MAlignPoint
+               , Text "x"
+               ]
+           , BlockArg
+               [ Text "3" , MAlignPoint , Text "if " , MAlignPoint , Text "y" ]
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [f]), 
+                                       text(body: [≔]), 
+                                       math.cases(children: ({ text(body: [1]), 
+                                                               text(body: [+]), 
+                                                               text(body: [2]), 
+                                                               math.alignpoint(), 
+                                                               text(body: [iff ]), 
+                                                               math.alignpoint(), 
+                                                               text(body: [x]) }, 
+                                                             { text(body: [3]), 
+                                                               math.alignpoint(), 
+                                                               text(body: [if ]), 
+                                                               math.alignpoint(), 
+                                                               text(body: [y]) })) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/multiline-04.out b/test/typ/math/multiline-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/multiline-04.out
@@ -0,0 +1,79 @@
+--- parse tree ---
+[ Code
+    "typ/math/multiline-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/multiline-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/multiline-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Text " abc "
+    , MAlignPoint
+    , Text "="
+    , Text "c"
+    , HardBreak
+    , MAlignPoint
+    , Text "="
+    , Text "d"
+    , Text "+"
+    , Text "1"
+    , HardBreak
+    , Text "="
+    , Text "x"
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [ abc ]), 
+                                       math.alignpoint(), 
+                                       text(body: [=]), 
+                                       text(body: [c]), 
+                                       linebreak(), 
+                                       math.alignpoint(), 
+                                       text(body: [=]), 
+                                       text(body: [d]), 
+                                       text(body: [+]), 
+                                       text(body: [1]), 
+                                       linebreak(), 
+                                       text(body: [=]), 
+                                       text(body: [x]) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/multiline-05.out b/test/typ/math/multiline-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/multiline-05.out
@@ -0,0 +1,112 @@
+--- parse tree ---
+[ Code
+    "typ/math/multiline-05.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/multiline-05.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/multiline-05.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ MAttach
+        (Just
+           (MGroup
+              Nothing
+              Nothing
+              [ Text "n"
+              , Code
+                  "typ/math/multiline-05.typ"
+                  ( line 3 , column 10 )
+                  (Ident (Identifier "in"))
+              , Code
+                  "typ/math/multiline-05.typ"
+                  ( line 3 , column 13 )
+                  (Ident (Identifier "NN"))
+              , HardBreak
+              , Text "n"
+              , Code
+                  "typ/math/multiline-05.typ"
+                  ( line 3 , column 20 )
+                  (FieldAccess (Ident (Identifier "eq")) (Ident (Identifier "lt")))
+              , Text "5"
+              ]))
+        Nothing
+        (Code
+           "typ/math/multiline-05.typ"
+           ( line 3 , column 3 )
+           (Ident (Identifier "sum")))
+    , Text "n"
+    , Text "="
+    , MFrac
+        (MGroup
+           (Just "(")
+           (Just ")")
+           [ Text "5"
+           , MGroup (Just "(") (Just ")") [ Text "5" , Text "+" , Text "1" ]
+           ])
+        (Text "2")
+    , Text "="
+    , Text "15"
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { math.attach(b: { text(body: [n]), 
+                                                        text(body: [∈]), 
+                                                        text(body: [ℕ]), 
+                                                        linebreak(), 
+                                                        text(body: [n]), 
+                                                        text(body: [≤]), 
+                                                        text(body: [5]) }, 
+                                                   base: text(body: [∑]), 
+                                                   t: none), 
+                                       text(body: [n]), 
+                                       text(body: [=]), 
+                                       math.frac(denom: text(body: [2]), 
+                                                 num: { text(body: [5]), 
+                                                        math.lr(body: ({ [(], 
+                                                                         text(body: [5]), 
+                                                                         text(body: [+]), 
+                                                                         text(body: [1]), 
+                                                                         [)] })) }), 
+                                       text(body: [=]), 
+                                       text(body: [15]) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/multiline-06.out b/test/typ/math/multiline-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/multiline-06.out
@@ -0,0 +1,67 @@
+--- parse tree ---
+[ Code
+    "typ/math/multiline-06.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/multiline-06.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/multiline-06.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True [ Text " abc " , MAlignPoint , Text "=" , Text "c" ]
+, SoftBreak
+, Text "No"
+, Space
+, Text "trailing"
+, Space
+, Text "line"
+, Space
+, Text "break"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [ abc ]), 
+                                       math.alignpoint(), 
+                                       text(body: [=]), 
+                                       text(body: [c]) }, 
+                               numbering: none), 
+                 text(body: [
+No trailing line break.]), 
+                 parbreak() })
diff --git a/test/typ/math/multiline-07.out b/test/typ/math/multiline-07.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/multiline-07.out
@@ -0,0 +1,69 @@
+--- parse tree ---
+[ Code
+    "typ/math/multiline-07.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/multiline-07.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/multiline-07.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Text " abc " , MAlignPoint , Text "=" , Text "c" , HardBreak ]
+, SoftBreak
+, Text "One"
+, Space
+, Text "trailing"
+, Space
+, Text "line"
+, Space
+, Text "break"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [ abc ]), 
+                                       math.alignpoint(), 
+                                       text(body: [=]), 
+                                       text(body: [c]), 
+                                       linebreak() }, 
+                               numbering: none), 
+                 text(body: [
+One trailing line break.]), 
+                 parbreak() })
diff --git a/test/typ/math/multiline-08.out b/test/typ/math/multiline-08.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/multiline-08.out
@@ -0,0 +1,78 @@
+--- parse tree ---
+[ Code
+    "typ/math/multiline-08.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/multiline-08.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/multiline-08.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Text " abc "
+    , MAlignPoint
+    , Text "="
+    , Text "c"
+    , HardBreak
+    , HardBreak
+    , HardBreak
+    ]
+, SoftBreak
+, Text "Multiple"
+, Space
+, Text "trailing"
+, Space
+, Text "line"
+, Space
+, Text "breaks"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [ abc ]), 
+                                       math.alignpoint(), 
+                                       text(body: [=]), 
+                                       text(body: [c]), 
+                                       linebreak(), 
+                                       linebreak(), 
+                                       linebreak() }, 
+                               numbering: none), 
+                 text(body: [
+Multiple trailing line breaks.]), 
+                 parbreak() })
diff --git a/test/typ/math/numbering-00.out b/test/typ/math/numbering-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/numbering-00.out
@@ -0,0 +1,185 @@
+--- parse tree ---
+[ Code
+    "typ/math/numbering-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/numbering-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/numbering-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/math/numbering-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 150.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/math/numbering-00.typ"
+    ( line 3 , column 2 )
+    (Set
+       (FieldAccess
+          (Ident (Identifier "equation")) (Ident (Identifier "math")))
+       [ KeyValArg (Identifier "numbering") (Literal (String "(I)")) ])
+, ParBreak
+, Text "We"
+, Space
+, Text "define"
+, Space
+, Equation False [ Text "x" ]
+, Space
+, Text "in"
+, Space
+, Text "preparation"
+, Space
+, Text "of"
+, Space
+, Ref "fib" (Literal Auto)
+, Text ":"
+, SoftBreak
+, Equation
+    True
+    [ Code
+        "typ/math/numbering-00.typ"
+        ( line 6 , column 3 )
+        (FieldAccess (Ident (Identifier "alt")) (Ident (Identifier "phi")))
+    , Code
+        "typ/math/numbering-00.typ"
+        ( line 6 , column 11 )
+        (FieldAccess
+           (Ident (Identifier "eq")) (Ident (Identifier "colon")))
+    , MFrac
+        (MGroup
+           (Just "(")
+           (Just ")")
+           [ Text "1"
+           , Text "+"
+           , Code
+               "typ/math/numbering-00.typ"
+               ( line 6 , column 19 )
+               (FuncCall (Ident (Identifier "sqrt")) [ BlockArg [ Text "5" ] ])
+           ])
+        (Text "2")
+    ]
+, Space
+, Code
+    "typ/math/numbering-00.typ" ( line 6 , column 34 ) (Label "ratio")
+, ParBreak
+, Text "With"
+, Space
+, Ref "ratio" (Literal Auto)
+, Text ","
+, Space
+, Text "we"
+, Space
+, Text "get"
+, SoftBreak
+, Equation
+    True
+    [ MAttach (Just (Text "n")) Nothing (Text "F")
+    , Text "="
+    , Code
+        "typ/math/numbering-00.typ"
+        ( line 9 , column 9 )
+        (FuncCall
+           (Ident (Identifier "round"))
+           [ BlockArg
+               [ MFrac
+                   (Text "1")
+                   (Code
+                      "typ/math/numbering-00.typ"
+                      ( line 9 , column 19 )
+                      (FuncCall (Ident (Identifier "sqrt")) [ BlockArg [ Text "5" ] ]))
+               , MAttach
+                   Nothing
+                   (Just (Text "n"))
+                   (Code
+                      "typ/math/numbering-00.typ"
+                      ( line 9 , column 27 )
+                      (FieldAccess
+                         (Ident (Identifier "alt")) (Ident (Identifier "phi"))))
+               ]
+           ])
+    ]
+, Space
+, Code
+    "typ/math/numbering-00.typ" ( line 9 , column 40 ) (Label "fib")
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [We define ]), 
+                 math.equation(block: false, 
+                               body: text(body: [x]), 
+                               numbering: none), 
+                 text(body: [ in preparation of ]), 
+                 ref(supplement: auto, 
+                     target: <fib>), 
+                 text(body: [:
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [ϕ]), 
+                                       text(body: [≔]), 
+                                       math.frac(denom: text(body: [2]), 
+                                                 num: { text(body: [1]), 
+                                                        text(body: [+]), 
+                                                        math.sqrt(radicand: text(body: [5])) }) }, 
+                               numbering: none), 
+                 text(body: [ ]), 
+                 <ratio>, 
+                 parbreak(), 
+                 text(body: [With ]), 
+                 ref(supplement: auto, 
+                     target: <ratio>), 
+                 text(body: [, we get
+]), 
+                 math.equation(block: true, 
+                               body: { math.attach(b: text(body: [n]), 
+                                                   base: text(body: [F]), 
+                                                   t: none), 
+                                       text(body: [=]), 
+                                       math.round(body: { math.frac(denom: math.sqrt(radicand: text(body: [5])), 
+                                                                    num: text(body: [1])), 
+                                                          math.attach(b: none, 
+                                                                      base: text(body: [ϕ]), 
+                                                                      t: text(body: [n])) }) }, 
+                               numbering: none), 
+                 text(body: [ ]), 
+                 <fib>, 
+                 parbreak() })
diff --git a/test/typ/math/op-00.out b/test/typ/math/op-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/op-00.out
@@ -0,0 +1,85 @@
+--- parse tree ---
+[ Code
+    "typ/math/op-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/op-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/op-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ MAttach
+        (Just
+           (MGroup
+              Nothing
+              Nothing
+              [ Text "1"
+              , Code
+                  "typ/math/op-00.typ"
+                  ( line 3 , column 9 )
+                  (FieldAccess (Ident (Identifier "eq")) (Ident (Identifier "lt")))
+              , Text "n"
+              , Code
+                  "typ/math/op-00.typ"
+                  ( line 3 , column 12 )
+                  (FieldAccess (Ident (Identifier "eq")) (Ident (Identifier "lt")))
+              , Text "m"
+              ]))
+        Nothing
+        (Code
+           "typ/math/op-00.typ"
+           ( line 3 , column 3 )
+           (Ident (Identifier "max")))
+    , Text "n"
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { math.attach(b: { text(body: [1]), 
+                                                        text(body: [≤]), 
+                                                        text(body: [n]), 
+                                                        text(body: [≤]), 
+                                                        text(body: [m]) }, 
+                                                   base: math.op(limits: true, 
+                                                                 text: "max"), 
+                                                   t: none), 
+                                       text(body: [n]) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/op-01.out b/test/typ/math/op-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/op-01.out
@@ -0,0 +1,110 @@
+--- parse tree ---
+[ Code
+    "typ/math/op-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/op-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/op-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ MAlignPoint
+    , Code
+        "typ/math/op-01.typ"
+        ( line 3 , column 5 )
+        (Ident (Identifier "sin"))
+    , Text "x"
+    , Text "+"
+    , MAttach
+        (Just (Text "2"))
+        Nothing
+        (Code
+           "typ/math/op-01.typ"
+           ( line 3 , column 13 )
+           (Ident (Identifier "log")))
+    , Text "x"
+    , HardBreak
+    , Text "="
+    , MAlignPoint
+    , Code
+        "typ/math/op-01.typ"
+        ( line 4 , column 5 )
+        (FuncCall (Ident (Identifier "sin")) [ BlockArg [ Text "x" ] ])
+    , Text "+"
+    , MAttach
+        (Just (Text "2"))
+        Nothing
+        (Code
+           "typ/math/op-01.typ"
+           ( line 4 , column 14 )
+           (Ident (Identifier "log")))
+    , MGroup (Just "(") (Just ")") [ Text "x" ]
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { math.alignpoint(), 
+                                       math.op(limits: false, 
+                                               text: "sin"), 
+                                       text(body: [x]), 
+                                       text(body: [+]), 
+                                       math.attach(b: text(body: [2]), 
+                                                   base: math.op(limits: false, 
+                                                                 text: "log"), 
+                                                   t: none), 
+                                       text(body: [x]), 
+                                       linebreak(), 
+                                       text(body: [=]), 
+                                       math.alignpoint(), 
+                                       math.op(limits: false, 
+                                               text: "sin"), 
+                                       text(body: [(]), 
+                                       text(body: [x]), 
+                                       text(body: [)]), 
+                                       text(body: [+]), 
+                                       math.attach(b: text(body: [2]), 
+                                                   base: math.op(limits: false, 
+                                                                 text: "log"), 
+                                                   t: none), 
+                                       math.lr(body: ({ [(], 
+                                                        text(body: [x]), 
+                                                        [)] })) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/op-02.out b/test/typ/math/op-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/op-02.out
@@ -0,0 +1,153 @@
+--- parse tree ---
+[ Code
+    "typ/math/op-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/op-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/op-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/math/op-02.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg
+           (Identifier "font") (Literal (String "New Computer Modern"))
+       ])
+, SoftBreak
+, Text "Discuss"
+, Space
+, Equation
+    False
+    [ MAttach
+        (Just
+           (MGroup
+              Nothing
+              Nothing
+              [ Text "n"
+              , Code
+                  "typ/math/op-02.typ"
+                  ( line 4 , column 16 )
+                  (FieldAccess (Ident (Identifier "r")) (Ident (Identifier "arrow")))
+              , Code
+                  "typ/math/op-02.typ"
+                  ( line 4 , column 18 )
+                  (Ident (Identifier "oo"))
+              ]))
+        Nothing
+        (Code
+           "typ/math/op-02.typ"
+           ( line 4 , column 10 )
+           (Ident (Identifier "lim")))
+    , MFrac (Text "1") (Text "n")
+    ]
+, Space
+, Text "now"
+, Text "."
+, SoftBreak
+, Equation
+    True
+    [ MAttach
+        (Just
+           (MGroup
+              Nothing
+              Nothing
+              [ Text "n"
+              , Code
+                  "typ/math/op-02.typ"
+                  ( line 5 , column 9 )
+                  (FieldAccess (Ident (Identifier "r")) (Ident (Identifier "arrow")))
+              , Code
+                  "typ/math/op-02.typ"
+                  ( line 5 , column 11 )
+                  (Ident (Identifier "infinity"))
+              ]))
+        Nothing
+        (Code
+           "typ/math/op-02.typ"
+           ( line 5 , column 3 )
+           (Ident (Identifier "lim")))
+    , MFrac (Text "1") (Text "n")
+    , Text "="
+    , Text "0"
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+Discuss ], 
+                      font: "New Computer Modern"), 
+                 math.equation(block: false, 
+                               body: { math.attach(b: { text(body: [n], 
+                                                             font: "New Computer Modern"), 
+                                                        text(body: [→], 
+                                                             font: "New Computer Modern"), 
+                                                        text(body: [∞], 
+                                                             font: "New Computer Modern") }, 
+                                                   base: math.op(limits: true, 
+                                                                 text: "lim"), 
+                                                   t: none), 
+                                       math.frac(denom: text(body: [n], 
+                                                             font: "New Computer Modern"), 
+                                                 num: text(body: [1], 
+                                                           font: "New Computer Modern")) }, 
+                               numbering: none), 
+                 text(body: [ now.
+], 
+                      font: "New Computer Modern"), 
+                 math.equation(block: true, 
+                               body: { math.attach(b: { text(body: [n], 
+                                                             font: "New Computer Modern"), 
+                                                        text(body: [→], 
+                                                             font: "New Computer Modern"), 
+                                                        text(body: [∞], 
+                                                             font: "New Computer Modern") }, 
+                                                   base: math.op(limits: true, 
+                                                                 text: "lim"), 
+                                                   t: none), 
+                                       math.frac(denom: text(body: [n], 
+                                                             font: "New Computer Modern"), 
+                                                 num: text(body: [1], 
+                                                           font: "New Computer Modern")), 
+                                       text(body: [=], 
+                                            font: "New Computer Modern"), 
+                                       text(body: [0], 
+                                            font: "New Computer Modern") }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/op-03.out b/test/typ/math/op-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/op-03.out
@@ -0,0 +1,115 @@
+--- parse tree ---
+[ Code
+    "typ/math/op-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/op-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/op-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ MAttach
+        (Just
+           (MGroup
+              Nothing
+              Nothing
+              [ Text "x"
+              , Code
+                  "typ/math/op-03.typ"
+                  ( line 3 , column 32 )
+                  (FieldAccess
+                     (Ident (Identifier "eq")) (Ident (Identifier "colon")))
+              , Text "1"
+              ]))
+        Nothing
+        (Code
+           "typ/math/op-03.typ"
+           ( line 3 , column 3 )
+           (FuncCall
+              (Ident (Identifier "op"))
+              [ BlockArg [ Text "myop" ]
+              , KeyValArg (Identifier "limits") (Literal (Boolean False))
+              ]))
+    , Text "x"
+    , HardBreak
+    , MAttach
+        (Just
+           (MGroup
+              Nothing
+              Nothing
+              [ Text "x"
+              , Code
+                  "typ/math/op-03.typ"
+                  ( line 4 , column 31 )
+                  (FieldAccess
+                     (Ident (Identifier "eq")) (Ident (Identifier "colon")))
+              , Text "1"
+              ]))
+        Nothing
+        (Code
+           "typ/math/op-03.typ"
+           ( line 4 , column 3 )
+           (FuncCall
+              (Ident (Identifier "op"))
+              [ BlockArg [ Text "myop" ]
+              , KeyValArg (Identifier "limits") (Literal (Boolean True))
+              ]))
+    , Text "x"
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { math.attach(b: { text(body: [x]), 
+                                                        text(body: [≔]), 
+                                                        text(body: [1]) }, 
+                                                   base: math.op(limits: false, 
+                                                                 text: text(body: [myop])), 
+                                                   t: none), 
+                                       text(body: [x]), 
+                                       linebreak(), 
+                                       math.attach(b: { text(body: [x]), 
+                                                        text(body: [≔]), 
+                                                        text(body: [1]) }, 
+                                                   base: math.op(limits: true, 
+                                                                 text: text(body: [myop])), 
+                                                   t: none), 
+                                       text(body: [x]) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/op-04.out b/test/typ/math/op-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/op-04.out
@@ -0,0 +1,78 @@
+--- parse tree ---
+[ Code
+    "typ/math/op-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/op-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/op-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ MAttach
+        (Just (Text "x"))
+        Nothing
+        (Code
+           "typ/math/op-04.typ"
+           ( line 3 , column 3 )
+           (FuncCall
+              (Ident (Identifier "bold"))
+              [ BlockArg
+                  [ Code
+                      "typ/math/op-04.typ"
+                      ( line 3 , column 8 )
+                      (FuncCall
+                         (Ident (Identifier "op"))
+                         [ BlockArg [ Text "bold" ]
+                         , KeyValArg (Identifier "limits") (Literal (Boolean True))
+                         ])
+                  ]
+              ]))
+    , Text "y"
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { math.attach(b: text(body: [x]), 
+                                                   base: math.bold(body: math.op(limits: true, 
+                                                                                 text: text(body: [bold]))), 
+                                                   t: none), 
+                                       text(body: [y]) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/root-00.out b/test/typ/math/root-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/root-00.out
@@ -0,0 +1,70 @@
+--- parse tree ---
+[ Code
+    "typ/math/root-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/root-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/root-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    False
+    [ Text "A"
+    , Text "="
+    , Code
+        "typ/math/root-00.typ"
+        ( line 3 , column 6 )
+        (FuncCall
+           (Ident (Identifier "sqrt"))
+           [ BlockArg [ Text "x" , Text "+" , Text "y" ] ])
+    , Text "="
+    , Text "c"
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: false, 
+                               body: { text(body: [A]), 
+                                       text(body: [=]), 
+                                       math.sqrt(radicand: { text(body: [x]), 
+                                                             text(body: [+]), 
+                                                             text(body: [y]) }), 
+                                       text(body: [=]), 
+                                       text(body: [c]) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/root-01.out b/test/typ/math/root-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/root-01.out
@@ -0,0 +1,149 @@
+--- parse tree ---
+[ Code
+    "typ/math/root-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/root-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/root-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Code
+        "typ/math/root-01.typ"
+        ( line 3 , column 3 )
+        (FuncCall (Ident (Identifier "sqrt")) [ BlockArg [ Text "a" ] ])
+    , Code
+        "typ/math/root-01.typ"
+        ( line 3 , column 11 )
+        (Ident (Identifier "quad"))
+    , Code
+        "typ/math/root-01.typ"
+        ( line 4 , column 3 )
+        (FuncCall (Ident (Identifier "sqrt")) [ BlockArg [ Text "f" ] ])
+    , Code
+        "typ/math/root-01.typ"
+        ( line 4 , column 11 )
+        (Ident (Identifier "quad"))
+    , Code
+        "typ/math/root-01.typ"
+        ( line 5 , column 3 )
+        (FuncCall (Ident (Identifier "sqrt")) [ BlockArg [ Text "q" ] ])
+    , Code
+        "typ/math/root-01.typ"
+        ( line 5 , column 11 )
+        (Ident (Identifier "quad"))
+    , Code
+        "typ/math/root-01.typ"
+        ( line 6 , column 3 )
+        (FuncCall
+           (Ident (Identifier "sqrt"))
+           [ BlockArg [ MAttach Nothing (Just (Text "2")) (Text "a") ] ])
+    , HardBreak
+    , Code
+        "typ/math/root-01.typ"
+        ( line 7 , column 3 )
+        (FuncCall
+           (Ident (Identifier "sqrt"))
+           [ BlockArg [ MAttach (Just (Text "0")) Nothing (Text "n") ] ])
+    , Code
+        "typ/math/root-01.typ"
+        ( line 7 , column 13 )
+        (Ident (Identifier "quad"))
+    , Code
+        "typ/math/root-01.typ"
+        ( line 8 , column 3 )
+        (FuncCall
+           (Ident (Identifier "sqrt"))
+           [ BlockArg
+               [ MAttach Nothing (Just (MGroup Nothing Nothing [])) (Text "b") ]
+           ])
+    , Code
+        "typ/math/root-01.typ"
+        ( line 8 , column 14 )
+        (Ident (Identifier "quad"))
+    , Code
+        "typ/math/root-01.typ"
+        ( line 9 , column 3 )
+        (FuncCall
+           (Ident (Identifier "sqrt"))
+           [ BlockArg [ MAttach Nothing (Just (Text "2")) (Text "b") ] ])
+    , Code
+        "typ/math/root-01.typ"
+        ( line 9 , column 13 )
+        (Ident (Identifier "quad"))
+    , Code
+        "typ/math/root-01.typ"
+        ( line 10 , column 3 )
+        (FuncCall
+           (Ident (Identifier "sqrt"))
+           [ BlockArg
+               [ MAttach (Just (Text "1")) (Just (Text "2")) (Text "q") ]
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { math.sqrt(radicand: text(body: [a])), 
+                                       text(body: [ ]), 
+                                       math.sqrt(radicand: text(body: [f])), 
+                                       text(body: [ ]), 
+                                       math.sqrt(radicand: text(body: [q])), 
+                                       text(body: [ ]), 
+                                       math.sqrt(radicand: math.attach(b: none, 
+                                                                       base: text(body: [a]), 
+                                                                       t: text(body: [2]))), 
+                                       linebreak(), 
+                                       math.sqrt(radicand: math.attach(b: text(body: [0]), 
+                                                                       base: text(body: [n]), 
+                                                                       t: none)), 
+                                       text(body: [ ]), 
+                                       math.sqrt(radicand: math.attach(b: none, 
+                                                                       base: text(body: [b]), 
+                                                                       t: {  })), 
+                                       text(body: [ ]), 
+                                       math.sqrt(radicand: math.attach(b: none, 
+                                                                       base: text(body: [b]), 
+                                                                       t: text(body: [2]))), 
+                                       text(body: [ ]), 
+                                       math.sqrt(radicand: math.attach(b: text(body: [1]), 
+                                                                       base: text(body: [q]), 
+                                                                       t: text(body: [2]))) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/root-02.out b/test/typ/math/root-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/root-02.out
@@ -0,0 +1,123 @@
+--- parse tree ---
+[ Code
+    "typ/math/root-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/root-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/root-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Equation
+    False
+    [ Code
+        "typ/math/root-02.typ"
+        ( line 4 , column 2 )
+        (FuncCall (Ident (Identifier "sqrt")) [ BlockArg [ Text "x" ] ])
+    ]
+, SoftBreak
+, Equation
+    False
+    [ Code
+        "typ/math/root-02.typ"
+        ( line 5 , column 2 )
+        (FuncCall
+           (Ident (Identifier "root"))
+           [ BlockArg [ Text "2" ] , BlockArg [ Text "x" ] ])
+    ]
+, SoftBreak
+, Equation
+    False
+    [ Code
+        "typ/math/root-02.typ"
+        ( line 6 , column 2 )
+        (FuncCall
+           (Ident (Identifier "root"))
+           [ BlockArg [ Text "3" ] , BlockArg [ Text "x" ] ])
+    ]
+, SoftBreak
+, Equation
+    False
+    [ Code
+        "typ/math/root-02.typ"
+        ( line 7 , column 2 )
+        (FuncCall
+           (Ident (Identifier "root"))
+           [ BlockArg [ Text "4" ] , BlockArg [ Text "x" ] ])
+    ]
+, SoftBreak
+, Equation
+    False
+    [ Code
+        "typ/math/root-02.typ"
+        ( line 8 , column 2 )
+        (FuncCall
+           (Ident (Identifier "root"))
+           [ BlockArg [ Text "5" ] , BlockArg [ Text "x" ] ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: false, 
+                               body: math.sqrt(radicand: text(body: [x])), 
+                               numbering: none), 
+                 text(body: [
+]), 
+                 math.equation(block: false, 
+                               body: math.root(index: text(body: [2]), 
+                                               radicand: text(body: [x])), 
+                               numbering: none), 
+                 text(body: [
+]), 
+                 math.equation(block: false, 
+                               body: math.root(index: text(body: [3]), 
+                                               radicand: text(body: [x])), 
+                               numbering: none), 
+                 text(body: [
+]), 
+                 math.equation(block: false, 
+                               body: math.root(index: text(body: [4]), 
+                                               radicand: text(body: [x])), 
+                               numbering: none), 
+                 text(body: [
+]), 
+                 math.equation(block: false, 
+                               body: math.root(index: text(body: [5]), 
+                                               radicand: text(body: [x])), 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/root-03.out b/test/typ/math/root-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/root-03.out
@@ -0,0 +1,216 @@
+--- parse tree ---
+[ Code
+    "typ/math/root-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/root-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/root-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Code
+        "typ/math/root-03.typ"
+        ( line 3 , column 3 )
+        (FuncCall
+           (Ident (Identifier "sqrt"))
+           [ BlockArg
+               [ Code
+                   "typ/math/root-03.typ"
+                   ( line 3 , column 8 )
+                   (FieldAccess
+                      (Ident (Identifier "l"))
+                      (FieldAccess
+                         (Ident (Identifier "double")) (Ident (Identifier "bracket"))))
+               , Text "x"
+               , MAttach
+                   Nothing
+                   (Just (Text "2"))
+                   (Code
+                      "typ/math/root-03.typ"
+                      ( line 3 , column 11 )
+                      (FieldAccess
+                         (Ident (Identifier "r"))
+                         (FieldAccess
+                            (Ident (Identifier "double")) (Ident (Identifier "bracket")))))
+               , Text "+"
+               , Code
+                   "typ/math/root-03.typ"
+                   ( line 3 , column 18 )
+                   (FieldAccess
+                      (Ident (Identifier "l"))
+                      (FieldAccess
+                         (Ident (Identifier "double")) (Ident (Identifier "bracket"))))
+               , Text "y"
+               , MAttach
+                   Nothing
+                   (Just (Text "2"))
+                   (Code
+                      "typ/math/root-03.typ"
+                      ( line 3 , column 21 )
+                      (FieldAccess
+                         (Ident (Identifier "r"))
+                         (FieldAccess
+                            (Ident (Identifier "double")) (Ident (Identifier "bracket")))))
+               ]
+           ])
+    , Text "<"
+    , Code
+        "typ/math/root-03.typ"
+        ( line 3 , column 29 )
+        (FieldAccess
+           (Ident (Identifier "l"))
+           (FieldAccess
+              (Ident (Identifier "double")) (Ident (Identifier "bracket"))))
+    , Text "z"
+    , Code
+        "typ/math/root-03.typ"
+        ( line 3 , column 32 )
+        (FieldAccess
+           (Ident (Identifier "r"))
+           (FieldAccess
+              (Ident (Identifier "double")) (Ident (Identifier "bracket"))))
+    ]
+, SoftBreak
+, Equation
+    True
+    [ Text "v"
+    , Text "="
+    , Code
+        "typ/math/root-03.typ"
+        ( line 4 , column 7 )
+        (FuncCall
+           (Ident (Identifier "sqrt"))
+           [ BlockArg
+               [ MFrac
+                   (MGroup (Just "(") (Just ")") [ MFrac (Text "1") (Text "2") ])
+                   (MGroup Nothing Nothing [ MFrac (Text "4") (Text "5") ])
+               ]
+           ])
+    , Text "="
+    , Code
+        "typ/math/root-03.typ"
+        ( line 5 , column 6 )
+        (FuncCall
+           (Ident (Identifier "root"))
+           [ BlockArg [ Text "3" ]
+           , BlockArg
+               [ MFrac
+                   (MGroup
+                      (Just "(")
+                      (Just ")")
+                      [ MFrac (MFrac (Text "1") (Text "2")) (Text "3") ])
+                   (MGroup
+                      Nothing Nothing [ MFrac (MFrac (Text "4") (Text "5")) (Text "6") ])
+               ]
+           ])
+    , Text "="
+    , Code
+        "typ/math/root-03.typ"
+        ( line 6 , column 6 )
+        (FuncCall
+           (Ident (Identifier "root"))
+           [ BlockArg [ Text "4" ]
+           , BlockArg
+               [ MFrac
+                   (MGroup
+                      (Just "(")
+                      (Just ")")
+                      [ MFrac
+                          (MGroup (Just "(") (Just ")") [ MFrac (Text "1") (Text "2") ])
+                          (MGroup Nothing Nothing [ MFrac (Text "3") (Text "4") ])
+                      ])
+                   (MGroup
+                      Nothing
+                      Nothing
+                      [ MFrac
+                          (MGroup (Just "(") (Just ")") [ MFrac (Text "1") (Text "2") ])
+                          (MGroup Nothing Nothing [ MFrac (Text "3") (Text "4") ])
+                      ])
+               ]
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { math.sqrt(radicand: { text(body: [⟦]), 
+                                                             text(body: [x]), 
+                                                             math.attach(b: none, 
+                                                                         base: text(body: [⟧]), 
+                                                                         t: text(body: [2])), 
+                                                             text(body: [+]), 
+                                                             text(body: [⟦]), 
+                                                             text(body: [y]), 
+                                                             math.attach(b: none, 
+                                                                         base: text(body: [⟧]), 
+                                                                         t: text(body: [2])) }), 
+                                       text(body: [<]), 
+                                       text(body: [⟦]), 
+                                       text(body: [z]), 
+                                       text(body: [⟧]) }, 
+                               numbering: none), 
+                 text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [v]), 
+                                       text(body: [=]), 
+                                       math.sqrt(radicand: math.frac(denom: math.frac(denom: text(body: [5]), 
+                                                                                      num: text(body: [4])), 
+                                                                     num: math.frac(denom: text(body: [2]), 
+                                                                                    num: text(body: [1])))), 
+                                       text(body: [=]), 
+                                       math.root(index: text(body: [3]), 
+                                                 radicand: math.frac(denom: math.frac(denom: text(body: [6]), 
+                                                                                      num: math.frac(denom: text(body: [5]), 
+                                                                                                     num: text(body: [4]))), 
+                                                                     num: math.frac(denom: text(body: [3]), 
+                                                                                    num: math.frac(denom: text(body: [2]), 
+                                                                                                   num: text(body: [1]))))), 
+                                       text(body: [=]), 
+                                       math.root(index: text(body: [4]), 
+                                                 radicand: math.frac(denom: math.frac(denom: math.frac(denom: text(body: [4]), 
+                                                                                                       num: text(body: [3])), 
+                                                                                      num: math.frac(denom: text(body: [2]), 
+                                                                                                     num: text(body: [1]))), 
+                                                                     num: math.frac(denom: math.frac(denom: text(body: [4]), 
+                                                                                                     num: text(body: [3])), 
+                                                                                    num: math.frac(denom: text(body: [2]), 
+                                                                                                   num: text(body: [1]))))) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/root-04.out b/test/typ/math/root-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/root-04.out
@@ -0,0 +1,114 @@
+--- parse tree ---
+[ Code
+    "typ/math/root-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/root-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/root-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Code
+        "typ/math/root-04.typ"
+        ( line 3 , column 3 )
+        (FuncCall
+           (Ident (Identifier "root"))
+           [ BlockArg [ Text "2" ] , BlockArg [ Text "x" ] ])
+    , Code
+        "typ/math/root-04.typ"
+        ( line 3 , column 14 )
+        (Ident (Identifier "quad"))
+    , Code
+        "typ/math/root-04.typ"
+        ( line 4 , column 3 )
+        (FuncCall
+           (Ident (Identifier "root"))
+           [ BlockArg
+               [ MFrac
+                   (Text "3") (MGroup Nothing Nothing [ MFrac (Text "2") (Text "1") ])
+               ]
+           , BlockArg [ Text "x" ]
+           ])
+    , Code
+        "typ/math/root-04.typ"
+        ( line 4 , column 20 )
+        (Ident (Identifier "quad"))
+    , Code
+        "typ/math/root-04.typ"
+        ( line 5 , column 3 )
+        (FuncCall
+           (Ident (Identifier "root"))
+           [ BlockArg [ MFrac (Text "1") (Text "11") ]
+           , BlockArg [ Text "x" ]
+           ])
+    , Code
+        "typ/math/root-04.typ"
+        ( line 5 , column 17 )
+        (Ident (Identifier "quad"))
+    , Code
+        "typ/math/root-04.typ"
+        ( line 6 , column 3 )
+        (FuncCall
+           (Ident (Identifier "root"))
+           [ BlockArg [ MFrac (MFrac (Text "1") (Text "2")) (Text "3") ]
+           , BlockArg [ Text "1" ]
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { math.root(index: text(body: [2]), 
+                                                 radicand: text(body: [x])), 
+                                       text(body: [ ]), 
+                                       math.root(index: math.frac(denom: math.frac(denom: text(body: [1]), 
+                                                                                   num: text(body: [2])), 
+                                                                  num: text(body: [3])), 
+                                                 radicand: text(body: [x])), 
+                                       text(body: [ ]), 
+                                       math.root(index: math.frac(denom: text(body: [11]), 
+                                                                  num: text(body: [1])), 
+                                                 radicand: text(body: [x])), 
+                                       text(body: [ ]), 
+                                       math.root(index: math.frac(denom: text(body: [3]), 
+                                                                  num: math.frac(denom: text(body: [2]), 
+                                                                                 num: text(body: [1]))), 
+                                                 radicand: text(body: [1])) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/root-05.out b/test/typ/math/root-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/root-05.out
@@ -0,0 +1,153 @@
+--- parse tree ---
+[ Code
+    "typ/math/root-05.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/root-05.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/root-05.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Code
+        "typ/math/root-05.typ"
+        ( line 3 , column 3 )
+        (FuncCall
+           (Ident (Identifier "root"))
+           [ NormalArg
+               (Block (Content [ MAttach Nothing (Just (Text "3")) (Text "2") ]))
+           ])
+    , Text "="
+    , Code
+        "typ/math/root-05.typ"
+        ( line 3 , column 10 )
+        (FuncCall
+           (Ident (Identifier "sqrt"))
+           [ BlockArg [ MAttach Nothing (Just (Text "3")) (Text "2") ] ])
+    ]
+, SoftBreak
+, Equation
+    True
+    [ Code
+        "typ/math/root-05.typ"
+        ( line 4 , column 3 )
+        (Ident (Identifier "root"))
+    , MGroup (Just "(") (Just ")") [ Text "x" , Text "+" , Text "y" ]
+    , Code
+        "typ/math/root-05.typ"
+        ( line 4 , column 10 )
+        (Ident (Identifier "quad"))
+    , Text "\8731"
+    , Text "x"
+    , Code
+        "typ/math/root-05.typ"
+        ( line 4 , column 18 )
+        (Ident (Identifier "quad"))
+    , Text "\8732"
+    , Text "x"
+    ]
+, SoftBreak
+, Equation
+    True
+    [ MGroup
+        (Just "(")
+        (Just ")")
+        [ Code
+            "typ/math/root-05.typ"
+            ( line 5 , column 4 )
+            (FuncCall
+               (Ident (Identifier "root"))
+               [ NormalArg (Block (Content [ Text "2" ])) ])
+        , Text "+"
+        , Text "3"
+        ]
+    , Text "="
+    , MGroup
+        (Just "(")
+        (Just ")")
+        [ Code
+            "typ/math/root-05.typ"
+            ( line 5 , column 13 )
+            (FuncCall (Ident (Identifier "sqrt")) [ BlockArg [ Text "2" ] ])
+        , Text "+"
+        , Text "3"
+        ]
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { math.root(index: math.attach(b: none, 
+                                                                    base: text(body: [2]), 
+                                                                    t: text(body: [3]))), 
+                                       text(body: [=]), 
+                                       math.sqrt(radicand: math.attach(b: none, 
+                                                                       base: text(body: [2]), 
+                                                                       t: text(body: [3]))) }, 
+                               numbering: none), 
+                 text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { math.lr(body: ({ [(], 
+                                                        text(body: [x]), 
+                                                        text(body: [+]), 
+                                                        text(body: [y]), 
+                                                        [)] })), 
+                                       text(body: [ ]), 
+                                       text(body: [∛]), 
+                                       text(body: [x]), 
+                                       text(body: [ ]), 
+                                       text(body: [∜]), 
+                                       text(body: [x]) }, 
+                               numbering: none), 
+                 text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { math.lr(body: ({ [(], 
+                                                        math.root(index: text(body: [2])), 
+                                                        text(body: [+]), 
+                                                        text(body: [3]), 
+                                                        [)] })), 
+                                       text(body: [=]), 
+                                       math.lr(body: ({ [(], 
+                                                        math.sqrt(radicand: text(body: [2])), 
+                                                        text(body: [+]), 
+                                                        text(body: [3]), 
+                                                        [)] })) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/spacing-00.out b/test/typ/math/spacing-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/spacing-00.out
@@ -0,0 +1,306 @@
+--- parse tree ---
+[ Code
+    "typ/math/spacing-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/spacing-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/spacing-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    False
+    [ Text "\228"
+    , Text ","
+    , Text "+"
+    , Text ","
+    , Text "c"
+    , Text ","
+    , MGroup (Just "(") (Just ")") [ Text "," ]
+    ]
+, Space
+, HardBreak
+, Equation
+    False
+    [ Text "="
+    , Text ")"
+    , Text ","
+    , MGroup (Just "(") (Just ")") [ Text "+" ]
+    , Text ","
+    , MGroup
+        (Just "{")
+        (Just "}")
+        [ Code
+            "typ/math/spacing-00.typ"
+            ( line 4 , column 12 )
+            (Ident (Identifier "times"))
+        ]
+    ]
+, SoftBreak
+, Equation
+    False
+    [ Text "\10215"
+    , Text "<"
+    , Text "\10214"
+    , Text ","
+    , Text "|"
+    , Code
+        "typ/math/spacing-00.typ"
+        ( line 5 , column 8 )
+        (Ident (Identifier "minus"))
+    , Text "|"
+    , Text ","
+    , MGroup (Just "[") Nothing [ Text "=" ]
+    ]
+, Space
+, HardBreak
+, Equation
+    False
+    [ Text "a"
+    , Text "="
+    , Text "b"
+    , Text ","
+    , Text "a"
+    , Text "="
+    , Text "="
+    , Text "b"
+    ]
+, Space
+, HardBreak
+, Equation
+    False
+    [ Code
+        "typ/math/spacing-00.typ"
+        ( line 7 , column 2 )
+        (Ident (Identifier "minus"))
+    , Text "a"
+    , Text ","
+    , Text "+"
+    , Text "a"
+    ]
+, Space
+, HardBreak
+, Equation
+    False
+    [ Text "a"
+    , Code
+        "typ/math/spacing-00.typ"
+        ( line 8 , column 4 )
+        (Ident (Identifier "not"))
+    , Text "b"
+    ]
+, Space
+, HardBreak
+, Equation
+    False
+    [ Text "a"
+    , Text "+"
+    , Text "b"
+    , Text ","
+    , Text "a"
+    , Code
+        "typ/math/spacing-00.typ"
+        ( line 9 , column 8 )
+        (Ident (Identifier "convolve"))
+    , Text "b"
+    ]
+, Space
+, HardBreak
+, Equation
+    False
+    [ Code
+        "typ/math/spacing-00.typ"
+        ( line 10 , column 2 )
+        (Ident (Identifier "sum"))
+    , Text "x"
+    , Text ","
+    , Code
+        "typ/math/spacing-00.typ"
+        ( line 10 , column 9 )
+        (FuncCall (Ident (Identifier "sum")) [ BlockArg [ Text "x" ] ])
+    ]
+, Space
+, HardBreak
+, Equation
+    False
+    [ Code
+        "typ/math/spacing-00.typ"
+        ( line 11 , column 2 )
+        (Ident (Identifier "sum"))
+    , Code
+        "typ/math/spacing-00.typ"
+        ( line 11 , column 6 )
+        (Ident (Identifier "product"))
+    , Text "x"
+    ]
+, Space
+, HardBreak
+, Equation
+    False
+    [ MGroup
+        Nothing
+        Nothing
+        [ Text "f" , MGroup (Just "(") (Just ")") [ Text "x" ] ]
+    , Text ","
+    , Code
+        "typ/math/spacing-00.typ"
+        ( line 12 , column 8 )
+        (FuncCall (Ident (Identifier "zeta")) [ BlockArg [ Text "x" ] ])
+    , Text ","
+    , MGroup
+        Nothing
+        Nothing
+        [ Text " frac" , MGroup (Just "(") (Just ")") [ Text "x" ] ]
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: false, 
+                               body: { text(body: [ä]), 
+                                       text(body: [,]), 
+                                       text(body: [+]), 
+                                       text(body: [,]), 
+                                       text(body: [c]), 
+                                       text(body: [,]), 
+                                       math.lr(body: ({ [(], 
+                                                        text(body: [,]), 
+                                                        [)] })) }, 
+                               numbering: none), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 math.equation(block: false, 
+                               body: { text(body: [=]), 
+                                       text(body: [)]), 
+                                       text(body: [,]), 
+                                       math.lr(body: ({ [(], 
+                                                        text(body: [+]), 
+                                                        [)] })), 
+                                       text(body: [,]), 
+                                       math.lr(body: ({ [{], 
+                                                        text(body: [×]), 
+                                                        [}] })) }, 
+                               numbering: none), 
+                 text(body: [
+]), 
+                 math.equation(block: false, 
+                               body: { text(body: [⟧]), 
+                                       text(body: [<]), 
+                                       text(body: [⟦]), 
+                                       text(body: [,]), 
+                                       text(body: [|]), 
+                                       text(body: [−]), 
+                                       text(body: [|]), 
+                                       text(body: [,]), 
+                                       text(body: [[]), 
+                                       text(body: [=]) }, 
+                               numbering: none), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 math.equation(block: false, 
+                               body: { text(body: [a]), 
+                                       text(body: [=]), 
+                                       text(body: [b]), 
+                                       text(body: [,]), 
+                                       text(body: [a]), 
+                                       text(body: [=]), 
+                                       text(body: [=]), 
+                                       text(body: [b]) }, 
+                               numbering: none), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 math.equation(block: false, 
+                               body: { text(body: [−]), 
+                                       text(body: [a]), 
+                                       text(body: [,]), 
+                                       text(body: [+]), 
+                                       text(body: [a]) }, 
+                               numbering: none), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 math.equation(block: false, 
+                               body: { text(body: [a]), 
+                                       text(body: [¬]), 
+                                       text(body: [b]) }, 
+                               numbering: none), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 math.equation(block: false, 
+                               body: { text(body: [a]), 
+                                       text(body: [+]), 
+                                       text(body: [b]), 
+                                       text(body: [,]), 
+                                       text(body: [a]), 
+                                       text(body: [∗]), 
+                                       text(body: [b]) }, 
+                               numbering: none), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 math.equation(block: false, 
+                               body: { text(body: [∑]), 
+                                       text(body: [x]), 
+                                       text(body: [,]), 
+                                       text(body: [∑]), 
+                                       text(body: [(]), 
+                                       text(body: [x]), 
+                                       text(body: [)]) }, 
+                               numbering: none), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 math.equation(block: false, 
+                               body: { text(body: [∑]), 
+                                       text(body: [∏]), 
+                                       text(body: [x]) }, 
+                               numbering: none), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 math.equation(block: false, 
+                               body: { text(body: [f]), 
+                                       math.lr(body: ({ [(], 
+                                                        text(body: [x]), 
+                                                        [)] })), 
+                                       text(body: [,]), 
+                                       text(body: [ζ]), 
+                                       text(body: [(]), 
+                                       text(body: [x]), 
+                                       text(body: [)]), 
+                                       text(body: [,]), 
+                                       text(body: [ frac]), 
+                                       math.lr(body: ({ [(], 
+                                                        text(body: [x]), 
+                                                        [)] })) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/spacing-01.out b/test/typ/math/spacing-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/spacing-01.out
@@ -0,0 +1,123 @@
+--- parse tree ---
+[ Code
+    "typ/math/spacing-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/spacing-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/spacing-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    False
+    [ Text "f"
+    , MGroup (Just "(") (Just ")") [ Text "x" ]
+    , Text ","
+    , MGroup
+        Nothing
+        Nothing
+        [ Text "f" , MGroup (Just "(") (Just ")") [ Text "x" ] ]
+    ]
+, Space
+, HardBreak
+, Equation
+    False
+    [ MGroup (Just "[") (Just "]") [ Text "a" , Text "|" , Text "b" ]
+    , Text ","
+    , MGroup
+        (Just "[")
+        (Just "]")
+        [ Text "a"
+        , MGroup Nothing Nothing [ Nbsp , Text "|" , Nbsp ]
+        , Text "b"
+        ]
+    ]
+, Space
+, HardBreak
+, Equation
+    False
+    [ Text "a"
+    , Text "is"
+    , Text "b"
+    , Text ","
+    , Text "a"
+    , Text " is "
+    , Text "b"
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: false, 
+                               body: { text(body: [f]), 
+                                       math.lr(body: ({ [(], 
+                                                        text(body: [x]), 
+                                                        [)] })), 
+                                       text(body: [,]), 
+                                       text(body: [f]), 
+                                       math.lr(body: ({ [(], 
+                                                        text(body: [x]), 
+                                                        [)] })) }, 
+                               numbering: none), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 math.equation(block: false, 
+                               body: { math.lr(body: ({ [[], 
+                                                        text(body: [a]), 
+                                                        text(body: [|]), 
+                                                        text(body: [b]), 
+                                                        []] })), 
+                                       text(body: [,]), 
+                                       math.lr(body: ({ [[], 
+                                                        text(body: [a]), 
+                                                        text(body: [ ]), 
+                                                        text(body: [|]), 
+                                                        text(body: [ ]), 
+                                                        text(body: [b]), 
+                                                        []] })) }, 
+                               numbering: none), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 math.equation(block: false, 
+                               body: { text(body: [a]), 
+                                       text(body: [is]), 
+                                       text(body: [b]), 
+                                       text(body: [,]), 
+                                       text(body: [a]), 
+                                       text(body: [ is ]), 
+                                       text(body: [b]) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/spacing-02.out b/test/typ/math/spacing-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/spacing-02.out
@@ -0,0 +1,159 @@
+--- parse tree ---
+[ Code
+    "typ/math/spacing-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/spacing-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/spacing-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    False
+    [ Text "a"
+    , Code
+        "typ/math/spacing-02.typ"
+        ( line 3 , column 4 )
+        (Ident (Identifier "thin"))
+    , Text "b"
+    , Text ","
+    , Text "a"
+    , Code
+        "typ/math/spacing-02.typ"
+        ( line 3 , column 14 )
+        (Ident (Identifier "med"))
+    , Text "b"
+    , Text ","
+    , Text "a"
+    , Code
+        "typ/math/spacing-02.typ"
+        ( line 3 , column 23 )
+        (Ident (Identifier "thick"))
+    , Text "b"
+    , Text ","
+    , Text "a"
+    , Code
+        "typ/math/spacing-02.typ"
+        ( line 3 , column 34 )
+        (Ident (Identifier "quad"))
+    , Text "b"
+    ]
+, Space
+, HardBreak
+, Equation
+    False
+    [ Text "a"
+    , Text "="
+    , Code
+        "typ/math/spacing-02.typ"
+        ( line 4 , column 6 )
+        (Ident (Identifier "thin"))
+    , Text "b"
+    ]
+, Space
+, HardBreak
+, Equation
+    False
+    [ Text "a"
+    , Code
+        "typ/math/spacing-02.typ"
+        ( line 5 , column 4 )
+        (Ident (Identifier "minus"))
+    , Text "b"
+    , Code
+        "typ/math/spacing-02.typ"
+        ( line 5 , column 8 )
+        (Ident (Identifier "equiv"))
+    , Text "c"
+    , Code
+        "typ/math/spacing-02.typ"
+        ( line 5 , column 16 )
+        (Ident (Identifier "quad"))
+    , MGroup
+        (Just "(")
+        (Just ")")
+        [ Code
+            "typ/math/spacing-02.typ"
+            ( line 5 , column 22 )
+            (Ident (Identifier "mod"))
+        , Text "2"
+        ]
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: false, 
+                               body: { text(body: [a]), 
+                                       text(body: [ ]), 
+                                       text(body: [b]), 
+                                       text(body: [,]), 
+                                       text(body: [a]), 
+                                       text(body: [ ]), 
+                                       text(body: [b]), 
+                                       text(body: [,]), 
+                                       text(body: [a]), 
+                                       text(body: [ ]), 
+                                       text(body: [b]), 
+                                       text(body: [,]), 
+                                       text(body: [a]), 
+                                       text(body: [ ]), 
+                                       text(body: [b]) }, 
+                               numbering: none), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 math.equation(block: false, 
+                               body: { text(body: [a]), 
+                                       text(body: [=]), 
+                                       text(body: [ ]), 
+                                       text(body: [b]) }, 
+                               numbering: none), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 math.equation(block: false, 
+                               body: { text(body: [a]), 
+                                       text(body: [−]), 
+                                       text(body: [b]), 
+                                       text(body: [≡]), 
+                                       text(body: [c]), 
+                                       text(body: [ ]), 
+                                       math.lr(body: ({ [(], 
+                                                        math.op(limits: false, 
+                                                                text: "mod"), 
+                                                        text(body: [2]), 
+                                                        [)] })) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/spacing-03.out b/test/typ/math/spacing-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/spacing-03.out
@@ -0,0 +1,99 @@
+--- parse tree ---
+[ Code
+    "typ/math/spacing-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/spacing-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/spacing-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/math/spacing-03.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal Auto) ])
+, SoftBreak
+, Equation
+    True
+    [ MGroup
+        (Just "{")
+        (Just "}")
+        [ Text "x"
+        , Code
+            "typ/math/spacing-03.typ"
+            ( line 4 , column 7 )
+            (Ident (Identifier "in"))
+        , Code
+            "typ/math/spacing-03.typ"
+            ( line 4 , column 10 )
+            (Ident (Identifier "RR"))
+        , MGroup Nothing Nothing [ Nbsp , Text "|" , Nbsp ]
+        , Text "x"
+        , Text " is natural "
+        , Code
+            "typ/math/spacing-03.typ"
+            ( line 4 , column 30 )
+            (Ident (Identifier "and"))
+        , Text "x"
+        , Text "<"
+        , Text "10"
+        ]
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: math.lr(body: ({ [{], 
+                                                      text(body: [x]), 
+                                                      text(body: [∈]), 
+                                                      text(body: [ℝ]), 
+                                                      text(body: [ ]), 
+                                                      text(body: [|]), 
+                                                      text(body: [ ]), 
+                                                      text(body: [x]), 
+                                                      text(body: [ is natural ]), 
+                                                      text(body: [∧]), 
+                                                      text(body: [x]), 
+                                                      text(body: [<]), 
+                                                      text(body: [10]), 
+                                                      [}] })), 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/spacing-04.out b/test/typ/math/spacing-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/spacing-04.out
@@ -0,0 +1,442 @@
+--- parse tree ---
+[ Code
+    "typ/math/spacing-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/spacing-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/spacing-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/math/spacing-04.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal Auto) ])
+, SoftBreak
+, Equation
+    False
+    [ Text "a"
+    , Code
+        "typ/math/spacing-04.typ"
+        ( line 4 , column 4 )
+        (Ident (Identifier "equiv"))
+    , Text "b"
+    , Text "+"
+    , Text "c"
+    , Code
+        "typ/math/spacing-04.typ"
+        ( line 4 , column 16 )
+        (Ident (Identifier "minus"))
+    , Text "d"
+    , Code
+        "typ/math/spacing-04.typ"
+        ( line 4 , column 20 )
+        (FieldAccess
+           (Ident (Identifier "r"))
+           (FieldAccess
+              (Ident (Identifier "double")) (Ident (Identifier "arrow"))))
+    , Text "e"
+    , Code
+        "typ/math/spacing-04.typ"
+        ( line 4 , column 25 )
+        (Ident (Identifier "log"))
+    , Text "5"
+    , Code
+        "typ/math/spacing-04.typ"
+        ( line 4 , column 31 )
+        (FuncCall (Ident (Identifier "op")) [ BlockArg [ Text "ln" ] ])
+    , Text "6"
+    ]
+, Space
+, HardBreak
+, Equation
+    False
+    [ Text "a"
+    , Code
+        "typ/math/spacing-04.typ"
+        ( line 5 , column 4 )
+        (FuncCall
+           (Ident (Identifier "cancel"))
+           [ BlockArg
+               [ Code
+                   "typ/math/spacing-04.typ"
+                   ( line 5 , column 11 )
+                   (Ident (Identifier "equiv"))
+               ]
+           ])
+    , Text "b"
+    , Code
+        "typ/math/spacing-04.typ"
+        ( line 5 , column 20 )
+        (FuncCall
+           (Ident (Identifier "overline")) [ BlockArg [ Text "+" ] ])
+    , Text "c"
+    , Code
+        "typ/math/spacing-04.typ"
+        ( line 5 , column 34 )
+        (FuncCall
+           (Ident (Identifier "arrow"))
+           [ BlockArg
+               [ Code
+                   "typ/math/spacing-04.typ"
+                   ( line 5 , column 40 )
+                   (Ident (Identifier "minus"))
+               ]
+           ])
+    , Text "d"
+    , Code
+        "typ/math/spacing-04.typ"
+        ( line 5 , column 45 )
+        (FuncCall
+           (Ident (Identifier "hat"))
+           [ BlockArg
+               [ Code
+                   "typ/math/spacing-04.typ"
+                   ( line 5 , column 49 )
+                   (FieldAccess
+                      (Ident (Identifier "r"))
+                      (FieldAccess
+                         (Ident (Identifier "double")) (Ident (Identifier "arrow"))))
+               ]
+           ])
+    , Text "e"
+    , Code
+        "typ/math/spacing-04.typ"
+        ( line 5 , column 55 )
+        (FuncCall
+           (Ident (Identifier "cancel"))
+           [ BlockArg
+               [ Code
+                   "typ/math/spacing-04.typ"
+                   ( line 5 , column 62 )
+                   (Ident (Identifier "log"))
+               ]
+           ])
+    , Text "5"
+    , Code
+        "typ/math/spacing-04.typ"
+        ( line 5 , column 69 )
+        (FuncCall
+           (Ident (Identifier "dot"))
+           [ BlockArg
+               [ Code
+                   "typ/math/spacing-04.typ"
+                   ( line 5 , column 73 )
+                   (FuncCall (Ident (Identifier "op")) [ BlockArg [ Text "ln" ] ])
+               ]
+           ])
+    , Text "6"
+    ]
+, Space
+, HardBreak
+, Equation
+    False
+    [ Text "a"
+    , Code
+        "typ/math/spacing-04.typ"
+        ( line 6 , column 4 )
+        (FuncCall
+           (Ident (Identifier "overbrace"))
+           [ BlockArg
+               [ Code
+                   "typ/math/spacing-04.typ"
+                   ( line 6 , column 14 )
+                   (Ident (Identifier "equiv"))
+               ]
+           ])
+    , Text "b"
+    , Code
+        "typ/math/spacing-04.typ"
+        ( line 6 , column 23 )
+        (FuncCall
+           (Ident (Identifier "underline")) [ BlockArg [ Text "+" ] ])
+    , Text "c"
+    , Code
+        "typ/math/spacing-04.typ"
+        ( line 6 , column 38 )
+        (FuncCall
+           (Ident (Identifier "grave"))
+           [ BlockArg
+               [ Code
+                   "typ/math/spacing-04.typ"
+                   ( line 6 , column 44 )
+                   (Ident (Identifier "minus"))
+               ]
+           ])
+    , Text "d"
+    , Code
+        "typ/math/spacing-04.typ"
+        ( line 6 , column 49 )
+        (FuncCall
+           (Ident (Identifier "underbracket"))
+           [ BlockArg
+               [ Code
+                   "typ/math/spacing-04.typ"
+                   ( line 6 , column 62 )
+                   (FieldAccess
+                      (Ident (Identifier "r"))
+                      (FieldAccess
+                         (Ident (Identifier "double")) (Ident (Identifier "arrow"))))
+               ]
+           ])
+    , Text "e"
+    , Code
+        "typ/math/spacing-04.typ"
+        ( line 6 , column 68 )
+        (FuncCall
+           (Ident (Identifier "circle"))
+           [ BlockArg
+               [ Code
+                   "typ/math/spacing-04.typ"
+                   ( line 6 , column 75 )
+                   (Ident (Identifier "log"))
+               ]
+           ])
+    , Text "5"
+    , Code
+        "typ/math/spacing-04.typ"
+        ( line 6 , column 82 )
+        (FuncCall
+           (Ident (Identifier "caron"))
+           [ BlockArg
+               [ Code
+                   "typ/math/spacing-04.typ"
+                   ( line 6 , column 88 )
+                   (FuncCall (Ident (Identifier "op")) [ BlockArg [ Text "ln" ] ])
+               ]
+           ])
+    , Text "6"
+    ]
+, Space
+, HardBreak
+, HardBreak
+, Equation
+    False
+    [ Text "a"
+    , Code
+        "typ/math/spacing-04.typ"
+        ( line 8 , column 4 )
+        (FuncCall
+           (Ident (Identifier "attach"))
+           [ BlockArg
+               [ Code
+                   "typ/math/spacing-04.typ"
+                   ( line 8 , column 11 )
+                   (Ident (Identifier "equiv"))
+               ]
+           , KeyValArg (Identifier "tl") (Block (Content [ Text "a" ]))
+           , KeyValArg (Identifier "tr") (Block (Content [ Text "b" ]))
+           ])
+    , Text "b"
+    , Code
+        "typ/math/spacing-04.typ"
+        ( line 8 , column 34 )
+        (FuncCall
+           (Ident (Identifier "attach"))
+           [ BlockArg
+               [ Code
+                   "typ/math/spacing-04.typ"
+                   ( line 8 , column 41 )
+                   (FuncCall (Ident (Identifier "limits")) [ BlockArg [ Text "+" ] ])
+               ]
+           , KeyValArg (Identifier "t") (Block (Content [ Text "a" ]))
+           , KeyValArg (Identifier "b") (Block (Content [ Text "b" ]))
+           ])
+    , Text "c"
+    , Code
+        "typ/math/spacing-04.typ"
+        ( line 8 , column 66 )
+        (FuncCall
+           (Ident (Identifier "tilde"))
+           [ BlockArg
+               [ Code
+                   "typ/math/spacing-04.typ"
+                   ( line 8 , column 72 )
+                   (Ident (Identifier "minus"))
+               ]
+           ])
+    , Text "d"
+    , Code
+        "typ/math/spacing-04.typ"
+        ( line 8 , column 77 )
+        (FuncCall
+           (Ident (Identifier "breve"))
+           [ BlockArg
+               [ Code
+                   "typ/math/spacing-04.typ"
+                   ( line 8 , column 83 )
+                   (FieldAccess
+                      (Ident (Identifier "r"))
+                      (FieldAccess
+                         (Ident (Identifier "double")) (Ident (Identifier "arrow"))))
+               ]
+           ])
+    , Text "e"
+    , Code
+        "typ/math/spacing-04.typ"
+        ( line 8 , column 89 )
+        (FuncCall
+           (Ident (Identifier "attach"))
+           [ BlockArg
+               [ Code
+                   "typ/math/spacing-04.typ"
+                   ( line 8 , column 96 )
+                   (FuncCall
+                      (Ident (Identifier "limits"))
+                      [ BlockArg
+                          [ Code
+                              "typ/math/spacing-04.typ"
+                              ( line 8 , column 103 )
+                              (Ident (Identifier "log"))
+                          ]
+                      ])
+               ]
+           , KeyValArg (Identifier "t") (Block (Content [ Text "a" ]))
+           , KeyValArg (Identifier "b") (Block (Content [ Text "b" ]))
+           ])
+    , Text "5"
+    , Code
+        "typ/math/spacing-04.typ"
+        ( line 8 , column 123 )
+        (FuncCall
+           (Ident (Identifier "attach"))
+           [ BlockArg
+               [ Code
+                   "typ/math/spacing-04.typ"
+                   ( line 8 , column 130 )
+                   (FuncCall (Ident (Identifier "op")) [ BlockArg [ Text "ln" ] ])
+               ]
+           , KeyValArg (Identifier "tr") (Block (Content [ Text "a" ]))
+           , KeyValArg (Identifier "bl") (Block (Content [ Text "b" ]))
+           ])
+    , Text "6"
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 math.equation(block: false, 
+                               body: { text(body: [a]), 
+                                       text(body: [≡]), 
+                                       text(body: [b]), 
+                                       text(body: [+]), 
+                                       text(body: [c]), 
+                                       text(body: [−]), 
+                                       text(body: [d]), 
+                                       text(body: [⇒]), 
+                                       text(body: [e]), 
+                                       math.op(limits: false, 
+                                               text: "log"), 
+                                       text(body: [5]), 
+                                       math.op(text: text(body: [ln])), 
+                                       text(body: [6]) }, 
+                               numbering: none), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 math.equation(block: false, 
+                               body: { text(body: [a]), 
+                                       math.cancel(body: text(body: [≡])), 
+                                       text(body: [b]), 
+                                       math.overline(body: text(body: [+])), 
+                                       text(body: [c]), 
+                                       math.accent(accent: →, 
+                                                   base: text(body: [−])), 
+                                       text(body: [d]), 
+                                       math.accent(accent: ^, 
+                                                   base: text(body: [⇒])), 
+                                       text(body: [e]), 
+                                       math.cancel(body: math.op(limits: false, 
+                                                                 text: "log")), 
+                                       text(body: [5]), 
+                                       math.accent(accent: ⋅, 
+                                                   base: math.op(text: text(body: [ln]))), 
+                                       text(body: [6]) }, 
+                               numbering: none), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 math.equation(block: false, 
+                               body: { text(body: [a]), 
+                                       math.overbrace(body: text(body: [≡])), 
+                                       text(body: [b]), 
+                                       math.underline(body: text(body: [+])), 
+                                       text(body: [c]), 
+                                       math.accent(accent: `, 
+                                                   base: text(body: [−])), 
+                                       text(body: [d]), 
+                                       math.underbracket(body: text(body: [⇒])), 
+                                       text(body: [e]), 
+                                       math.accent(accent: ○, 
+                                                   base: math.op(limits: false, 
+                                                                 text: "log")), 
+                                       text(body: [5]), 
+                                       math.accent(accent: ˇ, 
+                                                   base: math.op(text: text(body: [ln]))), 
+                                       text(body: [6]) }, 
+                               numbering: none), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 linebreak(), 
+                 math.equation(block: false, 
+                               body: { text(body: [a]), 
+                                       math.attach(base: text(body: [≡]), 
+                                                   tl: text(body: [a]), 
+                                                   tr: text(body: [b])), 
+                                       text(body: [b]), 
+                                       math.attach(b: text(body: [b]), 
+                                                   base: math.limits(body: text(body: [+])), 
+                                                   t: text(body: [a])), 
+                                       text(body: [c]), 
+                                       math.accent(accent: ∼, 
+                                                   base: text(body: [−])), 
+                                       text(body: [d]), 
+                                       math.accent(accent: ˘, 
+                                                   base: text(body: [⇒])), 
+                                       text(body: [e]), 
+                                       math.attach(b: text(body: [b]), 
+                                                   base: math.limits(body: math.op(limits: false, 
+                                                                                   text: "log")), 
+                                                   t: text(body: [a])), 
+                                       text(body: [5]), 
+                                       math.attach(base: math.op(text: text(body: [ln])), 
+                                                   bl: text(body: [b]), 
+                                                   tr: text(body: [a])), 
+                                       text(body: [6]) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/style-00.out b/test/typ/math/style-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/style-00.out
@@ -0,0 +1,88 @@
+--- parse tree ---
+[ Code
+    "typ/math/style-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/style-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/style-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    False
+    [ Text "a"
+    , Text ","
+    , Text "A"
+    , Text ","
+    , Code
+        "typ/math/style-00.typ"
+        ( line 3 , column 8 )
+        (Ident (Identifier "delta"))
+    , Text ","
+    , Text "\1013"
+    , Text ","
+    , Code
+        "typ/math/style-00.typ"
+        ( line 3 , column 18 )
+        (Ident (Identifier "diff"))
+    , Text ","
+    , Code
+        "typ/math/style-00.typ"
+        ( line 3 , column 24 )
+        (Ident (Identifier "Delta"))
+    , Text ","
+    , Text "\1012"
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: false, 
+                               body: { text(body: [a]), 
+                                       text(body: [,]), 
+                                       text(body: [A]), 
+                                       text(body: [,]), 
+                                       text(body: [δ]), 
+                                       text(body: [,]), 
+                                       text(body: [ϵ]), 
+                                       text(body: [,]), 
+                                       text(body: [∂]), 
+                                       text(body: [,]), 
+                                       text(body: [Δ]), 
+                                       text(body: [,]), 
+                                       text(body: [ϴ]) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/style-01.out b/test/typ/math/style-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/style-01.out
@@ -0,0 +1,219 @@
+--- parse tree ---
+[ Code
+    "typ/math/style-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/style-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/style-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    False
+    [ Text "A"
+    , Text ","
+    , Code
+        "typ/math/style-01.typ"
+        ( line 3 , column 5 )
+        (FuncCall (Ident (Identifier "italic")) [ BlockArg [ Text "A" ] ])
+    , Text ","
+    , Code
+        "typ/math/style-01.typ"
+        ( line 3 , column 16 )
+        (FuncCall (Ident (Identifier "upright")) [ BlockArg [ Text "A" ] ])
+    , Text ","
+    , Code
+        "typ/math/style-01.typ"
+        ( line 3 , column 28 )
+        (FuncCall (Ident (Identifier "bold")) [ BlockArg [ Text "A" ] ])
+    , Text ","
+    , Code
+        "typ/math/style-01.typ"
+        ( line 3 , column 37 )
+        (FuncCall
+           (Ident (Identifier "bold"))
+           [ BlockArg
+               [ Code
+                   "typ/math/style-01.typ"
+                   ( line 3 , column 42 )
+                   (FuncCall (Ident (Identifier "upright")) [ BlockArg [ Text "A" ] ])
+               ]
+           ])
+    , Text ","
+    , HardBreak
+    , Code
+        "typ/math/style-01.typ"
+        ( line 4 , column 2 )
+        (FuncCall (Ident (Identifier "serif")) [ BlockArg [ Text "A" ] ])
+    , Text ","
+    , Code
+        "typ/math/style-01.typ"
+        ( line 4 , column 12 )
+        (FuncCall (Ident (Identifier "sans")) [ BlockArg [ Text "A" ] ])
+    , Text ","
+    , Code
+        "typ/math/style-01.typ"
+        ( line 4 , column 21 )
+        (FuncCall (Ident (Identifier "cal")) [ BlockArg [ Text "A" ] ])
+    , Text ","
+    , Code
+        "typ/math/style-01.typ"
+        ( line 4 , column 29 )
+        (FuncCall (Ident (Identifier "frak")) [ BlockArg [ Text "A" ] ])
+    , Text ","
+    , Code
+        "typ/math/style-01.typ"
+        ( line 4 , column 38 )
+        (FuncCall (Ident (Identifier "mono")) [ BlockArg [ Text "A" ] ])
+    , Text ","
+    , Code
+        "typ/math/style-01.typ"
+        ( line 4 , column 47 )
+        (FuncCall (Ident (Identifier "bb")) [ BlockArg [ Text "A" ] ])
+    , Text ","
+    , HardBreak
+    , Code
+        "typ/math/style-01.typ"
+        ( line 5 , column 2 )
+        (FuncCall
+           (Ident (Identifier "italic"))
+           [ BlockArg
+               [ Code
+                   "typ/math/style-01.typ"
+                   ( line 5 , column 9 )
+                   (Ident (Identifier "diff"))
+               ]
+           ])
+    , Text ","
+    , Code
+        "typ/math/style-01.typ"
+        ( line 5 , column 16 )
+        (FuncCall
+           (Ident (Identifier "upright"))
+           [ BlockArg
+               [ Code
+                   "typ/math/style-01.typ"
+                   ( line 5 , column 24 )
+                   (Ident (Identifier "diff"))
+               ]
+           ])
+    , Text ","
+    , HardBreak
+    , Code
+        "typ/math/style-01.typ"
+        ( line 6 , column 2 )
+        (FuncCall (Ident (Identifier "bb")) [ BlockArg [ Text "hello" ] ])
+    , Text "+"
+    , Code
+        "typ/math/style-01.typ"
+        ( line 6 , column 16 )
+        (FuncCall
+           (Ident (Identifier "bold"))
+           [ BlockArg
+               [ Code
+                   "typ/math/style-01.typ"
+                   ( line 6 , column 21 )
+                   (FuncCall (Ident (Identifier "cal")) [ BlockArg [ Text "world" ] ])
+               ]
+           ])
+    , Text ","
+    , HardBreak
+    , Code
+        "typ/math/style-01.typ"
+        ( line 7 , column 2 )
+        (FuncCall
+           (FuncCall (Ident (Identifier "mono")) [ BlockArg [ Text "SQRT" ] ])
+           [ BlockArg [ Text "x" ] ])
+    , Code
+        "typ/math/style-01.typ"
+        ( line 7 , column 18 )
+        (Ident (Identifier "wreath"))
+    , Code
+        "typ/math/style-01.typ"
+        ( line 7 , column 25 )
+        (FuncCall
+           (Ident (Identifier "mono"))
+           [ BlockArg [ Text "123" , Text "+" , Text "456" ] ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: false, 
+                               body: { text(body: [A]), 
+                                       text(body: [,]), 
+                                       math.italic(body: text(body: [A])), 
+                                       text(body: [,]), 
+                                       math.upright(body: text(body: [A])), 
+                                       text(body: [,]), 
+                                       math.bold(body: text(body: [A])), 
+                                       text(body: [,]), 
+                                       math.bold(body: math.upright(body: text(body: [A]))), 
+                                       text(body: [,]), 
+                                       linebreak(), 
+                                       math.serif(body: text(body: [A])), 
+                                       text(body: [,]), 
+                                       math.sans(body: text(body: [A])), 
+                                       text(body: [,]), 
+                                       math.cal(body: text(body: [A])), 
+                                       text(body: [,]), 
+                                       math.frak(body: text(body: [A])), 
+                                       text(body: [,]), 
+                                       math.mono(body: text(body: [A])), 
+                                       text(body: [,]), 
+                                       math.bb(body: text(body: [A])), 
+                                       text(body: [,]), 
+                                       linebreak(), 
+                                       math.italic(body: text(body: [∂])), 
+                                       text(body: [,]), 
+                                       math.upright(body: text(body: [∂])), 
+                                       text(body: [,]), 
+                                       linebreak(), 
+                                       math.bb(body: text(body: [hello])), 
+                                       text(body: [+]), 
+                                       math.bold(body: math.cal(body: text(body: [world]))), 
+                                       text(body: [,]), 
+                                       linebreak(), 
+                                       math.mono(body: text(body: [SQRT])), 
+                                       text(body: [(]), 
+                                       text(body: [x]), 
+                                       text(body: [)]), 
+                                       text(body: [≀]), 
+                                       math.mono(body: { text(body: [123]), 
+                                                         text(body: [+]), 
+                                                         text(body: [456]) }) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/style-02.out b/test/typ/math/style-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/style-02.out
@@ -0,0 +1,129 @@
+--- parse tree ---
+[ Code
+    "typ/math/style-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/style-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/style-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    False
+    [ Text "h"
+    , Text ","
+    , Code
+        "typ/math/style-02.typ"
+        ( line 3 , column 5 )
+        (FuncCall (Ident (Identifier "bb")) [ BlockArg [ Text "N" ] ])
+    , Text ","
+    , Code
+        "typ/math/style-02.typ"
+        ( line 3 , column 12 )
+        (FuncCall (Ident (Identifier "cal")) [ BlockArg [ Text "R" ] ])
+    , Text ","
+    , Code
+        "typ/math/style-02.typ"
+        ( line 3 , column 20 )
+        (Ident (Identifier "Theta"))
+    , Text ","
+    , Code
+        "typ/math/style-02.typ"
+        ( line 3 , column 27 )
+        (FuncCall
+           (Ident (Identifier "italic"))
+           [ BlockArg
+               [ Code
+                   "typ/math/style-02.typ"
+                   ( line 3 , column 34 )
+                   (Ident (Identifier "Theta"))
+               ]
+           ])
+    , Text ","
+    , Code
+        "typ/math/style-02.typ"
+        ( line 3 , column 42 )
+        (FuncCall
+           (Ident (Identifier "sans"))
+           [ BlockArg
+               [ Code
+                   "typ/math/style-02.typ"
+                   ( line 3 , column 47 )
+                   (Ident (Identifier "Theta"))
+               ]
+           ])
+    , Text ","
+    , Code
+        "typ/math/style-02.typ"
+        ( line 3 , column 55 )
+        (FuncCall
+           (Ident (Identifier "sans"))
+           [ BlockArg
+               [ Code
+                   "typ/math/style-02.typ"
+                   ( line 3 , column 60 )
+                   (FuncCall
+                      (Ident (Identifier "italic"))
+                      [ BlockArg
+                          [ Code
+                              "typ/math/style-02.typ"
+                              ( line 3 , column 67 )
+                              (Ident (Identifier "Theta"))
+                          ]
+                      ])
+               ]
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: false, 
+                               body: { text(body: [h]), 
+                                       text(body: [,]), 
+                                       math.bb(body: text(body: [N])), 
+                                       text(body: [,]), 
+                                       math.cal(body: text(body: [R])), 
+                                       text(body: [,]), 
+                                       text(body: [Θ]), 
+                                       text(body: [,]), 
+                                       math.italic(body: text(body: [Θ])), 
+                                       text(body: [,]), 
+                                       math.sans(body: text(body: [Θ])), 
+                                       text(body: [,]), 
+                                       math.sans(body: math.italic(body: text(body: [Θ]))) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/style-03.out b/test/typ/math/style-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/style-03.out
@@ -0,0 +1,68 @@
+--- parse tree ---
+[ Code
+    "typ/math/style-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/style-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/style-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Text "\12424"
+    , Code
+        "typ/math/style-03.typ"
+        ( line 3 , column 5 )
+        (Ident (Identifier "and"))
+    , Text "\127987"
+    , Text "\65039"
+    , Text "\8205"
+    , Text "\127752"
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [よ]), 
+                                       text(body: [∧]), 
+                                       text(body: [🏳]), 
+                                       text(body: [️]), 
+                                       text(body: [‍]), 
+                                       text(body: [🌈]) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/style-04.out b/test/typ/math/style-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/style-04.out
@@ -0,0 +1,73 @@
+--- parse tree ---
+[ Code
+    "typ/math/style-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/style-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/style-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    False
+    [ Code
+        "typ/math/style-04.typ"
+        ( line 3 , column 2 )
+        (FuncCall
+           (Ident (Identifier "text"))
+           [ NormalArg (Ident (Identifier "red"))
+           , BlockArg [ MAttach Nothing (Just (Text "2")) (Text " time") ]
+           ])
+    , Text "+"
+    , Code
+        "typ/math/style-04.typ"
+        ( line 3 , column 25 )
+        (FuncCall
+           (Ident (Identifier "sqrt")) [ BlockArg [ Text "place" ] ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: false, 
+                               body: { text(body: math.attach(b: none, 
+                                                              base: text(body: [ time]), 
+                                                              t: text(body: [2])), 
+                                            color: rgb(100%,25%,21%,100%)), 
+                                       text(body: [+]), 
+                                       math.sqrt(radicand: text(body: [place])) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/style-05.out b/test/typ/math/style-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/style-05.out
@@ -0,0 +1,114 @@
+--- parse tree ---
+[ Code
+    "typ/math/style-05.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/style-05.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/style-05.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/math/style-05.typ"
+    ( line 3 , column 2 )
+    (Show
+       (Just
+          (FieldAccess
+             (Ident (Identifier "equation")) (Ident (Identifier "math"))))
+       (Set
+          (Ident (Identifier "text"))
+          [ KeyValArg (Identifier "font") (Literal (String "Fira Math")) ]))
+, SoftBreak
+, Equation
+    True
+    [ Text "v"
+    , Code
+        "typ/math/style-05.typ"
+        ( line 4 , column 5 )
+        (FieldAccess
+           (Ident (Identifier "eq")) (Ident (Identifier "colon")))
+    , Code
+        "typ/math/style-05.typ"
+        ( line 4 , column 8 )
+        (FuncCall
+           (Ident (Identifier "vec"))
+           [ BlockArg [ Text "1" , Text "+" , Text "2" ]
+           , BlockArg
+               [ Text "2"
+               , Code
+                   "typ/math/style-05.typ"
+                   ( line 4 , column 21 )
+                   (Ident (Identifier "minus"))
+               , Text "4"
+               ]
+           , BlockArg
+               [ Code
+                   "typ/math/style-05.typ"
+                   ( line 4 , column 26 )
+                   (FuncCall (Ident (Identifier "sqrt")) [ BlockArg [ Text "3" ] ])
+               ]
+           , BlockArg
+               [ Code
+                   "typ/math/style-05.typ"
+                   ( line 4 , column 35 )
+                   (FuncCall (Ident (Identifier "arrow")) [ BlockArg [ Text "x" ] ])
+               ]
+           ])
+    , Text "+"
+    , Text "1"
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [v]), 
+                                       text(body: [≔]), 
+                                       math.vec(children: ({ text(body: [1]), 
+                                                             text(body: [+]), 
+                                                             text(body: [2]) }, 
+                                                           { text(body: [2]), 
+                                                             text(body: [−]), 
+                                                             text(body: [4]) }, 
+                                                           math.sqrt(radicand: text(body: [3])), 
+                                                           math.accent(accent: →, 
+                                                                       base: text(body: [x])))), 
+                                       text(body: [+]), 
+                                       text(body: [1]) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/style-06.out b/test/typ/math/style-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/style-06.out
@@ -0,0 +1,98 @@
+--- parse tree ---
+[ Code
+    "typ/math/style-06.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/style-06.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/style-06.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/math/style-06.typ"
+    ( line 3 , column 2 )
+    (Show
+       (Just
+          (FieldAccess
+             (Ident (Identifier "tack")) (Ident (Identifier "sym"))))
+       (FuncExpr
+          [ NormalParam (Identifier "it") ]
+          (Block
+             (Content
+                [ Equation
+                    False
+                    [ Code
+                        "typ/math/style-06.typ"
+                        ( line 3 , column 25 )
+                        (FuncCall
+                           (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 1.0 Em)) ])
+                    , Code
+                        "typ/math/style-06.typ"
+                        ( line 3 , column 32 )
+                        (Ident (Identifier "it"))
+                    , Code
+                        "typ/math/style-06.typ"
+                        ( line 3 , column 36 )
+                        (FuncCall
+                           (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 1.0 Em)) ])
+                    ]
+                ]))))
+, SoftBreak
+, Equation
+    True
+    [ Text "a"
+    , Code
+        "typ/math/style-06.typ"
+        ( line 4 , column 5 )
+        (Ident (Identifier "tack"))
+    , Text "b"
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [a]), 
+                                       math.equation(block: false, 
+                                                     body: { h(amount: 1.0em), 
+                                                             text(body: [⊢]), 
+                                                             h(amount: 1.0em) }, 
+                                                     numbering: none), 
+                                       text(body: [b]) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/syntax-00.out b/test/typ/math/syntax-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/syntax-00.out
@@ -0,0 +1,92 @@
+--- parse tree ---
+[ Code
+    "typ/math/syntax-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/syntax-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/syntax-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ MAttach
+        (Just (MGroup Nothing Nothing [ Text "i" , Text "=" , Text "0" ]))
+        (Just (Text "\8469"))
+        (Text "\8721")
+    , Text "a"
+    , Text "\8728"
+    , Text "b"
+    , Text "="
+    , MAttach
+        (Just (MGroup Nothing Nothing [ Text "i" , Text "=" , Text "0" ]))
+        (Just
+           (Code
+              "typ/math/syntax-00.typ"
+              ( line 3 , column 36 )
+              (Ident (Identifier "NN"))))
+        (Text "\8721")
+    , Text "a"
+    , Code
+        "typ/math/syntax-00.typ"
+        ( line 3 , column 41 )
+        (Ident (Identifier "compose"))
+    , Text "b"
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { math.attach(b: { text(body: [i]), 
+                                                        text(body: [=]), 
+                                                        text(body: [0]) }, 
+                                                   base: text(body: [∑]), 
+                                                   t: text(body: [ℕ])), 
+                                       text(body: [a]), 
+                                       text(body: [∘]), 
+                                       text(body: [b]), 
+                                       text(body: [=]), 
+                                       math.attach(b: { text(body: [i]), 
+                                                        text(body: [=]), 
+                                                        text(body: [0]) }, 
+                                                   base: text(body: [∑]), 
+                                                   t: text(body: [ℕ])), 
+                                       text(body: [a]), 
+                                       text(body: [∘]), 
+                                       text(body: [b]) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/syntax-01.out b/test/typ/math/syntax-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/syntax-01.out
@@ -0,0 +1,184 @@
+--- parse tree ---
+[ Code
+    "typ/math/syntax-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/syntax-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/syntax-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Code
+        "typ/math/syntax-01.typ"
+        ( line 3 , column 3 )
+        (FuncCall
+           (Ident (Identifier "underline"))
+           [ BlockArg
+               [ Text "f"
+               , Code
+                   "typ/math/syntax-01.typ"
+                   ( line 3 , column 14 )
+                   (Ident (Identifier "prime"))
+               , Text ":"
+               , Code
+                   "typ/math/syntax-01.typ"
+                   ( line 3 , column 18 )
+                   (Ident (Identifier "NN"))
+               , Code
+                   "typ/math/syntax-01.typ"
+                   ( line 3 , column 21 )
+                   (FieldAccess (Ident (Identifier "r")) (Ident (Identifier "arrow")))
+               , Code
+                   "typ/math/syntax-01.typ"
+                   ( line 3 , column 24 )
+                   (Ident (Identifier "RR"))
+               ]
+           ])
+    , HardBreak
+    , Text "n"
+    , Code
+        "typ/math/syntax-01.typ"
+        ( line 4 , column 5 )
+        (FieldAccess
+           (Ident (Identifier "r"))
+           (FieldAccess
+              (Ident (Identifier "bar")) (Ident (Identifier "arrow"))))
+    , Code
+        "typ/math/syntax-01.typ"
+        ( line 4 , column 9 )
+        (FuncCall
+           (Ident (Identifier "cases"))
+           [ BlockArg
+               [ Code
+                   "typ/math/syntax-01.typ"
+                   ( line 5 , column 5 )
+                   (FieldAccess
+                      (Ident (Identifier "l"))
+                      (FieldAccess
+                         (Ident (Identifier "double")) (Ident (Identifier "bracket"))))
+               , Text "1"
+               , Code
+                   "typ/math/syntax-01.typ"
+                   ( line 5 , column 8 )
+                   (FieldAccess
+                      (Ident (Identifier "r"))
+                      (FieldAccess
+                         (Ident (Identifier "double")) (Ident (Identifier "bracket"))))
+               , MAlignPoint
+               , Text "if "
+               , Text "n"
+               , Code
+                   "typ/math/syntax-01.typ"
+                   ( line 5 , column 19 )
+                   (FieldAccess
+                      (Ident (Identifier "triple")) (Ident (Identifier "gt")))
+               , Text "10"
+               ]
+           , BlockArg
+               [ Text "2"
+               , Code
+                   "typ/math/syntax-01.typ"
+                   ( line 6 , column 7 )
+                   (Ident (Identifier "convolve"))
+               , Text "3"
+               , MAlignPoint
+               , Text "if "
+               , Text "n"
+               , Code
+                   "typ/math/syntax-01.typ"
+                   ( line 6 , column 19 )
+                   (FieldAccess (Ident (Identifier "not")) (Ident (Identifier "eq")))
+               , Text "5"
+               ]
+           , BlockArg
+               [ Text "1"
+               , Code
+                   "typ/math/syntax-01.typ"
+                   ( line 7 , column 7 )
+                   (Ident (Identifier "minus"))
+               , Text "0"
+               , Code
+                   "typ/math/syntax-01.typ"
+                   ( line 7 , column 11 )
+                   (Ident (Identifier "thick"))
+               , MAlignPoint
+               , Code
+                   "typ/math/syntax-01.typ"
+                   ( line 7 , column 18 )
+                   (FieldAccess (Ident (Identifier "h")) (Ident (Identifier "dots")))
+               ]
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { math.underline(body: { text(body: [f]), 
+                                                              text(body: [′]), 
+                                                              text(body: [:]), 
+                                                              text(body: [ℕ]), 
+                                                              text(body: [→]), 
+                                                              text(body: [ℝ]) }), 
+                                       linebreak(), 
+                                       text(body: [n]), 
+                                       text(body: [↦]), 
+                                       math.cases(children: ({ text(body: [⟦]), 
+                                                               text(body: [1]), 
+                                                               text(body: [⟧]), 
+                                                               math.alignpoint(), 
+                                                               text(body: [if ]), 
+                                                               text(body: [n]), 
+                                                               text(body: [⋙]), 
+                                                               text(body: [10]) }, 
+                                                             { text(body: [2]), 
+                                                               text(body: [∗]), 
+                                                               text(body: [3]), 
+                                                               math.alignpoint(), 
+                                                               text(body: [if ]), 
+                                                               text(body: [n]), 
+                                                               text(body: [≠]), 
+                                                               text(body: [5]) }, 
+                                                             { text(body: [1]), 
+                                                               text(body: [−]), 
+                                                               text(body: [0]), 
+                                                               text(body: [ ]), 
+                                                               math.alignpoint(), 
+                                                               text(body: […]) })) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/syntax-02.out b/test/typ/math/syntax-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/syntax-02.out
@@ -0,0 +1,86 @@
+--- parse tree ---
+[ Code
+    "typ/math/syntax-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/syntax-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/syntax-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Code
+        "typ/math/syntax-02.typ"
+        ( line 3 , column 3 )
+        (Ident (Identifier "dot"))
+    , HardBreak
+    , Code
+        "typ/math/syntax-02.typ"
+        ( line 3 , column 9 )
+        (Ident (Identifier "dots"))
+    , HardBreak
+    , Code
+        "typ/math/syntax-02.typ"
+        ( line 3 , column 16 )
+        (Ident (Identifier "ast"))
+    , HardBreak
+    , Code
+        "typ/math/syntax-02.typ"
+        ( line 3 , column 22 )
+        (Ident (Identifier "tilde"))
+    , HardBreak
+    , Code
+        "typ/math/syntax-02.typ"
+        ( line 3 , column 30 )
+        (Ident (Identifier "star"))
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [⋅]), 
+                                       linebreak(), 
+                                       text(body: […]), 
+                                       linebreak(), 
+                                       text(body: [∗]), 
+                                       linebreak(), 
+                                       text(body: [∼]), 
+                                       linebreak(), 
+                                       text(body: [⋆]) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/syntax-03.out b/test/typ/math/syntax-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/syntax-03.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/math/unbalanced-00.out b/test/typ/math/unbalanced-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/unbalanced-00.out
@@ -0,0 +1,128 @@
+--- parse tree ---
+[ Code
+    "typ/math/unbalanced-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/unbalanced-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/unbalanced-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Equation
+    True
+    [ MFrac
+        (Text "1")
+        (MGroup
+           (Just "(")
+           Nothing
+           [ Text "2" , MGroup (Just "(") (Just ")") [ Text "x" ] ])
+    ]
+, SoftBreak
+, Equation
+    True
+    [ MAttach
+        (Just
+           (MGroup
+              (Just "(")
+              Nothing
+              [ Text "2"
+              , Text "y"
+              , MGroup (Just "(") (Just ")") [ Text "x" ]
+              , MGroup (Just "(") (Just ")") []
+              ]))
+        Nothing
+        (Text "1")
+    ]
+, SoftBreak
+, Equation
+    True
+    [ MFrac
+        (Text "1")
+        (MGroup
+           (Just "(")
+           Nothing
+           [ Text "2"
+           , Text "y"
+           , MGroup (Just "(") (Just ")") [ Text "x" ]
+           , MGroup
+               (Just "(")
+               (Just ")")
+               [ Text "2" , MGroup (Just "(") (Just ")") [ Text "3" ] ]
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: math.frac(denom: { text(body: [(]), 
+                                                        text(body: [2]), 
+                                                        math.lr(body: ({ [(], 
+                                                                         text(body: [x]), 
+                                                                         [)] })) }, 
+                                               num: text(body: [1])), 
+                               numbering: none), 
+                 text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: math.attach(b: { text(body: [(]), 
+                                                      text(body: [2]), 
+                                                      text(body: [y]), 
+                                                      math.lr(body: ({ [(], 
+                                                                       text(body: [x]), 
+                                                                       [)] })), 
+                                                      math.lr(body: ({ [(], 
+                                                                       [)] })) }, 
+                                                 base: text(body: [1]), 
+                                                 t: none), 
+                               numbering: none), 
+                 text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: math.frac(denom: { text(body: [(]), 
+                                                        text(body: [2]), 
+                                                        text(body: [y]), 
+                                                        math.lr(body: ({ [(], 
+                                                                         text(body: [x]), 
+                                                                         [)] })), 
+                                                        math.lr(body: ({ [(], 
+                                                                         text(body: [2]), 
+                                                                         math.lr(body: ({ [(], 
+                                                                                          text(body: [3]), 
+                                                                                          [)] })), 
+                                                                         [)] })) }, 
+                                               num: text(body: [1])), 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/underover-00.out b/test/typ/math/underover-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/underover-00.out
@@ -0,0 +1,96 @@
+--- parse tree ---
+[ Code
+    "typ/math/underover-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/underover-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/underover-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Text "x"
+    , Text "="
+    , Code
+        "typ/math/underover-00.typ"
+        ( line 3 , column 7 )
+        (FuncCall
+           (Ident (Identifier "underbrace"))
+           [ BlockArg
+               [ Text "1"
+               , Text "+"
+               , Text "2"
+               , Text "+"
+               , Code
+                   "typ/math/underover-00.typ"
+                   ( line 4 , column 11 )
+                   (FieldAccess (Ident (Identifier "h")) (Ident (Identifier "dots")))
+               , Text "+"
+               , Text "5"
+               ]
+           , BlockArg
+               [ Code
+                   "typ/math/underover-00.typ"
+                   ( line 5 , column 3 )
+                   (FuncCall
+                      (Ident (Identifier "underbrace"))
+                      [ BlockArg [ Text "numbers" ]
+                      , BlockArg [ Text "x" , Text "+" , Text "y" ]
+                      ])
+               ]
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [x]), 
+                                       text(body: [=]), 
+                                       math.underbrace(annotation: math.underbrace(annotation: { text(body: [x]), 
+                                                                                                 text(body: [+]), 
+                                                                                                 text(body: [y]) }, 
+                                                                                   body: text(body: [numbers])), 
+                                                       body: { text(body: [1]), 
+                                                               text(body: [+]), 
+                                                               text(body: [2]), 
+                                                               text(body: [+]), 
+                                                               text(body: […]), 
+                                                               text(body: [+]), 
+                                                               text(body: [5]) }) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/underover-01.out b/test/typ/math/underover-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/underover-01.out
@@ -0,0 +1,101 @@
+--- parse tree ---
+[ Code
+    "typ/math/underover-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/underover-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/underover-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Text "x"
+    , Text "="
+    , Code
+        "typ/math/underover-01.typ"
+        ( line 3 , column 7 )
+        (FuncCall
+           (Ident (Identifier "overbracket"))
+           [ BlockArg
+               [ Code
+                   "typ/math/underover-01.typ"
+                   ( line 4 , column 3 )
+                   (FuncCall
+                      (Ident (Identifier "overline"))
+                      [ BlockArg
+                          [ Code
+                              "typ/math/underover-01.typ"
+                              ( line 4 , column 12 )
+                              (FuncCall
+                                 (Ident (Identifier "underline"))
+                                 [ BlockArg [ Text "x" , Text "+" , Text "y" ] ])
+                          ]
+                      ])
+               ]
+           , BlockArg
+               [ Text "1"
+               , Text "+"
+               , Text "2"
+               , Text "+"
+               , Code
+                   "typ/math/underover-01.typ"
+                   ( line 5 , column 11 )
+                   (FieldAccess (Ident (Identifier "h")) (Ident (Identifier "dots")))
+               , Text "+"
+               , Text "5"
+               ]
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [x]), 
+                                       text(body: [=]), 
+                                       math.overbracket(annotation: { text(body: [1]), 
+                                                                      text(body: [+]), 
+                                                                      text(body: [2]), 
+                                                                      text(body: [+]), 
+                                                                      text(body: […]), 
+                                                                      text(body: [+]), 
+                                                                      text(body: [5]) }, 
+                                                        body: math.overline(body: math.underline(body: { text(body: [x]), 
+                                                                                                         text(body: [+]), 
+                                                                                                         text(body: [y]) }))) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/underover-02.out b/test/typ/math/underover-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/underover-02.out
@@ -0,0 +1,105 @@
+--- parse tree ---
+[ Code
+    "typ/math/underover-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/underover-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/underover-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Code
+        "typ/math/underover-02.typ"
+        ( line 3 , column 3 )
+        (FuncCall
+           (Ident (Identifier "underbracket"))
+           [ BlockArg
+               [ MGroup
+                   (Just "[")
+                   (Just "]")
+                   [ Text "1" , Text "," , MFrac (Text "2") (Text "3") ]
+               ]
+           , BlockArg [ Text " relevant stuff" ]
+           ])
+    , Code
+        "typ/math/underover-02.typ"
+        ( line 4 , column 11 )
+        (FieldAccess
+           (Ident (Identifier "long"))
+           (FieldAccess
+              (Ident (Identifier "double"))
+              (FieldAccess
+                 (Ident (Identifier "r"))
+                 (FieldAccess
+                    (Ident (Identifier "l")) (Ident (Identifier "arrow"))))))
+    , Code
+        "typ/math/underover-02.typ"
+        ( line 5 , column 3 )
+        (FuncCall
+           (Ident (Identifier "overbracket"))
+           [ BlockArg
+               [ MGroup
+                   (Just "[")
+                   (Just "]")
+                   [ MFrac (Text "4") (Text "5") , Text "," , Text "6" ]
+               ]
+           , BlockArg [ Text " irrelevant stuff" ]
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { math.underbracket(annotation: text(body: [ relevant stuff]), 
+                                                         body: math.lr(body: ({ [[], 
+                                                                                text(body: [1]), 
+                                                                                text(body: [,]), 
+                                                                                math.frac(denom: text(body: [3]), 
+                                                                                          num: text(body: [2])), 
+                                                                                []] }))), 
+                                       text(body: [⟺]), 
+                                       math.overbracket(annotation: text(body: [ irrelevant stuff]), 
+                                                        body: math.lr(body: ({ [[], 
+                                                                               math.frac(denom: text(body: [5]), 
+                                                                                         num: text(body: [4])), 
+                                                                               text(body: [,]), 
+                                                                               text(body: [6]), 
+                                                                               []] }))) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/vec-00.out b/test/typ/math/vec-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/vec-00.out
@@ -0,0 +1,71 @@
+--- parse tree ---
+[ Code
+    "typ/math/vec-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/vec-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/vec-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Equation
+    True
+    [ Text "v"
+    , Text "="
+    , Code
+        "typ/math/vec-00.typ"
+        ( line 3 , column 7 )
+        (FuncCall
+           (Ident (Identifier "vec"))
+           [ BlockArg [ Text "1" ]
+           , BlockArg [ Text "2" , Text "+" , Text "3" ]
+           , BlockArg [ Text "4" ]
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [v]), 
+                                       text(body: [=]), 
+                                       math.vec(children: (text(body: [1]), 
+                                                           { text(body: [2]), 
+                                                             text(body: [+]), 
+                                                             text(body: [3]) }, 
+                                                           text(body: [4]))) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/vec-01.out b/test/typ/math/vec-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/vec-01.out
@@ -0,0 +1,72 @@
+--- parse tree ---
+[ Code
+    "typ/math/vec-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/math/vec-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/math/vec-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/math/vec-01.typ"
+    ( line 3 , column 2 )
+    (Set
+       (FieldAccess
+          (Ident (Identifier "vec")) (Ident (Identifier "math")))
+       [ KeyValArg (Identifier "delim") (Literal (String "[")) ])
+, SoftBreak
+, Equation
+    True
+    [ Code
+        "typ/math/vec-01.typ"
+        ( line 4 , column 3 )
+        (FuncCall
+           (Ident (Identifier "vec"))
+           [ BlockArg [ Text "1" ] , BlockArg [ Text "2" ] ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: math.vec(children: (text(body: [1]), 
+                                                         text(body: [2])), 
+                                              delim: "["), 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/math/vec-02.out b/test/typ/math/vec-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/math/vec-02.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/meta/bibliography-00.out b/test/typ/meta/bibliography-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/bibliography-00.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/meta/bibliography-01.out b/test/typ/meta/bibliography-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/bibliography-01.out
@@ -0,0 +1,105 @@
+--- parse tree ---
+[ Code
+    "typ/meta/bibliography-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/bibliography-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/bibliography-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/meta/bibliography-01.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 200.0 Pt)) ])
+, SoftBreak
+, Heading 1 [ Text "Details" ]
+, Text "See"
+, Space
+, Text "also"
+, Space
+, Code
+    "typ/meta/bibliography-01.typ"
+    ( line 4 , column 11 )
+    (FuncCall
+       (Ident (Identifier "cite"))
+       [ NormalArg (Label "distress")
+       , KeyValArg
+           (Identifier "supplement")
+           (Block (Content [ Text "p" , Text "." , Space , Text "22" ]))
+       ])
+, Text ","
+, Space
+, Ref
+    "arrgh"
+    (Block (Content [ Text "p" , Text "." , Space , Text "4" ]))
+, Text ","
+, Space
+, Text "and"
+, Space
+, Ref
+    "distress"
+    (Block (Content [ Text "p" , Text "." , Space , Text "5" ]))
+, Text "."
+, SoftBreak
+, Code
+    "typ/meta/bibliography-01.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "bibliography"))
+       [ NormalArg (Literal (String "/works.bib")) ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 heading(body: text(body: [Details]), 
+                         level: 1), 
+                 text(body: [See also ]), 
+                 cite(key: <distress>, 
+                      supplement: text(body: [p. 22])), 
+                 text(body: [, ]), 
+                 ref(supplement: text(body: [p. 4]), 
+                     target: <arrgh>), 
+                 text(body: [, and ]), 
+                 ref(supplement: text(body: [p. 5]), 
+                     target: <distress>), 
+                 text(body: [.
+]), 
+                 bibliography(path: "/works.bib"), 
+                 parbreak() })
diff --git a/test/typ/meta/bibliography-02.out b/test/typ/meta/bibliography-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/bibliography-02.out
@@ -0,0 +1,166 @@
+--- parse tree ---
+[ Code
+    "typ/meta/bibliography-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/bibliography-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/bibliography-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/meta/bibliography-02.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 200.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/meta/bibliography-02.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "bibliography"))
+       [ NormalArg (Literal (String "/works.bib"))
+       , KeyValArg
+           (Identifier "title")
+           (Block
+              (Content
+                 [ Text "Works"
+                 , Space
+                 , Text "to"
+                 , Space
+                 , Text "be"
+                 , Space
+                 , Text "cited"
+                 ]))
+       , KeyValArg
+           (Identifier "style") (Literal (String "chicago-author-date"))
+       ])
+, SoftBreak
+, Code
+    "typ/meta/bibliography-02.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "line"))
+       [ KeyValArg (Identifier "length") (Literal (Numeric 100.0 Percent))
+       ])
+, SoftBreak
+, Code
+    "typ/meta/bibliography-02.typ"
+    ( line 6 , column 2 )
+    (Block
+       (Content
+          [ Code
+              "typ/meta/bibliography-02.typ"
+              ( line 6 , column 4 )
+              (Set
+                 (Ident (Identifier "cite"))
+                 [ KeyValArg (Identifier "brackets") (Literal (Boolean False)) ])
+          , SoftBreak
+          , Text "As"
+          , Space
+          , Text "described"
+          , Space
+          , Text "by"
+          , Space
+          , Ref "netwok" (Literal Auto)
+          ]))
+, Text ","
+, SoftBreak
+, Text "the"
+, Space
+, Text "net"
+, Text "-"
+, Text "work"
+, Space
+, Text "is"
+, Space
+, Text "a"
+, Space
+, Text "creature"
+, Space
+, Text "of"
+, Space
+, Text "its"
+, Space
+, Text "own"
+, Text "."
+, SoftBreak
+, Text "This"
+, Space
+, Text "is"
+, Space
+, Text "close"
+, Space
+, Text "to"
+, Space
+, Text "piratery!"
+, Space
+, Ref "arrgh" (Literal Auto)
+, SoftBreak
+, Text "And"
+, Space
+, Text "quark!"
+, Space
+, Ref "quark" (Literal Auto)
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 bibliography(path: "/works.bib", 
+                              style: "chicago-author-date", 
+                              title: text(body: [Works to be cited])), 
+                 text(body: [
+]), 
+                 line(length: 100%), 
+                 text(body: [
+]), 
+                 text(body: [
+As described by ]), 
+                 ref(supplement: auto, 
+                     target: <netwok>), 
+                 text(body: [,
+the net-work is a creature of its own.
+This is close to piratery! ]), 
+                 ref(supplement: auto, 
+                     target: <arrgh>), 
+                 text(body: [
+And quark! ]), 
+                 ref(supplement: auto, 
+                     target: <quark>), 
+                 parbreak() })
diff --git a/test/typ/meta/bibliography-03.out b/test/typ/meta/bibliography-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/bibliography-03.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/meta/bibliography-04.out b/test/typ/meta/bibliography-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/bibliography-04.out
@@ -0,0 +1,120 @@
+--- parse tree ---
+[ Code
+    "typ/meta/bibliography-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/bibliography-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/bibliography-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/meta/bibliography-04.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 200.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/meta/bibliography-04.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "heading"))
+       [ KeyValArg (Identifier "numbering") (Literal (String "1.")) ])
+, SoftBreak
+, Code
+    "typ/meta/bibliography-04.typ"
+    ( line 4 , column 2 )
+    (Show
+       (Just (Ident (Identifier "bibliography")))
+       (Set
+          (Ident (Identifier "heading"))
+          [ KeyValArg (Identifier "numbering") (Literal (String "1.")) ]))
+, ParBreak
+, Heading 1 [ Text "Multiple" , Space , Text "Bibs" ]
+, Text "Now"
+, Space
+, Text "we"
+, Space
+, Text "have"
+, Space
+, Text "multiple"
+, Space
+, Text "bibliographies"
+, Space
+, Text "containing"
+, Space
+, Code
+    "typ/meta/bibliography-04.typ"
+    ( line 7 , column 49 )
+    (FuncCall
+       (Ident (Identifier "cite")) [ NormalArg (Label "glacier-melt") ])
+, Code
+    "typ/meta/bibliography-04.typ"
+    ( line 7 , column 70 )
+    (FuncCall
+       (Ident (Identifier "cite")) [ NormalArg (Label "keshav2007read") ])
+, SoftBreak
+, Code
+    "typ/meta/bibliography-04.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "bibliography"))
+       [ NormalArg
+           (Array
+              [ Reg (Literal (String "/works.bib"))
+              , Reg (Literal (String "/works_too.bib"))
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 heading(body: text(body: [Multiple Bibs]), 
+                         level: 1, 
+                         numbering: "1."), 
+                 text(body: [Now we have multiple bibliographies containing ]), 
+                 cite(key: <glacier-melt>), 
+                 cite(key: <keshav2007read>), 
+                 text(body: [
+]), 
+                 bibliography(path: ("/works.bib", 
+                                     "/works_too.bib")), 
+                 parbreak() })
diff --git a/test/typ/meta/bibliography-ordering-00.out b/test/typ/meta/bibliography-ordering-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/bibliography-ordering-00.out
@@ -0,0 +1,134 @@
+--- parse tree ---
+[ Code
+    "typ/meta/bibliography-ordering-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/bibliography-ordering-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/bibliography-ordering-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/meta/bibliography-ordering-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 300.0 Pt)) ])
+, ParBreak
+, Ref "mcintosh_anxiety" (Literal Auto)
+, Text ","
+, Space
+, Ref "psychology25" (Literal Auto)
+, SoftBreak
+, Ref "netwok" (Literal Auto)
+, Text ","
+, Space
+, Ref "issue201" (Literal Auto)
+, Text ","
+, Space
+, Ref "arrgh" (Literal Auto)
+, Text ","
+, Space
+, Ref "quark" (Literal Auto)
+, Text ","
+, Space
+, Ref "distress" (Literal Auto)
+, Text ","
+, SoftBreak
+, Ref "glacier-melt" (Literal Auto)
+, Text ","
+, Space
+, Ref "issue201" (Literal Auto)
+, Text ","
+, Space
+, Ref "tolkien54" (Literal Auto)
+, Text ","
+, Space
+, Ref "sharing" (Literal Auto)
+, Text ","
+, Space
+, Ref "restful" (Literal Auto)
+, ParBreak
+, Code
+    "typ/meta/bibliography-ordering-00.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "bibliography"))
+       [ NormalArg (Literal (String "/works.bib")) ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 ref(supplement: auto, 
+                     target: <mcintosh_anxiety>), 
+                 text(body: [, ]), 
+                 ref(supplement: auto, 
+                     target: <psychology25>), 
+                 text(body: [
+]), 
+                 ref(supplement: auto, 
+                     target: <netwok>), 
+                 text(body: [, ]), 
+                 ref(supplement: auto, 
+                     target: <issue201>), 
+                 text(body: [, ]), 
+                 ref(supplement: auto, 
+                     target: <arrgh>), 
+                 text(body: [, ]), 
+                 ref(supplement: auto, 
+                     target: <quark>), 
+                 text(body: [, ]), 
+                 ref(supplement: auto, 
+                     target: <distress>), 
+                 text(body: [,
+]), 
+                 ref(supplement: auto, 
+                     target: <glacier-melt>), 
+                 text(body: [, ]), 
+                 ref(supplement: auto, 
+                     target: <issue201>), 
+                 text(body: [, ]), 
+                 ref(supplement: auto, 
+                     target: <tolkien54>), 
+                 text(body: [, ]), 
+                 ref(supplement: auto, 
+                     target: <sharing>), 
+                 text(body: [, ]), 
+                 ref(supplement: auto, 
+                     target: <restful>), 
+                 parbreak(), 
+                 bibliography(path: "/works.bib"), 
+                 parbreak() })
diff --git a/test/typ/meta/cite-footnote-00.out b/test/typ/meta/cite-footnote-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/cite-footnote-00.out
@@ -0,0 +1,83 @@
+--- parse tree ---
+[ Code
+    "typ/meta/cite-footnote-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/cite-footnote-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/cite-footnote-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Text "Hello"
+, Space
+, Ref "netwok" (Literal Auto)
+, SoftBreak
+, Text "And"
+, Space
+, Text "again"
+, Text ":"
+, Space
+, Ref "netwok" (Literal Auto)
+, ParBreak
+, Code
+    "typ/meta/cite-footnote-00.typ"
+    ( line 5 , column 2 )
+    (FuncCall (Ident (Identifier "pagebreak")) [])
+, SoftBreak
+, Code
+    "typ/meta/cite-footnote-00.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "bibliography"))
+       [ NormalArg (Literal (String "/works.bib"))
+       , KeyValArg (Identifier "style") (Literal (String "chicago-notes"))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+Hello ]), 
+                 ref(supplement: auto, 
+                     target: <netwok>), 
+                 text(body: [
+And again: ]), 
+                 ref(supplement: auto, 
+                     target: <netwok>), 
+                 parbreak(), 
+                 pagebreak(), 
+                 text(body: [
+]), 
+                 bibliography(path: "/works.bib", 
+                              style: "chicago-notes"), 
+                 parbreak() })
diff --git a/test/typ/meta/counter-00.out b/test/typ/meta/counter-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/counter-00.out
@@ -0,0 +1,188 @@
+--- parse tree ---
+[ Code
+    "typ/meta/counter-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/counter-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/counter-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/meta/counter-00.typ"
+    ( line 3 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "mine")))
+       (FuncCall
+          (Ident (Identifier "counter"))
+          [ NormalArg (Literal (String "mine!")) ]))
+, ParBreak
+, Text "Final"
+, Text ":"
+, Space
+, Code
+    "typ/meta/counter-00.typ"
+    ( line 5 , column 9 )
+    (FuncCall
+       (Ident (Identifier "locate"))
+       [ NormalArg
+           (FuncExpr
+              [ NormalParam (Identifier "loc") ]
+              (FuncCall
+                 (FieldAccess
+                    (Ident (Identifier "at"))
+                    (FuncCall
+                       (FieldAccess
+                          (Ident (Identifier "final")) (Ident (Identifier "mine")))
+                       [ NormalArg (Ident (Identifier "loc")) ]))
+                 [ NormalArg (Literal (Int 0)) ]))
+       ])
+, Space
+, HardBreak
+, Code
+    "typ/meta/counter-00.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (FieldAccess
+          (Ident (Identifier "step")) (Ident (Identifier "mine")))
+       [])
+, SoftBreak
+, Text "First"
+, Text ":"
+, Space
+, Code
+    "typ/meta/counter-00.typ"
+    ( line 7 , column 9 )
+    (FuncCall
+       (FieldAccess
+          (Ident (Identifier "display")) (Ident (Identifier "mine")))
+       [])
+, Space
+, HardBreak
+, Code
+    "typ/meta/counter-00.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (FieldAccess
+          (Ident (Identifier "update")) (Ident (Identifier "mine")))
+       [ NormalArg (Literal (Int 7)) ])
+, SoftBreak
+, Code
+    "typ/meta/counter-00.typ"
+    ( line 9 , column 2 )
+    (FuncCall
+       (FieldAccess
+          (Ident (Identifier "display")) (Ident (Identifier "mine")))
+       [ NormalArg (Literal (String "1 of 1"))
+       , KeyValArg (Identifier "both") (Literal (Boolean True))
+       ])
+, Space
+, HardBreak
+, Code
+    "typ/meta/counter-00.typ"
+    ( line 10 , column 2 )
+    (FuncCall
+       (FieldAccess
+          (Ident (Identifier "step")) (Ident (Identifier "mine")))
+       [])
+, SoftBreak
+, Code
+    "typ/meta/counter-00.typ"
+    ( line 11 , column 2 )
+    (FuncCall
+       (FieldAccess
+          (Ident (Identifier "step")) (Ident (Identifier "mine")))
+       [])
+, SoftBreak
+, Text "Second"
+, Text ":"
+, Space
+, Code
+    "typ/meta/counter-00.typ"
+    ( line 12 , column 10 )
+    (FuncCall
+       (FieldAccess
+          (Ident (Identifier "display")) (Ident (Identifier "mine")))
+       [ NormalArg (Literal (String "I")) ])
+, SoftBreak
+, Code
+    "typ/meta/counter-00.typ"
+    ( line 13 , column 2 )
+    (FuncCall
+       (FieldAccess
+          (Ident (Identifier "update")) (Ident (Identifier "mine")))
+       [ NormalArg
+           (FuncExpr
+              [ NormalParam (Identifier "n") ]
+              (Times (Ident (Identifier "n")) (Literal (Int 2))))
+       ])
+, SoftBreak
+, Code
+    "typ/meta/counter-00.typ"
+    ( line 14 , column 2 )
+    (FuncCall
+       (FieldAccess
+          (Ident (Identifier "step")) (Ident (Identifier "mine")))
+       [])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [Final: ]), 
+                 locate(func: ), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 text(body: [
+First: ]), 
+                 text(body: [1]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 text(body: [
+]), 
+                 text(body: [7]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 text(body: [
+]), 
+                 text(body: [
+Second: ]), 
+                 text(body: [9]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak() })
diff --git a/test/typ/meta/counter-01.out b/test/typ/meta/counter-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/counter-01.out
@@ -0,0 +1,127 @@
+--- parse tree ---
+[ Code
+    "typ/meta/counter-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/counter-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/counter-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/meta/counter-01.typ"
+    ( line 3 , column 2 )
+    (Let (BasicBind (Just (Identifier "label"))) (Label "heya"))
+, SoftBreak
+, Code
+    "typ/meta/counter-01.typ"
+    ( line 4 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "count")))
+       (FuncCall
+          (FieldAccess
+             (Ident (Identifier "display"))
+             (FuncCall
+                (Ident (Identifier "counter"))
+                [ NormalArg (Ident (Identifier "label")) ]))
+          []))
+, SoftBreak
+, Code
+    "typ/meta/counter-01.typ"
+    ( line 5 , column 2 )
+    (LetFunc
+       (Identifier "elem")
+       [ NormalParam (Identifier "it") ]
+       (Block
+          (Content
+             [ Code
+                 "typ/meta/counter-01.typ"
+                 ( line 5 , column 19 )
+                 (FuncCall
+                    (Ident (Identifier "box")) [ NormalArg (Ident (Identifier "it")) ])
+             , Space
+             , Code
+                 "typ/meta/counter-01.typ"
+                 ( line 5 , column 28 )
+                 (Ident (Identifier "label"))
+             ])))
+, ParBreak
+, Code
+    "typ/meta/counter-01.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "elem"))
+       [ BlockArg [ Text "hey," , Space , Text "there!" ] ])
+, Space
+, Code
+    "typ/meta/counter-01.typ"
+    ( line 7 , column 21 )
+    (Ident (Identifier "count"))
+, Space
+, HardBreak
+, Code
+    "typ/meta/counter-01.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "elem"))
+       [ BlockArg [ Text "more" , Space , Text "here!" ] ])
+, Space
+, Code
+    "typ/meta/counter-01.typ"
+    ( line 8 , column 20 )
+    (Ident (Identifier "count"))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 box(body: text(body: [hey, there!])), 
+                 text(body: [ ]), 
+                 <heya>, 
+                 text(body: [ ]), 
+                 text(body: [0]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 box(body: text(body: [more here!])), 
+                 text(body: [ ]), 
+                 <heya>, 
+                 text(body: [ ]), 
+                 text(body: [0]), 
+                 parbreak() })
diff --git a/test/typ/meta/counter-02.out b/test/typ/meta/counter-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/counter-02.out
@@ -0,0 +1,189 @@
+--- parse tree ---
+[ Code
+    "typ/meta/counter-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/counter-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/counter-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/meta/counter-02.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "heading"))
+       [ KeyValArg (Identifier "numbering") (Literal (String "1.a.")) ])
+, SoftBreak
+, Code
+    "typ/meta/counter-02.typ"
+    ( line 4 , column 2 )
+    (Show
+       (Just (Ident (Identifier "heading")))
+       (Set
+          (Ident (Identifier "text"))
+          [ NormalArg (Literal (Numeric 10.0 Pt)) ]))
+, SoftBreak
+, Code
+    "typ/meta/counter-02.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (FieldAccess
+          (Ident (Identifier "step"))
+          (FuncCall
+             (Ident (Identifier "counter"))
+             [ NormalArg (Ident (Identifier "heading")) ]))
+       [])
+, ParBreak
+, Heading 1 [ Text "Alpha" ]
+, Text "In"
+, Space
+, Code
+    "typ/meta/counter-02.typ"
+    ( line 8 , column 5 )
+    (FuncCall
+       (FieldAccess
+          (Ident (Identifier "display"))
+          (FuncCall
+             (Ident (Identifier "counter"))
+             [ NormalArg (Ident (Identifier "heading")) ]))
+       [])
+, SoftBreak
+, Heading 2 [ Text "Beta" ]
+, Code
+    "typ/meta/counter-02.typ"
+    ( line 11 , column 2 )
+    (Set
+       (Ident (Identifier "heading"))
+       [ KeyValArg (Identifier "numbering") (Literal None) ])
+, SoftBreak
+, Heading 1 [ Text "Gamma" ]
+, Code
+    "typ/meta/counter-02.typ"
+    ( line 13 , column 2 )
+    (FuncCall
+       (Ident (Identifier "heading"))
+       [ KeyValArg (Identifier "numbering") (Literal (String "I."))
+       , BlockArg [ Text "Delta" ]
+       ])
+, ParBreak
+, Text "At"
+, Space
+, Text "Beta,"
+, Space
+, Text "it"
+, Space
+, Text "was"
+, Space
+, Code
+    "typ/meta/counter-02.typ"
+    ( line 15 , column 18 )
+    (FuncCall
+       (Ident (Identifier "locate"))
+       [ NormalArg
+           (FuncExpr
+              [ NormalParam (Identifier "loc") ]
+              (Block
+                 (CodeBlock
+                    [ Let
+                        (BasicBind (Just (Identifier "it")))
+                        (FuncCall
+                           (FieldAccess
+                              (Ident (Identifier "find"))
+                              (FuncCall
+                                 (Ident (Identifier "query"))
+                                 [ NormalArg (Ident (Identifier "heading"))
+                                 , NormalArg (Ident (Identifier "loc"))
+                                 ]))
+                           [ NormalArg
+                               (FuncExpr
+                                  [ NormalParam (Identifier "it") ]
+                                  (Equals
+                                     (FieldAccess
+                                        (Ident (Identifier "body")) (Ident (Identifier "it")))
+                                     (Block (Content [ Text "Beta" ]))))
+                           ])
+                    , FuncCall
+                        (Ident (Identifier "numbering"))
+                        [ NormalArg
+                            (FieldAccess
+                               (Ident (Identifier "numbering")) (Ident (Identifier "it")))
+                        , SpreadArg
+                            (FuncCall
+                               (FieldAccess
+                                  (Ident (Identifier "at"))
+                                  (FuncCall
+                                     (Ident (Identifier "counter"))
+                                     [ NormalArg (Ident (Identifier "heading")) ]))
+                               [ NormalArg
+                                   (FuncCall
+                                      (FieldAccess
+                                         (Ident (Identifier "location")) (Ident (Identifier "it")))
+                                      [])
+                               ])
+                        ]
+                    ])))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 heading(body: text(body: [Alpha]), 
+                         level: 1, 
+                         numbering: "1.a."), 
+                 text(body: [In ]), 
+                 text(body: [1]), 
+                 text(body: [
+]), 
+                 heading(body: text(body: [Beta]), 
+                         level: 2, 
+                         numbering: "1.a."), 
+                 text(body: [
+]), 
+                 heading(body: text(body: [Gamma]), 
+                         level: 1, 
+                         numbering: none), 
+                 heading(body: text(body: [Delta]), 
+                         numbering: "I."), 
+                 parbreak(), 
+                 text(body: [At Beta, it was ]), 
+                 locate(func: ), 
+                 parbreak() })
diff --git a/test/typ/meta/counter-03.out b/test/typ/meta/counter-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/counter-03.out
@@ -0,0 +1,179 @@
+--- parse tree ---
+[ Code
+    "typ/meta/counter-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/counter-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/counter-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/meta/counter-03.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "figure"))
+       [ KeyValArg (Identifier "numbering") (Literal (String "A"))
+       , KeyValArg
+           (Identifier "caption")
+           (Block
+              (Content
+                 [ Text "Four"
+                 , Space
+                 , Quote '\''
+                 , Text "A"
+                 , Quote '\''
+                 , Text "s"
+                 ]))
+       , KeyValArg (Identifier "kind") (Ident (Identifier "image"))
+       , KeyValArg (Identifier "supplement") (Literal (String "Figure"))
+       , BlockArg [ Emph [ Text "AAAA!" ] ]
+       ])
+, SoftBreak
+, Code
+    "typ/meta/counter-03.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "figure"))
+       [ KeyValArg (Identifier "numbering") (Literal None)
+       , KeyValArg
+           (Identifier "caption")
+           (Block
+              (Content
+                 [ Text "Four"
+                 , Space
+                 , Quote '\''
+                 , Text "B"
+                 , Quote '\''
+                 , Text "s"
+                 ]))
+       , KeyValArg (Identifier "kind") (Ident (Identifier "image"))
+       , KeyValArg (Identifier "supplement") (Literal (String "Figure"))
+       , BlockArg [ Emph [ Text "BBBB!" ] ]
+       ])
+, SoftBreak
+, Code
+    "typ/meta/counter-03.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "figure"))
+       [ KeyValArg
+           (Identifier "caption")
+           (Block
+              (Content
+                 [ Text "Four"
+                 , Space
+                 , Quote '\''
+                 , Text "C"
+                 , Quote '\''
+                 , Text "s"
+                 ]))
+       , KeyValArg (Identifier "kind") (Ident (Identifier "image"))
+       , KeyValArg (Identifier "supplement") (Literal (String "Figure"))
+       , BlockArg [ Emph [ Text "CCCC!" ] ]
+       ])
+, SoftBreak
+, Code
+    "typ/meta/counter-03.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (FieldAccess
+          (Ident (Identifier "update"))
+          (FuncCall
+             (Ident (Identifier "counter"))
+             [ NormalArg
+                 (FuncCall
+                    (FieldAccess
+                       (Ident (Identifier "where")) (Ident (Identifier "figure")))
+                    [ KeyValArg (Identifier "kind") (Ident (Identifier "image")) ])
+             ]))
+       [ NormalArg
+           (FuncExpr
+              [ NormalParam (Identifier "n") ]
+              (Plus (Ident (Identifier "n")) (Literal (Int 3))))
+       ])
+, SoftBreak
+, Code
+    "typ/meta/counter-03.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "figure"))
+       [ KeyValArg
+           (Identifier "caption")
+           (Block
+              (Content
+                 [ Text "Four"
+                 , Space
+                 , Quote '\''
+                 , Text "D"
+                 , Quote '\''
+                 , Text "s"
+                 ]))
+       , KeyValArg (Identifier "kind") (Ident (Identifier "image"))
+       , KeyValArg (Identifier "supplement") (Literal (String "Figure"))
+       , BlockArg [ Emph [ Text "DDDD!" ] ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 figure(body: emph(body: text(body: [AAAA!])), 
+                        caption: text(body: [Four ‘A’s]), 
+                        kind: , 
+                        numbering: "A", 
+                        supplement: "Figure"), 
+                 text(body: [
+]), 
+                 figure(body: emph(body: text(body: [BBBB!])), 
+                        caption: text(body: [Four ‘B’s]), 
+                        kind: , 
+                        numbering: none, 
+                        supplement: "Figure"), 
+                 text(body: [
+]), 
+                 figure(body: emph(body: text(body: [CCCC!])), 
+                        caption: text(body: [Four ‘C’s]), 
+                        kind: , 
+                        supplement: "Figure"), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 figure(body: emph(body: text(body: [DDDD!])), 
+                        caption: text(body: [Four ‘D’s]), 
+                        kind: , 
+                        supplement: "Figure"), 
+                 parbreak() })
diff --git a/test/typ/meta/counter-page-00.out b/test/typ/meta/counter-page-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/counter-page-00.out
@@ -0,0 +1,130 @@
+--- parse tree ---
+[ Code
+    "typ/meta/counter-page-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/counter-page-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/counter-page-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, SoftBreak
+, Code
+    "typ/meta/counter-page-00.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 50.0 Pt))
+       , KeyValArg
+           (Identifier "margin")
+           (Dict
+              [ Reg ( Ident (Identifier "bottom") , Literal (Numeric 20.0 Pt) )
+              , Reg ( Ident (Identifier "rest") , Literal (Numeric 10.0 Pt) )
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/meta/counter-page-00.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 12)) ])
+, SoftBreak
+, Code
+    "typ/meta/counter-page-00.typ"
+    ( line 6 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "numbering") (Literal (String "(i)")) ])
+, SoftBreak
+, Code
+    "typ/meta/counter-page-00.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 6)) ])
+, SoftBreak
+, Code
+    "typ/meta/counter-page-00.typ"
+    ( line 8 , column 2 )
+    (FuncCall (Ident (Identifier "pagebreak")) [])
+, SoftBreak
+, Code
+    "typ/meta/counter-page-00.typ"
+    ( line 9 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "numbering") (Literal (String "1 / 1")) ])
+, SoftBreak
+, Code
+    "typ/meta/counter-page-00.typ"
+    ( line 10 , column 2 )
+    (FuncCall
+       (FieldAccess
+          (Ident (Identifier "update"))
+          (FuncCall
+             (Ident (Identifier "counter"))
+             [ NormalArg (Ident (Identifier "page")) ]))
+       [ NormalArg (Literal (Int 1)) ])
+, SoftBreak
+, Code
+    "typ/meta/counter-page-00.typ"
+    ( line 11 , column 2 )
+    (FuncCall
+       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 20)) ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [Lorem ipsum dolor sit amet, consectetur]), 
+                 text(body: [
+]), 
+                 pagebreak(), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut]), 
+                 parbreak() })
diff --git a/test/typ/meta/document-00.out b/test/typ/meta/document-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/document-00.out
@@ -0,0 +1,62 @@
+--- parse tree ---
+[ Code
+    "typ/meta/document-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/document-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/document-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/meta/document-00.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "document"))
+       [ KeyValArg (Identifier "title") (Literal (String "Hello")) ])
+, SoftBreak
+, Text "What"
+, Quote '\''
+, Text "s"
+, Space
+, Text "up?"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+What’s up?]), 
+                 parbreak() })
diff --git a/test/typ/meta/document-01.out b/test/typ/meta/document-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/document-01.out
@@ -0,0 +1,58 @@
+--- parse tree ---
+[ Code
+    "typ/meta/document-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/document-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/document-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/meta/document-01.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "document"))
+       [ KeyValArg
+           (Identifier "author")
+           (Array [ Reg (Literal (String "A")) , Reg (Literal (String "B")) ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak() })
diff --git a/test/typ/meta/document-02.out b/test/typ/meta/document-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/document-02.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/meta/document-03.out b/test/typ/meta/document-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/document-03.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/meta/document-04.out b/test/typ/meta/document-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/document-04.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/meta/document-05.out b/test/typ/meta/document-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/document-05.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/meta/document-06.out b/test/typ/meta/document-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/document-06.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/meta/document-07.out b/test/typ/meta/document-07.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/document-07.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/meta/figure-00.out b/test/typ/meta/figure-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/figure-00.out
@@ -0,0 +1,223 @@
+--- parse tree ---
+[ Code
+    "typ/meta/figure-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/figure-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/figure-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/meta/figure-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 150.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/meta/figure-00.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "figure"))
+       [ KeyValArg (Identifier "numbering") (Literal (String "I")) ])
+, ParBreak
+, Text "We"
+, Space
+, Text "can"
+, Space
+, Text "clearly"
+, Space
+, Text "see"
+, Space
+, Text "that"
+, Space
+, Ref "fig-cylinder" (Literal Auto)
+, Space
+, Text "and"
+, SoftBreak
+, Ref "tab-complex" (Literal Auto)
+, Space
+, Text "are"
+, Space
+, Text "relevant"
+, Space
+, Text "in"
+, Space
+, Text "this"
+, Space
+, Text "context"
+, Text "."
+, ParBreak
+, Code
+    "typ/meta/figure-00.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "figure"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "table"))
+              [ KeyValArg (Identifier "columns") (Literal (Int 2))
+              , BlockArg [ Text "a" ]
+              , BlockArg [ Text "b" ]
+              ])
+       , KeyValArg
+           (Identifier "caption")
+           (Block
+              (Content
+                 [ Text "The"
+                 , Space
+                 , Text "basic"
+                 , Space
+                 , Text "table"
+                 , Text "."
+                 ]))
+       ])
+, Space
+, Code
+    "typ/meta/figure-00.typ" ( line 11 , column 3 ) (Label "tab-basic")
+, ParBreak
+, Code
+    "typ/meta/figure-00.typ"
+    ( line 13 , column 2 )
+    (FuncCall
+       (Ident (Identifier "figure"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "pad"))
+              [ KeyValArg (Identifier "y") (Negated (Literal (Numeric 6.0 Pt)))
+              , NormalArg
+                  (FuncCall
+                     (Ident (Identifier "image"))
+                     [ NormalArg (Literal (String "/assets/files/cylinder.svg"))
+                     , KeyValArg (Identifier "height") (Literal (Numeric 2.0 Cm))
+                     ])
+              ])
+       , KeyValArg
+           (Identifier "caption")
+           (Block
+              (Content
+                 [ Text "The"
+                 , Space
+                 , Text "basic"
+                 , Space
+                 , Text "shapes"
+                 , Text "."
+                 ]))
+       , KeyValArg (Identifier "numbering") (Literal (String "I"))
+       ])
+, Space
+, Code
+    "typ/meta/figure-00.typ"
+    ( line 17 , column 3 )
+    (Label "fig-cylinder")
+, ParBreak
+, Code
+    "typ/meta/figure-00.typ"
+    ( line 19 , column 2 )
+    (FuncCall
+       (Ident (Identifier "figure"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "table"))
+              [ KeyValArg (Identifier "columns") (Literal (Int 3))
+              , BlockArg [ Text "a" ]
+              , BlockArg [ Text "b" ]
+              , BlockArg [ Text "c" ]
+              , BlockArg [ Text "d" ]
+              , BlockArg [ Text "e" ]
+              , BlockArg [ Text "f" ]
+              ])
+       , KeyValArg
+           (Identifier "caption")
+           (Block
+              (Content
+                 [ Text "The"
+                 , Space
+                 , Text "complex"
+                 , Space
+                 , Text "table"
+                 , Text "."
+                 ]))
+       ])
+, Space
+, Code
+    "typ/meta/figure-00.typ"
+    ( line 22 , column 3 )
+    (Label "tab-complex")
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [We can clearly see that ]), 
+                 ref(supplement: auto, 
+                     target: <fig-cylinder>), 
+                 text(body: [ and
+]), 
+                 ref(supplement: auto, 
+                     target: <tab-complex>), 
+                 text(body: [ are relevant in this context.]), 
+                 parbreak(), 
+                 figure(body: table(children: (text(body: [a]), 
+                                               text(body: [b])), 
+                                    columns: 2), 
+                        caption: text(body: [The basic table.]), 
+                        numbering: "I"), 
+                 text(body: [ ]), 
+                 <tab-basic>, 
+                 parbreak(), 
+                 figure(body: pad(body: image(height: 2.0cm, 
+                                              path: "/assets/files/cylinder.svg"), 
+                                  y: -6.0pt), 
+                        caption: text(body: [The basic shapes.]), 
+                        numbering: "I"), 
+                 text(body: [ ]), 
+                 <fig-cylinder>, 
+                 parbreak(), 
+                 figure(body: table(children: (text(body: [a]), 
+                                               text(body: [b]), 
+                                               text(body: [c]), 
+                                               text(body: [d]), 
+                                               text(body: [e]), 
+                                               text(body: [f])), 
+                                    columns: 3), 
+                        caption: text(body: [The complex table.]), 
+                        numbering: "I"), 
+                 text(body: [ ]), 
+                 <tab-complex>, 
+                 parbreak() })
diff --git a/test/typ/meta/figure-01.out b/test/typ/meta/figure-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/figure-01.out
@@ -0,0 +1,78 @@
+--- parse tree ---
+[ Code
+    "typ/meta/figure-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/figure-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/figure-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, ParBreak
+, Comment
+, Code
+    "typ/meta/figure-01.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "figure"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "table"))
+              [ KeyValArg (Identifier "columns") (Literal (Int 2))
+              , NormalArg
+                  (Block (Content [ Text "Second" , Space , Text "cylinder" ]))
+              , NormalArg
+                  (FuncCall
+                     (Ident (Identifier "image"))
+                     [ NormalArg (Literal (String "/assets/files/cylinder.svg")) ])
+              ])
+       , KeyValArg
+           (Identifier "caption")
+           (Literal (String "A table containing images."))
+       ])
+, Space
+, Code
+    "typ/meta/figure-01.typ"
+    ( line 11 , column 3 )
+    (Label "fig-image-in-table")
+, ParBreak
+]
+--- evaluated ---
+document(body: { parbreak(), 
+                 figure(body: table(children: (text(body: [Second cylinder]), 
+                                               image(path: "/assets/files/cylinder.svg")), 
+                                    columns: 2), 
+                        caption: "A table containing images."), 
+                 text(body: [ ]), 
+                 <fig-image-in-table>, 
+                 parbreak() })
diff --git a/test/typ/meta/figure-02.out b/test/typ/meta/figure-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/figure-02.out
@@ -0,0 +1,291 @@
+--- parse tree ---
+[ Code
+    "typ/meta/figure-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/figure-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/figure-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, ParBreak
+, Comment
+, Code
+    "typ/meta/figure-02.typ"
+    ( line 4 , column 2 )
+    (Show
+       (Just
+          (FuncCall
+             (FieldAccess
+                (Ident (Identifier "where")) (Ident (Identifier "figure")))
+             [ KeyValArg (Identifier "kind") (Literal (String "theorem")) ]))
+       (FuncExpr
+          [ NormalParam (Identifier "it") ]
+          (Block
+             (CodeBlock
+                [ Let (BasicBind (Just (Identifier "name"))) (Literal None)
+                , If
+                    [ ( Not
+                          (Equals
+                             (FieldAccess
+                                (Ident (Identifier "caption")) (Ident (Identifier "it")))
+                             (Literal None))
+                      , Block
+                          (CodeBlock
+                             [ Assign
+                                 (Ident (Identifier "name"))
+                                 (Block
+                                    (Content
+                                       [ Space
+                                       , Code
+                                           "typ/meta/figure-02.typ"
+                                           ( line 7 , column 15 )
+                                           (FuncCall
+                                              (Ident (Identifier "emph"))
+                                              [ NormalArg
+                                                  (FieldAccess
+                                                     (Ident (Identifier "caption"))
+                                                     (Ident (Identifier "it")))
+                                              ])
+                                       ]))
+                             ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (CodeBlock
+                             [ Assign (Ident (Identifier "name")) (Block (Content [])) ])
+                      )
+                    ]
+                , Let (BasicBind (Just (Identifier "title"))) (Literal None)
+                , If
+                    [ ( Not
+                          (Equals
+                             (FieldAccess
+                                (Ident (Identifier "numbering")) (Ident (Identifier "it")))
+                             (Literal None))
+                      , Block
+                          (CodeBlock
+                             [ Assign
+                                 (Ident (Identifier "title"))
+                                 (FieldAccess
+                                    (Ident (Identifier "supplement")) (Ident (Identifier "it")))
+                             , If
+                                 [ ( Not
+                                       (Equals
+                                          (FieldAccess
+                                             (Ident (Identifier "numbering"))
+                                             (Ident (Identifier "it")))
+                                          (Literal None))
+                                   , Block
+                                       (CodeBlock
+                                          [ Assign
+                                              (Ident (Identifier "title"))
+                                              (Plus
+                                                 (Ident (Identifier "title"))
+                                                 (Plus
+                                                    (Literal (String " "))
+                                                    (FuncCall
+                                                       (FieldAccess
+                                                          (Ident (Identifier "display"))
+                                                          (FieldAccess
+                                                             (Ident (Identifier "counter"))
+                                                             (Ident (Identifier "it"))))
+                                                       [ NormalArg
+                                                           (FieldAccess
+                                                              (Ident (Identifier "numbering"))
+                                                              (Ident (Identifier "it")))
+                                                       ])))
+                                          ])
+                                   )
+                                 ]
+                             ])
+                      )
+                    ]
+                , Assign
+                    (Ident (Identifier "title"))
+                    (FuncCall
+                       (Ident (Identifier "strong"))
+                       [ NormalArg (Ident (Identifier "title")) ])
+                , FuncCall
+                    (Ident (Identifier "pad"))
+                    [ KeyValArg (Identifier "top") (Literal (Numeric 0.0 Em))
+                    , KeyValArg (Identifier "bottom") (Literal (Numeric 0.0 Em))
+                    , NormalArg
+                        (FuncCall
+                           (Ident (Identifier "block"))
+                           [ KeyValArg
+                               (Identifier "fill")
+                               (FuncCall
+                                  (FieldAccess
+                                     (Ident (Identifier "lighten")) (Ident (Identifier "green")))
+                                  [ NormalArg (Literal (Numeric 90.0 Percent)) ])
+                           , KeyValArg
+                               (Identifier "stroke")
+                               (Plus (Literal (Numeric 1.0 Pt)) (Ident (Identifier "green")))
+                           , KeyValArg (Identifier "inset") (Literal (Numeric 10.0 Pt))
+                           , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
+                           , KeyValArg (Identifier "radius") (Literal (Numeric 5.0 Pt))
+                           , KeyValArg (Identifier "breakable") (Literal (Boolean False))
+                           , NormalArg
+                               (Block
+                                  (Content
+                                     [ Code
+                                         "typ/meta/figure-02.typ"
+                                         ( line 29 , column 9 )
+                                         (Ident (Identifier "title"))
+                                     , Code
+                                         "typ/meta/figure-02.typ"
+                                         ( line 29 , column 15 )
+                                         (Ident (Identifier "name"))
+                                     , Code
+                                         "typ/meta/figure-02.typ"
+                                         ( line 29 , column 20 )
+                                         (FuncCall
+                                            (Ident (Identifier "h"))
+                                            [ NormalArg (Literal (Numeric 0.1 Em)) ])
+                                     , Text ":"
+                                     , Code
+                                         "typ/meta/figure-02.typ"
+                                         ( line 29 , column 30 )
+                                         (FuncCall
+                                            (Ident (Identifier "h"))
+                                            [ NormalArg (Literal (Numeric 0.2 Em)) ])
+                                     , Code
+                                         "typ/meta/figure-02.typ"
+                                         ( line 29 , column 39 )
+                                         (FieldAccess
+                                            (Ident (Identifier "body")) (Ident (Identifier "it")))
+                                     , Code
+                                         "typ/meta/figure-02.typ"
+                                         ( line 29 , column 47 )
+                                         (FuncCall
+                                            (Ident (Identifier "v"))
+                                            [ NormalArg (Literal (Numeric 0.5 Em)) ])
+                                     ]))
+                           ])
+                    ]
+                ]))))
+, ParBreak
+, Code
+    "typ/meta/figure-02.typ"
+    ( line 34 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 150.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/meta/figure-02.typ"
+    ( line 35 , column 2 )
+    (FuncCall
+       (Ident (Identifier "figure"))
+       [ NormalArg
+           (Block
+              (Content
+                 [ Equation
+                     False
+                     [ MAttach Nothing (Just (Text "2")) (Text "a")
+                     , Text "+"
+                     , MAttach Nothing (Just (Text "2")) (Text "b")
+                     , Text "="
+                     , MAttach Nothing (Just (Text "2")) (Text "c")
+                     ]
+                 ]))
+       , KeyValArg (Identifier "supplement") (Literal (String "Theorem"))
+       , KeyValArg (Identifier "kind") (Literal (String "theorem"))
+       , KeyValArg
+           (Identifier "caption") (Literal (String "Pythagoras' theorem."))
+       , KeyValArg (Identifier "numbering") (Literal (String "1"))
+       ])
+, Space
+, Code
+    "typ/meta/figure-02.typ"
+    ( line 41 , column 3 )
+    (Label "fig-formula")
+, ParBreak
+, Code
+    "typ/meta/figure-02.typ"
+    ( line 43 , column 2 )
+    (FuncCall
+       (Ident (Identifier "figure"))
+       [ NormalArg
+           (Block
+              (Content
+                 [ Equation
+                     False
+                     [ MAttach Nothing (Just (Text "2")) (Text "a")
+                     , Text "+"
+                     , MAttach Nothing (Just (Text "2")) (Text "b")
+                     , Text "="
+                     , MAttach Nothing (Just (Text "2")) (Text "c")
+                     ]
+                 ]))
+       , KeyValArg (Identifier "supplement") (Literal (String "Theorem"))
+       , KeyValArg (Identifier "kind") (Literal (String "theorem"))
+       , KeyValArg
+           (Identifier "caption")
+           (Literal (String "Another Pythagoras' theorem."))
+       , KeyValArg (Identifier "numbering") (Literal None)
+       ])
+, Space
+, Code
+    "typ/meta/figure-02.typ"
+    ( line 49 , column 3 )
+    (Label "fig-formula")
+, ParBreak
+, Code
+    "typ/meta/figure-02.typ"
+    ( line 51 , column 2 )
+    (FuncCall
+       (Ident (Identifier "figure"))
+       [ NormalArg
+           (Block
+              (Content
+                 [ RawBlock "rust" "fn main() {\n    println!(\"Hello!\");\n  }\n  "
+                 ]))
+       , KeyValArg
+           (Identifier "caption")
+           (Block
+              (Content
+                 [ Text "Hello"
+                 , Space
+                 , Text "world"
+                 , Space
+                 , Text "in"
+                 , Space
+                 , Emph [ Text "rust" ]
+                 ]))
+       ])
+, ParBreak
+]
+"typ/meta/figure-02.typ" (line 35, column 2):
+Content does not have a method "counter" or FieldAccess requires a dictionary
diff --git a/test/typ/meta/figure-03.out b/test/typ/meta/figure-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/figure-03.out
@@ -0,0 +1,91 @@
+--- parse tree ---
+[ Code
+    "typ/meta/figure-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/figure-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/figure-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/meta/figure-03.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 6.0 Em)) ])
+, SoftBreak
+, Code
+    "typ/meta/figure-03.typ"
+    ( line 4 , column 2 )
+    (Show
+       (Just (Ident (Identifier "figure")))
+       (Set
+          (Ident (Identifier "block"))
+          [ KeyValArg (Identifier "breakable") (Literal (Boolean True)) ]))
+, ParBreak
+, Code
+    "typ/meta/figure-03.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "figure"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "table"))
+              [ BlockArg [ Text "a" ]
+              , BlockArg [ Text "b" ]
+              , BlockArg [ Text "c" ]
+              , BlockArg [ Text "d" ]
+              , BlockArg [ Text "e" ]
+              ])
+       , KeyValArg
+           (Identifier "caption")
+           (Block (Content [ Text "A" , Space , Text "table" ]))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 figure(body: table(children: (text(body: [a]), 
+                                               text(body: [b]), 
+                                               text(body: [c]), 
+                                               text(body: [d]), 
+                                               text(body: [e]))), 
+                        caption: text(body: [A table])), 
+                 parbreak() })
diff --git a/test/typ/meta/footnote-00.out b/test/typ/meta/footnote-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/footnote-00.out
@@ -0,0 +1,53 @@
+--- parse tree ---
+[ Code
+    "typ/meta/footnote-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/footnote-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/footnote-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/meta/footnote-00.typ"
+    ( line 2 , column 2 )
+    (FuncCall
+       (Ident (Identifier "footnote")) [ BlockArg [ Text "Hi" ] ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 footnote(body: text(body: [Hi])), 
+                 parbreak() })
diff --git a/test/typ/meta/footnote-01.out b/test/typ/meta/footnote-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/footnote-01.out
@@ -0,0 +1,69 @@
+--- parse tree ---
+[ Code
+    "typ/meta/footnote-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/footnote-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/footnote-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "A"
+, Code
+    "typ/meta/footnote-01.typ"
+    ( line 3 , column 3 )
+    (FuncCall
+       (Ident (Identifier "footnote")) [ BlockArg [ Text "A" ] ])
+, Space
+, HardBreak
+, Text "A"
+, Space
+, Code
+    "typ/meta/footnote-01.typ"
+    ( line 4 , column 4 )
+    (FuncCall
+       (Ident (Identifier "footnote")) [ BlockArg [ Text "A" ] ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [A]), 
+                 footnote(body: text(body: [A])), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 text(body: [A ]), 
+                 footnote(body: text(body: [A])), 
+                 parbreak() })
diff --git a/test/typ/meta/footnote-02.out b/test/typ/meta/footnote-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/footnote-02.out
@@ -0,0 +1,114 @@
+--- parse tree ---
+[ Code
+    "typ/meta/footnote-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/footnote-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/footnote-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "First"
+, Space
+, HardBreak
+, Text "Second"
+, Space
+, Code
+    "typ/meta/footnote-02.typ"
+    ( line 4 , column 9 )
+    (FuncCall
+       (Ident (Identifier "footnote"))
+       [ BlockArg
+           [ Text "A,"
+           , Space
+           , Code
+               "typ/meta/footnote-02.typ"
+               ( line 4 , column 22 )
+               (FuncCall
+                  (Ident (Identifier "footnote"))
+                  [ BlockArg
+                      [ Text "B,"
+                      , Space
+                      , Code
+                          "typ/meta/footnote-02.typ"
+                          ( line 4 , column 35 )
+                          (FuncCall
+                             (Ident (Identifier "footnote")) [ BlockArg [ Text "C" ] ])
+                      ]
+                  ])
+           ]
+       ])
+, Space
+, HardBreak
+, Text "Third"
+, Space
+, Code
+    "typ/meta/footnote-02.typ"
+    ( line 5 , column 8 )
+    (FuncCall
+       (Ident (Identifier "footnote"))
+       [ BlockArg
+           [ Text "D,"
+           , Space
+           , Code
+               "typ/meta/footnote-02.typ"
+               ( line 5 , column 21 )
+               (FuncCall
+                  (Ident (Identifier "footnote")) [ BlockArg [ Text "E" ] ])
+           ]
+       ])
+, Space
+, HardBreak
+, Text "Fourth"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [First ]), 
+                 linebreak(), 
+                 text(body: [Second ]), 
+                 footnote(body: { text(body: [A, ]), 
+                                  footnote(body: { text(body: [B, ]), 
+                                                   footnote(body: text(body: [C])) }) }), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 text(body: [Third ]), 
+                 footnote(body: { text(body: [D, ]), 
+                                  footnote(body: text(body: [E])) }), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 text(body: [Fourth]), 
+                 parbreak() })
diff --git a/test/typ/meta/footnote-03.out b/test/typ/meta/footnote-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/footnote-03.out
@@ -0,0 +1,75 @@
+--- parse tree ---
+[ Code
+    "typ/meta/footnote-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/footnote-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/footnote-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/meta/footnote-03.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "footnote"))
+       [ BlockArg
+           [ Text "A,"
+           , Space
+           , Code
+               "typ/meta/footnote-03.typ"
+               ( line 4 , column 15 )
+               (FuncCall
+                  (Ident (Identifier "footnote")) [ BlockArg [ Text "B" ] ])
+           ]
+       ])
+, Text ","
+, Space
+, Code
+    "typ/meta/footnote-03.typ"
+    ( line 4 , column 30 )
+    (FuncCall
+       (Ident (Identifier "footnote")) [ BlockArg [ Text "C" ] ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 footnote(body: { text(body: [A, ]), 
+                                  footnote(body: text(body: [B])) }), 
+                 text(body: [, ]), 
+                 footnote(body: text(body: [C])), 
+                 parbreak() })
diff --git a/test/typ/meta/footnote-04.out b/test/typ/meta/footnote-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/footnote-04.out
@@ -0,0 +1,111 @@
+--- parse tree ---
+[ Code
+    "typ/meta/footnote-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/footnote-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/footnote-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/meta/footnote-04.typ"
+    ( line 3 , column 2 )
+    (Show
+       (Just (Ident (Identifier "footnote")))
+       (Set
+          (Ident (Identifier "text"))
+          [ NormalArg (Ident (Identifier "red")) ]))
+, SoftBreak
+, Code
+    "typ/meta/footnote-04.typ"
+    ( line 4 , column 2 )
+    (Show
+       (Just
+          (FieldAccess
+             (Ident (Identifier "entry")) (Ident (Identifier "footnote"))))
+       (Set
+          (Ident (Identifier "text"))
+          [ NormalArg (Literal (Numeric 8.0 Pt))
+          , KeyValArg (Identifier "style") (Literal (String "italic"))
+          ]))
+, SoftBreak
+, Code
+    "typ/meta/footnote-04.typ"
+    ( line 5 , column 2 )
+    (Set
+       (FieldAccess
+          (Ident (Identifier "entry")) (Ident (Identifier "footnote")))
+       [ KeyValArg (Identifier "indent") (Literal (Numeric 0.0 Pt))
+       , KeyValArg (Identifier "gap") (Literal (Numeric 0.6 Em))
+       , KeyValArg (Identifier "clearance") (Literal (Numeric 0.3 Em))
+       , KeyValArg
+           (Identifier "separator")
+           (FuncCall (Ident (Identifier "repeat")) [ BlockArg [ Text "." ] ])
+       ])
+, ParBreak
+, Text "Beautiful"
+, Space
+, Text "footnotes"
+, Text "."
+, Space
+, Code
+    "typ/meta/footnote-04.typ"
+    ( line 12 , column 23 )
+    (FuncCall
+       (Ident (Identifier "footnote"))
+       [ BlockArg
+           [ Text "Wonderful,"
+           , Space
+           , Text "aren"
+           , Quote '\''
+           , Text "t"
+           , Space
+           , Text "they?"
+           ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [Beautiful footnotes. ]), 
+                 footnote(body: text(body: [Wonderful, aren’t they?])), 
+                 parbreak() })
diff --git a/test/typ/meta/footnote-break-00.out b/test/typ/meta/footnote-break-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/footnote-break-00.out
@@ -0,0 +1,202 @@
+--- parse tree ---
+[ Code
+    "typ/meta/footnote-break-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/footnote-break-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/footnote-break-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/meta/footnote-break-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 200.0 Pt)) ])
+, ParBreak
+, Code
+    "typ/meta/footnote-break-00.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 5)) ])
+, SoftBreak
+, Code
+    "typ/meta/footnote-break-00.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "footnote"))
+       [ BlockArg
+           [ Space
+           , Comment
+           , Space
+           , Text "A"
+           , Space
+           , Text "simple"
+           , Space
+           , Text "footnote"
+           , Text "."
+           , SoftBreak
+           , Code
+               "typ/meta/footnote-break-00.typ"
+               ( line 7 , column 4 )
+               (FuncCall
+                  (Ident (Identifier "footnote"))
+                  [ BlockArg
+                      [ Text "Well,"
+                      , Space
+                      , Text "not"
+                      , Space
+                      , Text "that"
+                      , Space
+                      , Text "simple"
+                      , Space
+                      , Ellipsis
+                      ]
+                  ])
+           , Space
+           , Comment
+           ]
+       ])
+, SoftBreak
+, Code
+    "typ/meta/footnote-break-00.typ"
+    ( line 9 , column 2 )
+    (FuncCall
+       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 15)) ])
+, SoftBreak
+, Code
+    "typ/meta/footnote-break-00.typ"
+    ( line 10 , column 2 )
+    (FuncCall
+       (Ident (Identifier "footnote"))
+       [ BlockArg
+           [ Text "Another"
+           , Space
+           , Text "footnote"
+           , Text ":"
+           , Space
+           , Code
+               "typ/meta/footnote-break-00.typ"
+               ( line 10 , column 30 )
+               (FuncCall
+                  (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 30)) ])
+           ]
+       ])
+, Space
+, Comment
+, Code
+    "typ/meta/footnote-break-00.typ"
+    ( line 11 , column 2 )
+    (FuncCall
+       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 15)) ])
+, SoftBreak
+, Code
+    "typ/meta/footnote-break-00.typ"
+    ( line 12 , column 2 )
+    (FuncCall
+       (Ident (Identifier "footnote"))
+       [ BlockArg
+           [ Text "My"
+           , Space
+           , Text "fourth"
+           , Space
+           , Text "footnote"
+           , Text ":"
+           , Space
+           , Code
+               "typ/meta/footnote-break-00.typ"
+               ( line 12 , column 32 )
+               (FuncCall
+                  (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 50)) ])
+           ]
+       ])
+, Space
+, Comment
+, Code
+    "typ/meta/footnote-break-00.typ"
+    ( line 13 , column 2 )
+    (FuncCall
+       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 15)) ])
+, SoftBreak
+, Code
+    "typ/meta/footnote-break-00.typ"
+    ( line 14 , column 2 )
+    (FuncCall
+       (Ident (Identifier "footnote"))
+       [ BlockArg
+           [ Text "And"
+           , Space
+           , Text "a"
+           , Space
+           , Text "final"
+           , Space
+           , Text "footnote"
+           , Text "."
+           ]
+       ])
+, Space
+, Comment
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [Lorem ipsum dolor sit amet,]), 
+                 text(body: [
+]), 
+                 footnote(body: { text(body: [ ]), 
+                                  text(body: [ A simple footnote.
+]), 
+                                  footnote(body: text(body: [Well, not that simple …])), 
+                                  text(body: [ ]) }), 
+                 text(body: [
+]), 
+                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore]), 
+                 text(body: [
+]), 
+                 footnote(body: { text(body: [Another footnote: ]), 
+                                  text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi]) }), 
+                 text(body: [ ]), 
+                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore]), 
+                 text(body: [
+]), 
+                 footnote(body: { text(body: [My fourth footnote: ]), 
+                                  text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat]) }), 
+                 text(body: [ ]), 
+                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore]), 
+                 text(body: [
+]), 
+                 footnote(body: text(body: [And a final footnote.])), 
+                 text(body: [ ]) })
diff --git a/test/typ/meta/footnote-container-00.out b/test/typ/meta/footnote-container-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/footnote-container-00.out
@@ -0,0 +1,157 @@
+--- parse tree ---
+[ Code
+    "typ/meta/footnote-container-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/footnote-container-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/footnote-container-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "Read"
+, Space
+, Text "the"
+, Space
+, Text "docs"
+, Space
+, Code
+    "typ/meta/footnote-container-00.typ"
+    ( line 3 , column 16 )
+    (FuncCall
+       (Ident (Identifier "footnote"))
+       [ BlockArg [ Url "https://typst.app/docs" ] ])
+, Text "!"
+, SoftBreak
+, Code
+    "typ/meta/footnote-container-00.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "figure"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "image"))
+              [ NormalArg (Literal (String "/assets/files/graph.png"))
+              , KeyValArg (Identifier "width") (Literal (Numeric 70.0 Percent))
+              ])
+       , KeyValArg
+           (Identifier "caption")
+           (Block
+              (Content
+                 [ SoftBreak
+                 , Text "A"
+                 , Space
+                 , Text "graph"
+                 , Space
+                 , Code
+                     "typ/meta/footnote-container-00.typ"
+                     ( line 7 , column 14 )
+                     (FuncCall
+                        (Ident (Identifier "footnote"))
+                        [ BlockArg
+                            [ Text "A"
+                            , Space
+                            , Emph [ Text "graph" ]
+                            , Space
+                            , Text "is"
+                            , Space
+                            , Text "a"
+                            , Space
+                            , Text "structure"
+                            , Space
+                            , Text "with"
+                            , Space
+                            , Text "nodes"
+                            , Space
+                            , Text "and"
+                            , Space
+                            , Text "edges"
+                            , Text "."
+                            ]
+                        ])
+                 , ParBreak
+                 ]))
+       ])
+, SoftBreak
+, Text "More"
+, Space
+, Code
+    "typ/meta/footnote-container-00.typ"
+    ( line 10 , column 7 )
+    (FuncCall
+       (Ident (Identifier "footnote"))
+       [ BlockArg [ Text "just" , Space , Text "for" , Space , Ellipsis ]
+       ])
+, Space
+, Text "footnotes"
+, Space
+, Code
+    "typ/meta/footnote-container-00.typ"
+    ( line 10 , column 41 )
+    (FuncCall
+       (Ident (Identifier "footnote"))
+       [ BlockArg
+           [ Ellipsis
+           , Space
+           , Text "testing"
+           , Text "."
+           , Space
+           , Text ":"
+           , Text ")"
+           ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [Read the docs ]), 
+                 footnote(body: link(body: [https://typst.app/docs], 
+                                     dest: "https://typst.app/docs")), 
+                 text(body: [!
+]), 
+                 figure(body: image(path: "/assets/files/graph.png", 
+                                    width: 70%), 
+                        caption: { text(body: [
+A graph ]), 
+                                   footnote(body: { text(body: [A ]), 
+                                                    emph(body: text(body: [graph])), 
+                                                    text(body: [ is a structure with nodes and edges.]) }), 
+                                   parbreak() }), 
+                 text(body: [
+More ]), 
+                 footnote(body: text(body: [just for …])), 
+                 text(body: [ footnotes ]), 
+                 footnote(body: text(body: [… testing. :)])), 
+                 parbreak() })
diff --git a/test/typ/meta/footnote-container-01.out b/test/typ/meta/footnote-container-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/footnote-container-01.out
@@ -0,0 +1,202 @@
+--- parse tree ---
+[ Code
+    "typ/meta/footnote-container-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/footnote-container-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/footnote-container-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/meta/footnote-container-01.typ"
+    ( line 3 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "lang")))
+       (FuncCall
+          (Ident (Identifier "footnote"))
+          [ BlockArg [ Text "Languages" , Text "." ] ]))
+, SoftBreak
+, Code
+    "typ/meta/footnote-container-01.typ"
+    ( line 4 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "nums")))
+       (FuncCall
+          (Ident (Identifier "footnote"))
+          [ BlockArg [ Text "Numbers" , Text "." ] ]))
+, ParBreak
+, DescListItem
+    [ Quote '"' , Text "Hello" , Quote '"' ]
+    [ Text "A"
+    , Space
+    , Text "word"
+    , Space
+    , Code
+        "typ/meta/footnote-container-01.typ"
+        ( line 6 , column 20 )
+        (Ident (Identifier "lang"))
+    ]
+, SoftBreak
+, DescListItem
+    [ Quote '"' , Text "123" , Quote '"' ]
+    [ Text "A"
+    , Space
+    , Text "number"
+    , Space
+    , Code
+        "typ/meta/footnote-container-01.typ"
+        ( line 7 , column 20 )
+        (Ident (Identifier "nums"))
+    , SoftBreak
+    ]
+, SoftBreak
+, BulletListItem
+    [ Quote '"'
+    , Text "Hello"
+    , Quote '"'
+    , Space
+    , Code
+        "typ/meta/footnote-container-01.typ"
+        ( line 9 , column 12 )
+        (Ident (Identifier "lang"))
+    ]
+, SoftBreak
+, BulletListItem
+    [ Quote '"'
+    , Text "123"
+    , Quote '"'
+    , Space
+    , Code
+        "typ/meta/footnote-container-01.typ"
+        ( line 10 , column 10 )
+        (Ident (Identifier "nums"))
+    , SoftBreak
+    ]
+, SoftBreak
+, EnumListItem
+    Nothing
+    [ Quote '"'
+    , Text "Hello"
+    , Quote '"'
+    , Space
+    , Code
+        "typ/meta/footnote-container-01.typ"
+        ( line 12 , column 12 )
+        (Ident (Identifier "lang"))
+    ]
+, SoftBreak
+, EnumListItem
+    Nothing
+    [ Quote '"'
+    , Text "123"
+    , Quote '"'
+    , Space
+    , Code
+        "typ/meta/footnote-container-01.typ"
+        ( line 13 , column 10 )
+        (Ident (Identifier "nums"))
+    , SoftBreak
+    ]
+, SoftBreak
+, Code
+    "typ/meta/footnote-container-01.typ"
+    ( line 15 , column 2 )
+    (FuncCall
+       (Ident (Identifier "table"))
+       [ KeyValArg (Identifier "columns") (Literal (Int 2))
+       , NormalArg (Block (Content [ Text "Hello" ]))
+       , NormalArg
+           (Block
+              (Content
+                 [ Text "A"
+                 , Space
+                 , Text "word"
+                 , Space
+                 , Code
+                     "typ/meta/footnote-container-01.typ"
+                     ( line 17 , column 21 )
+                     (Ident (Identifier "lang"))
+                 ]))
+       , NormalArg (Block (Content [ Text "123" ]))
+       , NormalArg
+           (Block
+              (Content
+                 [ Text "A"
+                 , Space
+                 , Text "number"
+                 , Space
+                 , Code
+                     "typ/meta/footnote-container-01.typ"
+                     ( line 18 , column 21 )
+                     (Ident (Identifier "nums"))
+                 ]))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 terms(children: ((text(body: [“Hello”]), 
+                                   { text(body: [A word ]), 
+                                     footnote(body: text(body: [Languages.])) }), 
+                                  (text(body: [“123”]), 
+                                   { text(body: [A number ]), 
+                                     footnote(body: text(body: [Numbers.])), 
+                                     text(body: [
+]) }))), 
+                 list(children: ({ text(body: [“Hello” ]), 
+                                   footnote(body: text(body: [Languages.])) }, 
+                                 { text(body: [“123” ]), 
+                                   footnote(body: text(body: [Numbers.])), 
+                                   text(body: [
+]) })), 
+                 enum(children: ({ text(body: [“Hello” ]), 
+                                   footnote(body: text(body: [Languages.])) }, 
+                                 { text(body: [“123” ]), 
+                                   footnote(body: text(body: [Numbers.])), 
+                                   text(body: [
+]) })), 
+                 table(children: (text(body: [Hello]), 
+                                  { text(body: [A word ]), 
+                                    footnote(body: text(body: [Languages.])) }, 
+                                  text(body: [123]), 
+                                  { text(body: [A number ]), 
+                                    footnote(body: text(body: [Numbers.])) }), 
+                       columns: 2), 
+                 parbreak() })
diff --git a/test/typ/meta/footnote-invariant-00.out b/test/typ/meta/footnote-invariant-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/footnote-invariant-00.out
@@ -0,0 +1,76 @@
+--- parse tree ---
+[ Code
+    "typ/meta/footnote-invariant-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/footnote-invariant-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/footnote-invariant-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/meta/footnote-invariant-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 120.0 Pt)) ])
+, ParBreak
+, Code
+    "typ/meta/footnote-invariant-00.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 13)) ])
+, ParBreak
+, Text "There"
+, Space
+, Code
+    "typ/meta/footnote-invariant-00.typ"
+    ( line 6 , column 8 )
+    (FuncCall
+       (Ident (Identifier "footnote"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 20)) ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt]), 
+                 parbreak(), 
+                 text(body: [There ]), 
+                 footnote(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut]), 
+                 parbreak() })
diff --git a/test/typ/meta/heading-00.out b/test/typ/meta/heading-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/heading-00.out
@@ -0,0 +1,62 @@
+--- parse tree ---
+[ Code
+    "typ/meta/heading-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/heading-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/heading-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, SoftBreak
+, Heading 1 [ Text "Level" , Space , Text "1" ]
+, Heading 2 [ Text "Level" , Space , Text "2" ]
+, Heading 3 [ Text "Level" , Space , Text "3" ]
+, Comment
+, Heading 11 [ Text "Level" , Space , Text "11" ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 heading(body: text(body: [Level 1]), 
+                         level: 1), 
+                 heading(body: text(body: [Level 2]), 
+                         level: 2), 
+                 heading(body: text(body: [Level 3]), 
+                         level: 3), 
+                 heading(body: text(body: [Level 11]), 
+                         level: 11) })
diff --git a/test/typ/meta/heading-01.out b/test/typ/meta/heading-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/heading-01.out
@@ -0,0 +1,97 @@
+--- parse tree ---
+[ Code
+    "typ/meta/heading-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/heading-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/heading-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, SoftBreak
+, Comment
+, Comment
+, Space
+, Text "="
+, Space
+, Text "Level"
+, Space
+, Text "1"
+, SoftBreak
+, Code
+    "typ/meta/heading-01.typ"
+    ( line 6 , column 2 )
+    (Block (Content [ Heading 2 [ Text "Level" , Space , Text "2" ] ]))
+, SoftBreak
+, Code
+    "typ/meta/heading-01.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ BlockArg [ Heading 3 [ Text "Level" , Space , Text "3" ] ] ])
+, ParBreak
+, Comment
+, Text "No"
+, Space
+, Text "="
+, Space
+, Text "heading"
+, ParBreak
+, Comment
+, Text "="
+, Space
+, Text "No"
+, Space
+, Text "heading"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [ = Level 1
+]), 
+                 heading(body: text(body: [Level 2]), 
+                         level: 2), 
+                 text(body: [
+]), 
+                 box(body: heading(body: text(body: [Level 3]), 
+                                   level: 3)), 
+                 parbreak(), 
+                 text(body: [No = heading]), 
+                 parbreak(), 
+                 text(body: [= No heading]), 
+                 parbreak() })
diff --git a/test/typ/meta/heading-02.out b/test/typ/meta/heading-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/heading-02.out
@@ -0,0 +1,80 @@
+--- parse tree ---
+[ Code
+    "typ/meta/heading-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/heading-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/heading-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, SoftBreak
+, Heading
+    1
+    [ Code
+        "typ/meta/heading-02.typ"
+        ( line 4 , column 4 )
+        (Block
+           (Content
+              [ Text "This"
+              , SoftBreak
+              , Text "is"
+              , SoftBreak
+              , Text "multiline"
+              , Text "."
+              , ParBreak
+              ]))
+    ]
+, Heading 1 [ Text "This" ]
+, Text "is"
+, Space
+, Text "not"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 heading(body: { text(body: [This
+is
+multiline.]), 
+                                 parbreak() }, 
+                         level: 1), 
+                 heading(body: text(body: [This]), 
+                         level: 1), 
+                 text(body: [is not.]), 
+                 parbreak() })
diff --git a/test/typ/meta/heading-03.out b/test/typ/meta/heading-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/heading-03.out
@@ -0,0 +1,94 @@
+--- parse tree ---
+[ Code
+    "typ/meta/heading-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/heading-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/heading-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/meta/heading-03.typ"
+    ( line 3 , column 2 )
+    (Show
+       (Just
+          (FuncCall
+             (FieldAccess
+                (Ident (Identifier "where")) (Ident (Identifier "heading")))
+             [ KeyValArg (Identifier "level") (Literal (Int 5)) ]))
+       (FuncExpr
+          [ NormalParam (Identifier "it") ]
+          (FuncCall
+             (Ident (Identifier "block"))
+             [ NormalArg
+                 (FuncCall
+                    (Ident (Identifier "text"))
+                    [ KeyValArg (Identifier "font") (Literal (String "Roboto"))
+                    , KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
+                    , NormalArg
+                        (Plus
+                           (FieldAccess (Ident (Identifier "body")) (Ident (Identifier "it")))
+                           (Block (Content [ Text "!" ])))
+                    ])
+             ])))
+, ParBreak
+, Heading 1 [ Text "Heading" ]
+, Heading 5 [ Text "Heading" , Space , Text "\127757" ]
+, Code
+    "typ/meta/heading-03.typ"
+    ( line 9 , column 2 )
+    (FuncCall
+       (Ident (Identifier "heading"))
+       [ KeyValArg (Identifier "level") (Literal (Int 5))
+       , BlockArg [ Text "Heading" ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 heading(body: text(body: [Heading]), 
+                         level: 1), 
+                 block(body: text(body: { text(body: [Heading 🌍]), 
+                                          text(body: [!]) }, 
+                                  fill: rgb(13%,61%,67%,100%), 
+                                  font: "Roboto")), 
+                 block(body: text(body: { text(body: [Heading]), 
+                                          text(body: [!]) }, 
+                                  fill: rgb(13%,61%,67%,100%), 
+                                  font: "Roboto")), 
+                 parbreak() })
diff --git a/test/typ/meta/heading-04.out b/test/typ/meta/heading-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/heading-04.out
@@ -0,0 +1,71 @@
+--- parse tree ---
+[ Code
+    "typ/meta/heading-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/heading-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/heading-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/meta/heading-04.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "heading"))
+       [ KeyValArg (Identifier "numbering") (Literal (String "1.")) ])
+, SoftBreak
+, Heading 1 []
+, Text "Not"
+, Space
+, Text "in"
+, Space
+, Text "heading"
+, SoftBreak
+, Text "="
+, Text "Nope"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 heading(body: {  }, 
+                         level: 1, 
+                         numbering: "1."), 
+                 text(body: [Not in heading
+=Nope]), 
+                 parbreak() })
diff --git a/test/typ/meta/link-00.out b/test/typ/meta/link-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/link-00.out
@@ -0,0 +1,141 @@
+--- parse tree ---
+[ Code
+    "typ/meta/link-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/link-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/link-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Url "https://example.com/"
+, ParBreak
+, Comment
+, Code
+    "typ/meta/link-00.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "link"))
+       [ NormalArg (Literal (String "https://typst.org/"))
+       , BlockArg
+           [ Text "Some"
+           , Space
+           , Text "text"
+           , Space
+           , Text "text"
+           , Space
+           , Text "text"
+           ]
+       ])
+, ParBreak
+, Comment
+, Text "This"
+, Space
+, Text "link"
+, Space
+, Text "appears"
+, Space
+, Code
+    "typ/meta/link-00.typ"
+    ( line 9 , column 20 )
+    (FuncCall
+       (Ident (Identifier "link"))
+       [ NormalArg (Literal (String "https://google.com/"))
+       , BlockArg
+           [ Text "in"
+           , Space
+           , Text "the"
+           , Space
+           , Text "middle"
+           , Space
+           , Text "of"
+           ]
+       ])
+, Space
+, Text "a"
+, Space
+, Text "paragraph"
+, Text "."
+, ParBreak
+, Comment
+, Text "Contact"
+, Space
+, Code
+    "typ/meta/link-00.typ"
+    ( line 12 , column 10 )
+    (FuncCall
+       (Ident (Identifier "link"))
+       [ NormalArg (Literal (String "mailto:hi@typst.app")) ])
+, Space
+, Text "or"
+, SoftBreak
+, Text "call"
+, Space
+, Code
+    "typ/meta/link-00.typ"
+    ( line 13 , column 7 )
+    (FuncCall
+       (Ident (Identifier "link"))
+       [ NormalArg (Literal (String "tel:123")) ])
+, Space
+, Text "for"
+, Space
+, Text "more"
+, Space
+, Text "information"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 link(body: [https://example.com/], 
+                      dest: "https://example.com/"), 
+                 parbreak(), 
+                 link(body: text(body: [Some text text text]), 
+                      dest: "https://typst.org/"), 
+                 parbreak(), 
+                 text(body: [This link appears ]), 
+                 link(body: text(body: [in the middle of]), 
+                      dest: "https://google.com/"), 
+                 text(body: [ a paragraph.]), 
+                 parbreak(), 
+                 text(body: [Contact ]), 
+                 link(dest: "mailto:hi@typst.app"), 
+                 text(body: [ or
+call ]), 
+                 link(dest: "tel:123"), 
+                 text(body: [ for more information.]), 
+                 parbreak() })
diff --git a/test/typ/meta/link-01.out b/test/typ/meta/link-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/link-01.out
@@ -0,0 +1,81 @@
+--- parse tree ---
+[ Code
+    "typ/meta/link-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/link-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/link-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/meta/link-01.typ"
+    ( line 3 , column 2 )
+    (Show
+       (Just (Ident (Identifier "link")))
+       (Ident (Identifier "underline")))
+, SoftBreak
+, Url "https://a.b.?q=%10#."
+, Space
+, HardBreak
+, Text "Wahttp"
+, Text ":"
+, Comment
+, Text "Nohttps"
+, Text ":"
+, Text "/"
+, Text "/"
+, Text "link"
+, Space
+, HardBreak
+, Text "Nohttp"
+, Text ":"
+, Comment
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 underline(body: link(body: [https://a.b.?q=%10#.], 
+                                      dest: "https://a.b.?q=%10#.")), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 text(body: [Wahttp:]), 
+                 text(body: [Nohttps://link ]), 
+                 linebreak(), 
+                 text(body: [Nohttp:]), 
+                 parbreak() })
diff --git a/test/typ/meta/link-02.out b/test/typ/meta/link-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/link-02.out
@@ -0,0 +1,69 @@
+--- parse tree ---
+[ Code
+    "typ/meta/link-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/link-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/link-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Url "https://[::1]:8080/"
+, Space
+, HardBreak
+, Url "https://example.com/(paren)"
+, Space
+, HardBreak
+, Url "https://example.com/#(((nested)))"
+, Space
+, HardBreak
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 link(body: [https://[::1]:8080/], 
+                      dest: "https://[::1]:8080/"), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 link(body: [https://example.com/(paren)], 
+                      dest: "https://example.com/(paren)"), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 link(body: [https://example.com/#(((nested)))], 
+                      dest: "https://example.com/#(((nested)))"), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 parbreak() })
diff --git a/test/typ/meta/link-03.out b/test/typ/meta/link-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/link-03.out
@@ -0,0 +1,63 @@
+--- parse tree ---
+[ Code
+    "typ/meta/link-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/link-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/link-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/meta/link-03.typ"
+    ( line 3 , column 2 )
+    (Block (Content [ Url "https://example.com/" ]))
+, Space
+, HardBreak
+, Url "https://example.com/"
+, Text ")"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 link(body: [https://example.com/], 
+                      dest: "https://example.com/"), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 link(body: [https://example.com/], 
+                      dest: "https://example.com/"), 
+                 text(body: [)]), 
+                 parbreak() })
diff --git a/test/typ/meta/link-04.out b/test/typ/meta/link-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/link-04.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/meta/link-05.out b/test/typ/meta/link-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/link-05.out
@@ -0,0 +1,104 @@
+--- parse tree ---
+[ Code
+    "typ/meta/link-05.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/link-05.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/link-05.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/meta/link-05.typ"
+    ( line 3 , column 2 )
+    (Show
+       (Just (Ident (Identifier "link")))
+       (FuncExpr
+          [ NormalParam (Identifier "it") ]
+          (FuncCall
+             (Ident (Identifier "underline"))
+             [ NormalArg
+                 (FuncCall
+                    (Ident (Identifier "text"))
+                    [ KeyValArg
+                        (Identifier "fill")
+                        (FuncCall
+                           (Ident (Identifier "rgb"))
+                           [ NormalArg (Literal (String "283663")) ])
+                    , NormalArg (Ident (Identifier "it"))
+                    ])
+             ])))
+, SoftBreak
+, Text "You"
+, Space
+, Text "could"
+, Space
+, Text "also"
+, Space
+, Text "make"
+, Space
+, Text "the"
+, SoftBreak
+, Code
+    "typ/meta/link-05.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "link"))
+       [ NormalArg (Literal (String "https://html5zombo.com/"))
+       , BlockArg
+           [ Text "link"
+           , Space
+           , Text "look"
+           , Space
+           , Text "way"
+           , Space
+           , Text "more"
+           , Space
+           , Text "typical"
+           , Text "."
+           ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+You could also make the
+]), 
+                 underline(body: text(body: link(body: text(body: [link look way more typical.]), 
+                                                 dest: "https://html5zombo.com/"), 
+                                      fill: rgb(15%,21%,38%,100%))), 
+                 parbreak() })
diff --git a/test/typ/meta/link-06.out b/test/typ/meta/link-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/link-06.out
@@ -0,0 +1,103 @@
+--- parse tree ---
+[ Code
+    "typ/meta/link-06.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/link-06.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/link-06.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/meta/link-06.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 60.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/meta/link-06.typ"
+    ( line 4 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "mylink")))
+       (FuncCall
+          (Ident (Identifier "link"))
+          [ NormalArg (Literal (String "https://typst.org/"))
+          , BlockArg [ Text "LINK" ]
+          ]))
+, SoftBreak
+, Text "My"
+, Space
+, Text "cool"
+, Space
+, Code
+    "typ/meta/link-06.typ"
+    ( line 5 , column 10 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "move"))
+              [ KeyValArg (Identifier "dx") (Literal (Numeric 0.7 Cm))
+              , KeyValArg (Identifier "dy") (Literal (Numeric 0.7 Cm))
+              , NormalArg
+                  (FuncCall
+                     (Ident (Identifier "rotate"))
+                     [ NormalArg (Literal (Numeric 10.0 Deg))
+                     , NormalArg
+                         (FuncCall
+                            (Ident (Identifier "scale"))
+                            [ NormalArg (Literal (Numeric 200.0 Percent))
+                            , NormalArg (Ident (Identifier "mylink"))
+                            ])
+                     ])
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+My cool ]), 
+                 box(body: move(body: rotate(angle: 10.0deg, 
+                                             body: scale(body: link(body: text(body: [LINK]), 
+                                                                    dest: "https://typst.org/"), 
+                                                         factor: 200%)), 
+                                dx: 0.7cm, 
+                                dy: 0.7cm)), 
+                 parbreak() })
diff --git a/test/typ/meta/link-07.out b/test/typ/meta/link-07.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/link-07.out
@@ -0,0 +1,94 @@
+--- parse tree ---
+[ Code
+    "typ/meta/link-07.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/link-07.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/link-07.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/meta/link-07.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "link"))
+       [ NormalArg (Literal (String "https://example.com/"))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "block"))
+              [ BlockArg
+                  [ SoftBreak
+                  , Text "My"
+                  , Space
+                  , Text "cool"
+                  , Space
+                  , Text "rhino"
+                  , SoftBreak
+                  , Code
+                      "typ/meta/link-07.typ"
+                      ( line 5 , column 4 )
+                      (FuncCall
+                         (Ident (Identifier "box"))
+                         [ NormalArg
+                             (FuncCall
+                                (Ident (Identifier "move"))
+                                [ KeyValArg (Identifier "dx") (Literal (Numeric 10.0 Pt))
+                                , NormalArg
+                                    (FuncCall
+                                       (Ident (Identifier "image"))
+                                       [ NormalArg (Literal (String "/assets/files/rhino.png"))
+                                       , KeyValArg (Identifier "width") (Literal (Numeric 1.0 Cm))
+                                       ])
+                                ])
+                         ])
+                  , ParBreak
+                  ]
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 link(body: block(body: { text(body: [
+My cool rhino
+]), 
+                                          box(body: move(body: image(path: "/assets/files/rhino.png", 
+                                                                     width: 1.0cm), 
+                                                         dx: 10.0pt)), 
+                                          parbreak() }), 
+                      dest: "https://example.com/"), 
+                 parbreak() })
diff --git a/test/typ/meta/link-08.out b/test/typ/meta/link-08.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/link-08.out
@@ -0,0 +1,73 @@
+--- parse tree ---
+[ Code
+    "typ/meta/link-08.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/link-08.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/link-08.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/meta/link-08.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "link"))
+       [ NormalArg
+           (Dict
+              [ Reg ( Ident (Identifier "page") , Literal (Int 1) )
+              , Reg ( Ident (Identifier "x") , Literal (Numeric 10.0 Pt) )
+              , Reg ( Ident (Identifier "y") , Literal (Numeric 20.0 Pt) )
+              ])
+       , BlockArg
+           [ Text "Back"
+           , Space
+           , Text "to"
+           , Space
+           , Text "the"
+           , Space
+           , Text "start"
+           ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 link(body: text(body: [Back to the start]), 
+                      dest: (page: 1,
+                             x: 10.0pt,
+                             y: 20.0pt)), 
+                 parbreak() })
diff --git a/test/typ/meta/link-09.out b/test/typ/meta/link-09.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/link-09.out
@@ -0,0 +1,67 @@
+--- parse tree ---
+[ Code
+    "typ/meta/link-09.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/link-09.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/link-09.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "Text"
+, Space
+, Code "typ/meta/link-09.typ" ( line 3 , column 6 ) (Label "hey")
+, SoftBreak
+, Code
+    "typ/meta/link-09.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "link"))
+       [ NormalArg (Label "hey")
+       , BlockArg
+           [ Text "Go" , Space , Text "to" , Space , Text "text" , Text "." ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [Text ]), 
+                 <hey>, 
+                 text(body: [
+]), 
+                 link(body: text(body: [Go to text.]), 
+                      dest: <hey>), 
+                 parbreak() })
diff --git a/test/typ/meta/link-10.out b/test/typ/meta/link-10.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/link-10.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/meta/link-11.out b/test/typ/meta/link-11.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/link-11.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/meta/numbering-00.out b/test/typ/meta/numbering-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/numbering-00.out
@@ -0,0 +1,163 @@
+--- parse tree ---
+[ Code
+    "typ/meta/numbering-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/numbering-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/numbering-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/meta/numbering-00.typ"
+    ( line 2 , column 2 )
+    (For
+       (BasicBind (Just (Identifier "i")))
+       (FuncCall
+          (Ident (Identifier "range"))
+          [ NormalArg (Literal (Int 0)) , NormalArg (Literal (Int 9)) ])
+       (Block
+          (CodeBlock
+             [ FuncCall
+                 (Ident (Identifier "numbering"))
+                 [ NormalArg (Literal (String "*"))
+                 , NormalArg (Ident (Identifier "i"))
+                 ]
+             , Block (Content [ Space , Text "and" , Space ])
+             , FuncCall
+                 (Ident (Identifier "numbering"))
+                 [ NormalArg (Literal (String "I.a"))
+                 , NormalArg (Ident (Identifier "i"))
+                 , NormalArg (Ident (Identifier "i"))
+                 ]
+             , Block
+                 (Content
+                    [ Space
+                    , Text "for"
+                    , Space
+                    , Code
+                        "typ/meta/numbering-00.typ"
+                        ( line 6 , column 10 )
+                        (Ident (Identifier "i"))
+                    , Space
+                    , HardBreak
+                    ])
+             ])))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 numbering(numbering: "*", 
+                           numbers: (0)), 
+                 text(body: [ and ]), 
+                 numbering(numbering: "I.a", 
+                           numbers: (0, 0)), 
+                 text(body: [ for ]), 
+                 text(body: [0]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 numbering(numbering: "*", 
+                           numbers: (1)), 
+                 text(body: [ and ]), 
+                 numbering(numbering: "I.a", 
+                           numbers: (1, 1)), 
+                 text(body: [ for ]), 
+                 text(body: [1]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 numbering(numbering: "*", 
+                           numbers: (2)), 
+                 text(body: [ and ]), 
+                 numbering(numbering: "I.a", 
+                           numbers: (2, 2)), 
+                 text(body: [ for ]), 
+                 text(body: [2]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 numbering(numbering: "*", 
+                           numbers: (3)), 
+                 text(body: [ and ]), 
+                 numbering(numbering: "I.a", 
+                           numbers: (3, 3)), 
+                 text(body: [ for ]), 
+                 text(body: [3]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 numbering(numbering: "*", 
+                           numbers: (4)), 
+                 text(body: [ and ]), 
+                 numbering(numbering: "I.a", 
+                           numbers: (4, 4)), 
+                 text(body: [ for ]), 
+                 text(body: [4]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 numbering(numbering: "*", 
+                           numbers: (5)), 
+                 text(body: [ and ]), 
+                 numbering(numbering: "I.a", 
+                           numbers: (5, 5)), 
+                 text(body: [ for ]), 
+                 text(body: [5]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 numbering(numbering: "*", 
+                           numbers: (6)), 
+                 text(body: [ and ]), 
+                 numbering(numbering: "I.a", 
+                           numbers: (6, 6)), 
+                 text(body: [ for ]), 
+                 text(body: [6]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 numbering(numbering: "*", 
+                           numbers: (7)), 
+                 text(body: [ and ]), 
+                 numbering(numbering: "I.a", 
+                           numbers: (7, 7)), 
+                 text(body: [ for ]), 
+                 text(body: [7]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 numbering(numbering: "*", 
+                           numbers: (8)), 
+                 text(body: [ and ]), 
+                 numbering(numbering: "I.a", 
+                           numbers: (8, 8)), 
+                 text(body: [ for ]), 
+                 text(body: [8]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 parbreak() })
diff --git a/test/typ/meta/numbering-01.out b/test/typ/meta/numbering-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/numbering-01.out
@@ -0,0 +1,217 @@
+--- parse tree ---
+[ Code
+    "typ/meta/numbering-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/numbering-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/numbering-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/meta/numbering-01.typ"
+    ( line 2 , column 2 )
+    (For
+       (BasicBind (Just (Identifier "i")))
+       (FuncCall
+          (Ident (Identifier "range"))
+          [ NormalArg (Literal (Int 0)) , NormalArg (Literal (Int 4)) ])
+       (Block
+          (CodeBlock
+             [ FuncCall
+                 (Ident (Identifier "numbering"))
+                 [ NormalArg (Literal (String "A"))
+                 , NormalArg (Ident (Identifier "i"))
+                 ]
+             , Block
+                 (Content
+                    [ Space
+                    , Text "for"
+                    , Space
+                    , Code
+                        "typ/meta/numbering-01.typ"
+                        ( line 4 , column 10 )
+                        (Ident (Identifier "i"))
+                    , Space
+                    , HardBreak
+                    ])
+             ])))
+, SoftBreak
+, Ellipsis
+, Space
+, HardBreak
+, Code
+    "typ/meta/numbering-01.typ"
+    ( line 7 , column 2 )
+    (For
+       (BasicBind (Just (Identifier "i")))
+       (FuncCall
+          (Ident (Identifier "range"))
+          [ NormalArg (Literal (Int 26)) , NormalArg (Literal (Int 30)) ])
+       (Block
+          (CodeBlock
+             [ FuncCall
+                 (Ident (Identifier "numbering"))
+                 [ NormalArg (Literal (String "A"))
+                 , NormalArg (Ident (Identifier "i"))
+                 ]
+             , Block
+                 (Content
+                    [ Space
+                    , Text "for"
+                    , Space
+                    , Code
+                        "typ/meta/numbering-01.typ"
+                        ( line 9 , column 10 )
+                        (Ident (Identifier "i"))
+                    , Space
+                    , HardBreak
+                    ])
+             ])))
+, SoftBreak
+, Ellipsis
+, Space
+, HardBreak
+, Code
+    "typ/meta/numbering-01.typ"
+    ( line 12 , column 2 )
+    (For
+       (BasicBind (Just (Identifier "i")))
+       (FuncCall
+          (Ident (Identifier "range"))
+          [ NormalArg (Literal (Int 702)) , NormalArg (Literal (Int 706)) ])
+       (Block
+          (CodeBlock
+             [ FuncCall
+                 (Ident (Identifier "numbering"))
+                 [ NormalArg (Literal (String "A"))
+                 , NormalArg (Ident (Identifier "i"))
+                 ]
+             , Block
+                 (Content
+                    [ Space
+                    , Text "for"
+                    , Space
+                    , Code
+                        "typ/meta/numbering-01.typ"
+                        ( line 14 , column 10 )
+                        (Ident (Identifier "i"))
+                    , Space
+                    , HardBreak
+                    ])
+             ])))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 numbering(numbering: "A", 
+                           numbers: (0)), 
+                 text(body: [ for ]), 
+                 text(body: [0]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 numbering(numbering: "A", 
+                           numbers: (1)), 
+                 text(body: [ for ]), 
+                 text(body: [1]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 numbering(numbering: "A", 
+                           numbers: (2)), 
+                 text(body: [ for ]), 
+                 text(body: [2]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 numbering(numbering: "A", 
+                           numbers: (3)), 
+                 text(body: [ for ]), 
+                 text(body: [3]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 text(body: [
+… ]), 
+                 linebreak(), 
+                 numbering(numbering: "A", 
+                           numbers: (26)), 
+                 text(body: [ for ]), 
+                 text(body: [26]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 numbering(numbering: "A", 
+                           numbers: (27)), 
+                 text(body: [ for ]), 
+                 text(body: [27]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 numbering(numbering: "A", 
+                           numbers: (28)), 
+                 text(body: [ for ]), 
+                 text(body: [28]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 numbering(numbering: "A", 
+                           numbers: (29)), 
+                 text(body: [ for ]), 
+                 text(body: [29]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 text(body: [
+… ]), 
+                 linebreak(), 
+                 numbering(numbering: "A", 
+                           numbers: (702)), 
+                 text(body: [ for ]), 
+                 text(body: [702]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 numbering(numbering: "A", 
+                           numbers: (703)), 
+                 text(body: [ for ]), 
+                 text(body: [703]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 numbering(numbering: "A", 
+                           numbers: (704)), 
+                 text(body: [ for ]), 
+                 text(body: [704]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 numbering(numbering: "A", 
+                           numbers: (705)), 
+                 text(body: [ for ]), 
+                 text(body: [705]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 parbreak() })
diff --git a/test/typ/meta/numbering-02.out b/test/typ/meta/numbering-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/numbering-02.out
@@ -0,0 +1,129 @@
+--- parse tree ---
+[ Code
+    "typ/meta/numbering-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/numbering-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/numbering-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/meta/numbering-02.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "lang") (Literal (String "he")) ])
+, SoftBreak
+, Code
+    "typ/meta/numbering-02.typ"
+    ( line 3 , column 2 )
+    (For
+       (BasicBind (Just (Identifier "i")))
+       (FuncCall
+          (Ident (Identifier "range"))
+          [ NormalArg (Literal (Int 9))
+          , NormalArg (Literal (Int 21))
+          , KeyValArg (Identifier "step") (Literal (Int 2))
+          ])
+       (Block
+          (CodeBlock
+             [ FuncCall
+                 (Ident (Identifier "numbering"))
+                 [ NormalArg (Literal (String "\1488."))
+                 , NormalArg (Ident (Identifier "i"))
+                 ]
+             , Block
+                 (Content
+                    [ Space
+                    , Text "\1506\1489\1493\1512"
+                    , Space
+                    , Code
+                        "typ/meta/numbering-02.typ"
+                        ( line 5 , column 11 )
+                        (Ident (Identifier "i"))
+                    , Space
+                    , HardBreak
+                    ])
+             ])))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+], lang: "he"), 
+                 numbering(numbering: "א.", 
+                           numbers: (9)), 
+                 text(body: [ עבור ], 
+                      lang: "he"), 
+                 text(body: [9], lang: "he"), 
+                 text(body: [ ], lang: "he"), 
+                 linebreak(), 
+                 numbering(numbering: "א.", 
+                           numbers: (11)), 
+                 text(body: [ עבור ], 
+                      lang: "he"), 
+                 text(body: [11], lang: "he"), 
+                 text(body: [ ], lang: "he"), 
+                 linebreak(), 
+                 numbering(numbering: "א.", 
+                           numbers: (13)), 
+                 text(body: [ עבור ], 
+                      lang: "he"), 
+                 text(body: [13], lang: "he"), 
+                 text(body: [ ], lang: "he"), 
+                 linebreak(), 
+                 numbering(numbering: "א.", 
+                           numbers: (15)), 
+                 text(body: [ עבור ], 
+                      lang: "he"), 
+                 text(body: [15], lang: "he"), 
+                 text(body: [ ], lang: "he"), 
+                 linebreak(), 
+                 numbering(numbering: "א.", 
+                           numbers: (17)), 
+                 text(body: [ עבור ], 
+                      lang: "he"), 
+                 text(body: [17], lang: "he"), 
+                 text(body: [ ], lang: "he"), 
+                 linebreak(), 
+                 numbering(numbering: "א.", 
+                           numbers: (19)), 
+                 text(body: [ עבור ], 
+                      lang: "he"), 
+                 text(body: [19], lang: "he"), 
+                 text(body: [ ], lang: "he"), 
+                 linebreak(), 
+                 parbreak() })
diff --git a/test/typ/meta/numbering-03.out b/test/typ/meta/numbering-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/numbering-03.out
@@ -0,0 +1,159 @@
+--- parse tree ---
+[ Code
+    "typ/meta/numbering-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/numbering-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/numbering-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/meta/numbering-03.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "lang") (Literal (String "zh")) ])
+, SoftBreak
+, Code
+    "typ/meta/numbering-03.typ"
+    ( line 3 , column 2 )
+    (For
+       (BasicBind (Just (Identifier "i")))
+       (FuncCall
+          (Ident (Identifier "range"))
+          [ NormalArg (Literal (Int 9))
+          , NormalArg (Literal (Int 21))
+          , KeyValArg (Identifier "step") (Literal (Int 2))
+          ])
+       (Block
+          (CodeBlock
+             [ FuncCall
+                 (Ident (Identifier "numbering"))
+                 [ NormalArg (Literal (String "\19968"))
+                 , NormalArg (Ident (Identifier "i"))
+                 ]
+             , Block (Content [ Space , Text "and" , Space ])
+             , FuncCall
+                 (Ident (Identifier "numbering"))
+                 [ NormalArg (Literal (String "\22777"))
+                 , NormalArg (Ident (Identifier "i"))
+                 ]
+             , Block
+                 (Content
+                    [ Space
+                    , Text "for"
+                    , Space
+                    , Code
+                        "typ/meta/numbering-03.typ"
+                        ( line 7 , column 10 )
+                        (Ident (Identifier "i"))
+                    , Space
+                    , HardBreak
+                    ])
+             ])))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+], lang: "zh"), 
+                 numbering(numbering: "一", 
+                           numbers: (9)), 
+                 text(body: [ and ], 
+                      lang: "zh"), 
+                 numbering(numbering: "壹", 
+                           numbers: (9)), 
+                 text(body: [ for ], 
+                      lang: "zh"), 
+                 text(body: [9], lang: "zh"), 
+                 text(body: [ ], lang: "zh"), 
+                 linebreak(), 
+                 numbering(numbering: "一", 
+                           numbers: (11)), 
+                 text(body: [ and ], 
+                      lang: "zh"), 
+                 numbering(numbering: "壹", 
+                           numbers: (11)), 
+                 text(body: [ for ], 
+                      lang: "zh"), 
+                 text(body: [11], lang: "zh"), 
+                 text(body: [ ], lang: "zh"), 
+                 linebreak(), 
+                 numbering(numbering: "一", 
+                           numbers: (13)), 
+                 text(body: [ and ], 
+                      lang: "zh"), 
+                 numbering(numbering: "壹", 
+                           numbers: (13)), 
+                 text(body: [ for ], 
+                      lang: "zh"), 
+                 text(body: [13], lang: "zh"), 
+                 text(body: [ ], lang: "zh"), 
+                 linebreak(), 
+                 numbering(numbering: "一", 
+                           numbers: (15)), 
+                 text(body: [ and ], 
+                      lang: "zh"), 
+                 numbering(numbering: "壹", 
+                           numbers: (15)), 
+                 text(body: [ for ], 
+                      lang: "zh"), 
+                 text(body: [15], lang: "zh"), 
+                 text(body: [ ], lang: "zh"), 
+                 linebreak(), 
+                 numbering(numbering: "一", 
+                           numbers: (17)), 
+                 text(body: [ and ], 
+                      lang: "zh"), 
+                 numbering(numbering: "壹", 
+                           numbers: (17)), 
+                 text(body: [ for ], 
+                      lang: "zh"), 
+                 text(body: [17], lang: "zh"), 
+                 text(body: [ ], lang: "zh"), 
+                 linebreak(), 
+                 numbering(numbering: "一", 
+                           numbers: (19)), 
+                 text(body: [ and ], 
+                      lang: "zh"), 
+                 numbering(numbering: "壹", 
+                           numbers: (19)), 
+                 text(body: [ for ], 
+                      lang: "zh"), 
+                 text(body: [19], lang: "zh"), 
+                 text(body: [ ], lang: "zh"), 
+                 linebreak(), 
+                 parbreak() })
diff --git a/test/typ/meta/numbering-04.out b/test/typ/meta/numbering-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/numbering-04.out
@@ -0,0 +1,257 @@
+--- parse tree ---
+[ Code
+    "typ/meta/numbering-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/numbering-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/numbering-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/meta/numbering-04.typ"
+    ( line 2 , column 2 )
+    (For
+       (BasicBind (Just (Identifier "i")))
+       (FuncCall
+          (Ident (Identifier "range"))
+          [ NormalArg (Literal (Int 0)) , NormalArg (Literal (Int 4)) ])
+       (Block
+          (CodeBlock
+             [ FuncCall
+                 (Ident (Identifier "numbering"))
+                 [ NormalArg (Literal (String "\12452"))
+                 , NormalArg (Ident (Identifier "i"))
+                 ]
+             , Block (Content [ Space , Text "(" , Text "or" , Space ])
+             , FuncCall
+                 (Ident (Identifier "numbering"))
+                 [ NormalArg (Literal (String "\12356"))
+                 , NormalArg (Ident (Identifier "i"))
+                 ]
+             , Block
+                 (Content
+                    [ Text ")"
+                    , Space
+                    , Text "for"
+                    , Space
+                    , Code
+                        "typ/meta/numbering-04.typ"
+                        ( line 6 , column 11 )
+                        (Ident (Identifier "i"))
+                    , Space
+                    , HardBreak
+                    ])
+             ])))
+, SoftBreak
+, Ellipsis
+, Space
+, HardBreak
+, Code
+    "typ/meta/numbering-04.typ"
+    ( line 9 , column 2 )
+    (For
+       (BasicBind (Just (Identifier "i")))
+       (FuncCall
+          (Ident (Identifier "range"))
+          [ NormalArg (Literal (Int 47)) , NormalArg (Literal (Int 51)) ])
+       (Block
+          (CodeBlock
+             [ FuncCall
+                 (Ident (Identifier "numbering"))
+                 [ NormalArg (Literal (String "\12452"))
+                 , NormalArg (Ident (Identifier "i"))
+                 ]
+             , Block (Content [ Space , Text "(" , Text "or" , Space ])
+             , FuncCall
+                 (Ident (Identifier "numbering"))
+                 [ NormalArg (Literal (String "\12356"))
+                 , NormalArg (Ident (Identifier "i"))
+                 ]
+             , Block
+                 (Content
+                    [ Text ")"
+                    , Space
+                    , Text "for"
+                    , Space
+                    , Code
+                        "typ/meta/numbering-04.typ"
+                        ( line 13 , column 11 )
+                        (Ident (Identifier "i"))
+                    , Space
+                    , HardBreak
+                    ])
+             ])))
+, SoftBreak
+, Ellipsis
+, Space
+, HardBreak
+, Code
+    "typ/meta/numbering-04.typ"
+    ( line 16 , column 2 )
+    (For
+       (BasicBind (Just (Identifier "i")))
+       (FuncCall
+          (Ident (Identifier "range"))
+          [ NormalArg (Literal (Int 2256))
+          , NormalArg (Literal (Int 2260))
+          ])
+       (Block
+          (CodeBlock
+             [ FuncCall
+                 (Ident (Identifier "numbering"))
+                 [ NormalArg (Literal (String "\12452"))
+                 , NormalArg (Ident (Identifier "i"))
+                 ]
+             , Block
+                 (Content
+                    [ Space
+                    , Text "for"
+                    , Space
+                    , Code
+                        "typ/meta/numbering-04.typ"
+                        ( line 18 , column 10 )
+                        (Ident (Identifier "i"))
+                    , Space
+                    , HardBreak
+                    ])
+             ])))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 numbering(numbering: "イ", 
+                           numbers: (0)), 
+                 text(body: [ (or ]), 
+                 numbering(numbering: "い", 
+                           numbers: (0)), 
+                 text(body: [) for ]), 
+                 text(body: [0]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 numbering(numbering: "イ", 
+                           numbers: (1)), 
+                 text(body: [ (or ]), 
+                 numbering(numbering: "い", 
+                           numbers: (1)), 
+                 text(body: [) for ]), 
+                 text(body: [1]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 numbering(numbering: "イ", 
+                           numbers: (2)), 
+                 text(body: [ (or ]), 
+                 numbering(numbering: "い", 
+                           numbers: (2)), 
+                 text(body: [) for ]), 
+                 text(body: [2]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 numbering(numbering: "イ", 
+                           numbers: (3)), 
+                 text(body: [ (or ]), 
+                 numbering(numbering: "い", 
+                           numbers: (3)), 
+                 text(body: [) for ]), 
+                 text(body: [3]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 text(body: [
+… ]), 
+                 linebreak(), 
+                 numbering(numbering: "イ", 
+                           numbers: (47)), 
+                 text(body: [ (or ]), 
+                 numbering(numbering: "い", 
+                           numbers: (47)), 
+                 text(body: [) for ]), 
+                 text(body: [47]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 numbering(numbering: "イ", 
+                           numbers: (48)), 
+                 text(body: [ (or ]), 
+                 numbering(numbering: "い", 
+                           numbers: (48)), 
+                 text(body: [) for ]), 
+                 text(body: [48]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 numbering(numbering: "イ", 
+                           numbers: (49)), 
+                 text(body: [ (or ]), 
+                 numbering(numbering: "い", 
+                           numbers: (49)), 
+                 text(body: [) for ]), 
+                 text(body: [49]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 numbering(numbering: "イ", 
+                           numbers: (50)), 
+                 text(body: [ (or ]), 
+                 numbering(numbering: "い", 
+                           numbers: (50)), 
+                 text(body: [) for ]), 
+                 text(body: [50]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 text(body: [
+… ]), 
+                 linebreak(), 
+                 numbering(numbering: "イ", 
+                           numbers: (2256)), 
+                 text(body: [ for ]), 
+                 text(body: [2256]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 numbering(numbering: "イ", 
+                           numbers: (2257)), 
+                 text(body: [ for ]), 
+                 text(body: [2257]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 numbering(numbering: "イ", 
+                           numbers: (2258)), 
+                 text(body: [ for ]), 
+                 text(body: [2258]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 numbering(numbering: "イ", 
+                           numbers: (2259)), 
+                 text(body: [ for ]), 
+                 text(body: [2259]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 parbreak() })
diff --git a/test/typ/meta/numbering-05.out b/test/typ/meta/numbering-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/numbering-05.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/meta/outline-00.out b/test/typ/meta/outline-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/outline-00.out
@@ -0,0 +1,228 @@
+--- parse tree ---
+[ Code
+    "typ/meta/outline-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/outline-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/outline-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/meta/outline-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ NormalArg (Literal (String "a7"))
+       , KeyValArg (Identifier "margin") (Literal (Numeric 20.0 Pt))
+       , KeyValArg (Identifier "numbering") (Literal (String "1"))
+       ])
+, SoftBreak
+, Code
+    "typ/meta/outline-00.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "heading"))
+       [ KeyValArg (Identifier "numbering") (Literal (String "(1/a)")) ])
+, SoftBreak
+, Code
+    "typ/meta/outline-00.typ"
+    ( line 4 , column 2 )
+    (Show
+       (Just
+          (FuncCall
+             (FieldAccess
+                (Ident (Identifier "where")) (Ident (Identifier "heading")))
+             [ KeyValArg (Identifier "level") (Literal (Int 1)) ]))
+       (Set
+          (Ident (Identifier "text"))
+          [ NormalArg (Literal (Numeric 12.0 Pt)) ]))
+, SoftBreak
+, Code
+    "typ/meta/outline-00.typ"
+    ( line 5 , column 2 )
+    (Show
+       (Just
+          (FuncCall
+             (FieldAccess
+                (Ident (Identifier "where")) (Ident (Identifier "heading")))
+             [ KeyValArg (Identifier "level") (Literal (Int 2)) ]))
+       (Set
+          (Ident (Identifier "text"))
+          [ NormalArg (Literal (Numeric 10.0 Pt)) ]))
+, ParBreak
+, Code
+    "typ/meta/outline-00.typ"
+    ( line 7 , column 2 )
+    (FuncCall (Ident (Identifier "outline")) [])
+, ParBreak
+, Heading 1 [ Text "Einleitung" ]
+, Code
+    "typ/meta/outline-00.typ"
+    ( line 10 , column 2 )
+    (FuncCall
+       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 12)) ])
+, ParBreak
+, Heading 1 [ Text "Analyse" ]
+, Code
+    "typ/meta/outline-00.typ"
+    ( line 13 , column 2 )
+    (FuncCall
+       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 10)) ])
+, ParBreak
+, Code
+    "typ/meta/outline-00.typ"
+    ( line 15 , column 2 )
+    (Block
+       (Content
+          [ SoftBreak
+          , Code
+              "typ/meta/outline-00.typ"
+              ( line 16 , column 4 )
+              (Set
+                 (Ident (Identifier "heading"))
+                 [ KeyValArg (Identifier "outlined") (Literal (Boolean False)) ])
+          , SoftBreak
+          , Heading 2 [ Text "Methodik" ]
+          , Code
+              "typ/meta/outline-00.typ"
+              ( line 18 , column 4 )
+              (FuncCall
+                 (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 6)) ])
+          , ParBreak
+          ]))
+, ParBreak
+, Heading 2 [ Text "Verarbeitung" ]
+, Code
+    "typ/meta/outline-00.typ"
+    ( line 22 , column 2 )
+    (FuncCall
+       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 4)) ])
+, ParBreak
+, Heading 2 [ Text "Programmierung" ]
+, RawBlock "rust" "fn main() {\n  panic!(\"in the disco\");\n}\n"
+, ParBreak
+, Heading 4 [ Text "Deep" , Space , Text "Stuff" ]
+, Text "Ok"
+, Space
+, Ellipsis
+, ParBreak
+, Code
+    "typ/meta/outline-00.typ"
+    ( line 34 , column 2 )
+    (Set
+       (Ident (Identifier "heading"))
+       [ KeyValArg (Identifier "numbering") (Literal (String "(I)")) ])
+, ParBreak
+, Heading
+    1
+    [ Code
+        "typ/meta/outline-00.typ"
+        ( line 36 , column 4 )
+        (FuncCall
+           (Ident (Identifier "text"))
+           [ NormalArg (Ident (Identifier "blue"))
+           , BlockArg [ Text "Zusammen" ]
+           ])
+    , Text "fassung"
+    ]
+, Code
+    "typ/meta/outline-00.typ"
+    ( line 37 , column 2 )
+    (FuncCall
+       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 10)) ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 outline(), 
+                 parbreak(), 
+                 heading(body: text(body: [Einleitung]), 
+                         level: 1, 
+                         numbering: "(1/a)"), 
+                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor]), 
+                 parbreak(), 
+                 heading(body: text(body: [Analyse]), 
+                         level: 1, 
+                         numbering: "(1/a)"), 
+                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do]), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 heading(body: text(body: [Methodik]), 
+                         level: 2, 
+                         numbering: "(1/a)", 
+                         outlined: false), 
+                 text(body: [Lorem ipsum dolor sit amet, consectetur]), 
+                 parbreak(), 
+                 parbreak(), 
+                 heading(body: text(body: [Verarbeitung]), 
+                         level: 2, 
+                         numbering: "(1/a)", 
+                         outlined: false), 
+                 text(body: [Lorem ipsum dolor sit]), 
+                 parbreak(), 
+                 heading(body: text(body: [Programmierung]), 
+                         level: 2, 
+                         numbering: "(1/a)", 
+                         outlined: false), 
+                 raw(block: true, 
+                     lang: "rust", 
+                     text: "fn main() {\n  panic!(\"in the disco\");\n}\n"), 
+                 parbreak(), 
+                 heading(body: text(body: [Deep Stuff]), 
+                         level: 4, 
+                         numbering: "(1/a)", 
+                         outlined: false), 
+                 text(body: [Ok …]), 
+                 parbreak(), 
+                 parbreak(), 
+                 heading(body: { text(body: text(body: [Zusammen]), 
+                                      color: rgb(0%,45%,85%,100%)), 
+                                 text(body: [fassung]) }, 
+                         level: 1, 
+                         numbering: "(I)", 
+                         outlined: false), 
+                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do]), 
+                 parbreak() })
diff --git a/test/typ/meta/query-before-after-00.out b/test/typ/meta/query-before-after-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/query-before-after-00.out
@@ -0,0 +1,181 @@
+--- parse tree ---
+[ Code
+    "typ/meta/query-before-after-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/query-before-after-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/query-before-after-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/meta/query-before-after-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "paper") (Literal (String "a7"))
+       , KeyValArg (Identifier "numbering") (Literal (String "1 / 1"))
+       , KeyValArg
+           (Identifier "margin")
+           (Dict
+              [ Reg ( Ident (Identifier "bottom") , Literal (Numeric 1.0 Cm) )
+              , Reg ( Ident (Identifier "rest") , Literal (Numeric 0.5 Cm) )
+              ])
+       ])
+, ParBreak
+, Code
+    "typ/meta/query-before-after-00.typ"
+    ( line 8 , column 2 )
+    (Show
+       (Just
+          (FuncCall
+             (FieldAccess
+                (Ident (Identifier "where")) (Ident (Identifier "heading")))
+             [ KeyValArg (Identifier "level") (Literal (Int 1))
+             , KeyValArg (Identifier "outlined") (Literal (Boolean True))
+             ]))
+       (FuncExpr
+          [ NormalParam (Identifier "it") ]
+          (Block
+             (Content
+                [ SoftBreak
+                , Code
+                    "typ/meta/query-before-after-00.typ"
+                    ( line 9 , column 4 )
+                    (Ident (Identifier "it"))
+                , ParBreak
+                , Code
+                    "typ/meta/query-before-after-00.typ"
+                    ( line 11 , column 4 )
+                    (Set
+                       (Ident (Identifier "text"))
+                       [ KeyValArg (Identifier "size") (Literal (Numeric 12.0 Pt))
+                       , KeyValArg (Identifier "weight") (Literal (String "regular"))
+                       ])
+                , SoftBreak
+                , Code
+                    "typ/meta/query-before-after-00.typ"
+                    ( line 12 , column 4 )
+                    (FuncCall
+                       (Ident (Identifier "outline"))
+                       [ KeyValArg
+                           (Identifier "title") (Literal (String "Chapter outline"))
+                       , KeyValArg (Identifier "indent") (Literal (Boolean True))
+                       , KeyValArg
+                           (Identifier "target")
+                           (FuncCall
+                              (FieldAccess
+                                 (Ident (Identifier "before"))
+                                 (FuncCall
+                                    (FieldAccess
+                                       (Ident (Identifier "after"))
+                                       (FuncCall
+                                          (FieldAccess
+                                             (Ident (Identifier "or"))
+                                             (FuncCall
+                                                (FieldAccess
+                                                   (Ident (Identifier "where"))
+                                                   (Ident (Identifier "heading")))
+                                                [ KeyValArg (Identifier "level") (Literal (Int 1))
+                                                ]))
+                                          [ NormalArg
+                                              (FuncCall
+                                                 (FieldAccess
+                                                    (Ident (Identifier "where"))
+                                                    (Ident (Identifier "heading")))
+                                                 [ KeyValArg (Identifier "level") (Literal (Int 2))
+                                                 ])
+                                          ]))
+                                    [ NormalArg
+                                        (FuncCall
+                                           (FieldAccess
+                                              (Ident (Identifier "location"))
+                                              (Ident (Identifier "it")))
+                                           [])
+                                    , KeyValArg (Identifier "inclusive") (Literal (Boolean True))
+                                    ]))
+                              [ NormalArg
+                                  (FuncCall
+                                     (FieldAccess
+                                        (Ident (Identifier "after"))
+                                        (FuncCall
+                                           (FieldAccess
+                                              (Ident (Identifier "where"))
+                                              (Ident (Identifier "heading")))
+                                           [ KeyValArg (Identifier "level") (Literal (Int 1))
+                                           , KeyValArg
+                                               (Identifier "outlined") (Literal (Boolean True))
+                                           ]))
+                                     [ NormalArg
+                                         (FuncCall
+                                            (FieldAccess
+                                               (Ident (Identifier "location"))
+                                               (Ident (Identifier "it")))
+                                            [])
+                                     , KeyValArg (Identifier "inclusive") (Literal (Boolean False))
+                                     ])
+                              , KeyValArg (Identifier "inclusive") (Literal (Boolean False))
+                              ])
+                       ])
+                , ParBreak
+                ]))))
+, ParBreak
+, Code
+    "typ/meta/query-before-after-00.typ"
+    ( line 28 , column 2 )
+    (Set
+       (Ident (Identifier "heading"))
+       [ KeyValArg (Identifier "outlined") (Literal (Boolean True))
+       , KeyValArg (Identifier "numbering") (Literal (String "1."))
+       ])
+, ParBreak
+, Heading 1 [ Text "Section" , Space , Text "1" ]
+, Heading 2 [ Text "Subsection" , Space , Text "1" ]
+, Heading 2 [ Text "Subsection" , Space , Text "2" ]
+, Heading 3 [ Text "Subsubsection" , Space , Text "1" ]
+, Heading 3 [ Text "Subsubsection" , Space , Text "2" ]
+, Heading 2 [ Text "Subsection" , Space , Text "3" ]
+, Heading 1 [ Text "Section" , Space , Text "2" ]
+, Heading 2 [ Text "Subsection" , Space , Text "1" ]
+, Heading 2 [ Text "Subsection" , Space , Text "2" ]
+, Heading 1 [ Text "Section" , Space , Text "3" ]
+, Heading 2 [ Text "Subsection" , Space , Text "1" ]
+, Heading 2 [ Text "Subsection" , Space , Text "2" ]
+, Heading 3 [ Text "Subsubsection" , Space , Text "1" ]
+, Heading 3 [ Text "Subsubsection" , Space , Text "2" ]
+, Heading 3 [ Text "Subsubsection" , Space , Text "3" ]
+, Heading 2 [ Text "Subsection" , Space , Text "3" ]
+]
+"typ/meta/query-before-after-00.typ" (line 12, column 4):
+Method "location" is not yet implemented or FieldAccess requires a dictionary
diff --git a/test/typ/meta/query-before-after-01.out b/test/typ/meta/query-before-after-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/query-before-after-01.out
@@ -0,0 +1,187 @@
+--- parse tree ---
+[ Code
+    "typ/meta/query-before-after-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/query-before-after-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/query-before-after-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, ParBreak
+, Code
+    "typ/meta/query-before-after-01.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "paper") (Literal (String "a7"))
+       , KeyValArg (Identifier "numbering") (Literal (String "1 / 1"))
+       , KeyValArg
+           (Identifier "margin")
+           (Dict
+              [ Reg ( Ident (Identifier "bottom") , Literal (Numeric 1.0 Cm) )
+              , Reg ( Ident (Identifier "rest") , Literal (Numeric 0.5 Cm) )
+              ])
+       ])
+, ParBreak
+, Code
+    "typ/meta/query-before-after-01.typ"
+    ( line 9 , column 2 )
+    (Set
+       (Ident (Identifier "heading"))
+       [ KeyValArg (Identifier "outlined") (Literal (Boolean True))
+       , KeyValArg (Identifier "numbering") (Literal (String "1."))
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/meta/query-before-after-01.typ"
+    ( line 12 , column 2 )
+    (FuncCall
+       (Ident (Identifier "locate"))
+       [ NormalArg
+           (FuncExpr
+              [ NormalParam (Identifier "loc") ]
+              (Block
+                 (Content
+                    [ SoftBreak
+                    , Text "Non"
+                    , Text "-"
+                    , Text "outlined"
+                    , Space
+                    , Text "elements"
+                    , Text ":"
+                    , SoftBreak
+                    , Code
+                        "typ/meta/query-before-after-01.typ"
+                        ( line 14 , column 4 )
+                        (FuncCall
+                           (FieldAccess
+                              (Ident (Identifier "join"))
+                              (FuncCall
+                                 (FieldAccess
+                                    (Ident (Identifier "map"))
+                                    (FuncCall
+                                       (Ident (Identifier "query"))
+                                       [ NormalArg
+                                           (FuncCall
+                                              (FieldAccess
+                                                 (Ident (Identifier "and"))
+                                                 (FuncCall
+                                                    (Ident (Identifier "selector"))
+                                                    [ NormalArg (Ident (Identifier "heading")) ]))
+                                              [ NormalArg
+                                                  (FuncCall
+                                                     (FieldAccess
+                                                        (Ident (Identifier "where"))
+                                                        (Ident (Identifier "heading")))
+                                                     [ KeyValArg
+                                                         (Identifier "outlined")
+                                                         (Literal (Boolean False))
+                                                     ])
+                                              ])
+                                       , NormalArg (Ident (Identifier "loc"))
+                                       ]))
+                                 [ NormalArg
+                                     (FuncExpr
+                                        [ NormalParam (Identifier "it") ]
+                                        (FieldAccess
+                                           (Ident (Identifier "body")) (Ident (Identifier "it"))))
+                                 ]))
+                           [ NormalArg (Literal (String ", ")) ])
+                    , ParBreak
+                    ])))
+       ])
+, ParBreak
+, Code
+    "typ/meta/query-before-after-01.typ"
+    ( line 18 , column 2 )
+    (FuncCall
+       (Ident (Identifier "heading"))
+       [ NormalArg (Literal (String "A"))
+       , KeyValArg (Identifier "outlined") (Literal (Boolean False))
+       ])
+, SoftBreak
+, Code
+    "typ/meta/query-before-after-01.typ"
+    ( line 19 , column 2 )
+    (FuncCall
+       (Ident (Identifier "heading"))
+       [ NormalArg (Literal (String "B"))
+       , KeyValArg (Identifier "outlined") (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/meta/query-before-after-01.typ"
+    ( line 20 , column 2 )
+    (FuncCall
+       (Ident (Identifier "heading"))
+       [ NormalArg (Literal (String "C"))
+       , KeyValArg (Identifier "outlined") (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/meta/query-before-after-01.typ"
+    ( line 21 , column 2 )
+    (FuncCall
+       (Ident (Identifier "heading"))
+       [ NormalArg (Literal (String "D"))
+       , KeyValArg (Identifier "outlined") (Literal (Boolean False))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { parbreak(), 
+                 parbreak(), 
+                 parbreak(), 
+                 locate(func: ), 
+                 parbreak(), 
+                 heading(body: [A], 
+                         numbering: "1.", 
+                         outlined: false), 
+                 text(body: [
+]), 
+                 heading(body: [B], 
+                         numbering: "1.", 
+                         outlined: true), 
+                 text(body: [
+]), 
+                 heading(body: [C], 
+                         numbering: "1.", 
+                         outlined: true), 
+                 text(body: [
+]), 
+                 heading(body: [D], 
+                         numbering: "1.", 
+                         outlined: false), 
+                 parbreak() })
diff --git a/test/typ/meta/query-figure-00.out b/test/typ/meta/query-figure-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/query-figure-00.out
@@ -0,0 +1,259 @@
+--- parse tree ---
+[ Code
+    "typ/meta/query-figure-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/query-figure-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/query-figure-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/meta/query-figure-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "paper") (Literal (String "a7"))
+       , KeyValArg (Identifier "numbering") (Literal (String "1 / 1"))
+       , KeyValArg
+           (Identifier "margin")
+           (Dict
+              [ Reg ( Ident (Identifier "bottom") , Literal (Numeric 1.0 Cm) )
+              , Reg ( Ident (Identifier "rest") , Literal (Numeric 0.5 Cm) )
+              ])
+       ])
+, ParBreak
+, Code
+    "typ/meta/query-figure-00.typ"
+    ( line 8 , column 2 )
+    (Set
+       (Ident (Identifier "figure"))
+       [ KeyValArg (Identifier "numbering") (Literal (String "I")) ])
+, SoftBreak
+, Code
+    "typ/meta/query-figure-00.typ"
+    ( line 9 , column 2 )
+    (Show
+       (Just (Ident (Identifier "figure")))
+       (Set
+          (Ident (Identifier "image"))
+          [ KeyValArg (Identifier "width") (Literal (Numeric 80.0 Percent))
+          ]))
+, ParBreak
+, Heading
+    1 [ Text "List" , Space , Text "of" , Space , Text "Figures" ]
+, Code
+    "typ/meta/query-figure-00.typ"
+    ( line 12 , column 2 )
+    (FuncCall
+       (Ident (Identifier "locate"))
+       [ NormalArg
+           (FuncExpr
+              [ NormalParam (Identifier "it") ]
+              (Block
+                 (CodeBlock
+                    [ Let
+                        (BasicBind (Just (Identifier "elements")))
+                        (FuncCall
+                           (Ident (Identifier "query"))
+                           [ NormalArg
+                               (FuncCall
+                                  (FieldAccess
+                                     (Ident (Identifier "after"))
+                                     (FuncCall
+                                        (Ident (Identifier "selector"))
+                                        [ NormalArg (Ident (Identifier "figure")) ]))
+                                  [ NormalArg (Ident (Identifier "it")) ])
+                           , NormalArg (Ident (Identifier "it"))
+                           ])
+                    , For
+                        (BasicBind (Just (Identifier "it")))
+                        (Ident (Identifier "elements"))
+                        (Block
+                           (Content
+                              [ SoftBreak
+                              , Text "Figure"
+                              , SoftBreak
+                              , Code
+                                  "typ/meta/query-figure-00.typ"
+                                  ( line 16 , column 6 )
+                                  (FuncCall
+                                     (Ident (Identifier "numbering"))
+                                     [ NormalArg
+                                         (FieldAccess
+                                            (Ident (Identifier "numbering"))
+                                            (Ident (Identifier "it")))
+                                     , SpreadArg
+                                         (FuncCall
+                                            (FieldAccess
+                                               (Ident (Identifier "at"))
+                                               (FuncCall
+                                                  (Ident (Identifier "counter"))
+                                                  [ NormalArg (Ident (Identifier "figure")) ]))
+                                            [ NormalArg
+                                                (FuncCall
+                                                   (FieldAccess
+                                                      (Ident (Identifier "location"))
+                                                      (Ident (Identifier "it")))
+                                                   [])
+                                            ])
+                                     ])
+                              , Text ":"
+                              , SoftBreak
+                              , Code
+                                  "typ/meta/query-figure-00.typ"
+                                  ( line 18 , column 6 )
+                                  (FieldAccess
+                                     (Ident (Identifier "caption")) (Ident (Identifier "it")))
+                              , SoftBreak
+                              , Code
+                                  "typ/meta/query-figure-00.typ"
+                                  ( line 19 , column 6 )
+                                  (FuncCall
+                                     (Ident (Identifier "box"))
+                                     [ KeyValArg (Identifier "width") (Literal (Numeric 1.0 Fr))
+                                     , NormalArg
+                                         (FuncCall
+                                            (Ident (Identifier "repeat")) [ BlockArg [ Text "." ] ])
+                                     ])
+                              , SoftBreak
+                              , Code
+                                  "typ/meta/query-figure-00.typ"
+                                  ( line 20 , column 6 )
+                                  (FuncCall
+                                     (FieldAccess
+                                        (Ident (Identifier "first"))
+                                        (FuncCall
+                                           (FieldAccess
+                                              (Ident (Identifier "at"))
+                                              (FuncCall
+                                                 (Ident (Identifier "counter"))
+                                                 [ NormalArg (Ident (Identifier "page")) ]))
+                                           [ NormalArg
+                                               (FuncCall
+                                                  (FieldAccess
+                                                     (Ident (Identifier "location"))
+                                                     (Ident (Identifier "it")))
+                                                  [])
+                                           ]))
+                                     [])
+                              , Space
+                              , HardBreak
+                              ]))
+                    ])))
+       ])
+, ParBreak
+, Code
+    "typ/meta/query-figure-00.typ"
+    ( line 24 , column 2 )
+    (FuncCall
+       (Ident (Identifier "figure"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "image"))
+              [ NormalArg (Literal (String "/assets/files/glacier.jpg")) ])
+       , KeyValArg
+           (Identifier "caption")
+           (Block (Content [ Text "Glacier" , Space , Text "melting" ]))
+       ])
+, ParBreak
+, Code
+    "typ/meta/query-figure-00.typ"
+    ( line 29 , column 2 )
+    (FuncCall
+       (Ident (Identifier "figure"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ BlockArg
+                  [ Text "Just"
+                  , Space
+                  , Text "some"
+                  , Space
+                  , Text "stand"
+                  , Text "-"
+                  , Text "in"
+                  , Space
+                  , Text "text"
+                  ]
+              ])
+       , KeyValArg (Identifier "kind") (Ident (Identifier "image"))
+       , KeyValArg (Identifier "supplement") (Literal (String "Figure"))
+       , KeyValArg
+           (Identifier "caption")
+           (Block
+              (Content
+                 [ Text "Stand" , Text "-" , Text "in" , Space , Text "text" ]))
+       ])
+, ParBreak
+, Code
+    "typ/meta/query-figure-00.typ"
+    ( line 36 , column 2 )
+    (FuncCall
+       (Ident (Identifier "figure"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "image"))
+              [ NormalArg (Literal (String "/assets/files/tiger.jpg")) ])
+       , KeyValArg
+           (Identifier "caption")
+           (Block (Content [ Text "Tiger" , Space , Text "world" ]))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 heading(body: text(body: [List of Figures]), 
+                         level: 1), 
+                 locate(func: ), 
+                 parbreak(), 
+                 figure(body: image(path: "/assets/files/glacier.jpg"), 
+                        caption: text(body: [Glacier melting]), 
+                        numbering: "I"), 
+                 parbreak(), 
+                 figure(body: rect(body: text(body: [Just some stand-in text])), 
+                        caption: text(body: [Stand-in text]), 
+                        kind: , 
+                        numbering: "I", 
+                        supplement: "Figure"), 
+                 parbreak(), 
+                 figure(body: image(path: "/assets/files/tiger.jpg"), 
+                        caption: text(body: [Tiger world]), 
+                        numbering: "I"), 
+                 parbreak() })
diff --git a/test/typ/meta/query-header-00.out b/test/typ/meta/query-header-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/query-header-00.out
@@ -0,0 +1,192 @@
+--- parse tree ---
+[ Code
+    "typ/meta/query-header-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/query-header-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/query-header-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/meta/query-header-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "paper") (Literal (String "a7"))
+       , KeyValArg
+           (Identifier "margin")
+           (Dict
+              [ Reg ( Ident (Identifier "y") , Literal (Numeric 1.0 Cm) )
+              , Reg ( Ident (Identifier "x") , Literal (Numeric 0.5 Cm) )
+              ])
+       , KeyValArg
+           (Identifier "header")
+           (Block
+              (CodeBlock
+                 [ FuncCall
+                     (Ident (Identifier "smallcaps"))
+                     [ BlockArg [ Text "Typst" , Space , Text "Academy" ] ]
+                 , FuncCall
+                     (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 1.0 Fr)) ]
+                 , FuncCall
+                     (Ident (Identifier "locate"))
+                     [ NormalArg
+                         (FuncExpr
+                            [ NormalParam (Identifier "it") ]
+                            (Block
+                               (CodeBlock
+                                  [ Let
+                                      (BasicBind (Just (Identifier "after")))
+                                      (FuncCall
+                                         (Ident (Identifier "query"))
+                                         [ NormalArg
+                                             (FuncCall
+                                                (FieldAccess
+                                                   (Ident (Identifier "after"))
+                                                   (FuncCall
+                                                      (Ident (Identifier "selector"))
+                                                      [ NormalArg (Ident (Identifier "heading")) ]))
+                                                [ NormalArg (Ident (Identifier "it")) ])
+                                         , NormalArg (Ident (Identifier "it"))
+                                         ])
+                                  , Let
+                                      (BasicBind (Just (Identifier "before")))
+                                      (FuncCall
+                                         (Ident (Identifier "query"))
+                                         [ NormalArg
+                                             (FuncCall
+                                                (FieldAccess
+                                                   (Ident (Identifier "before"))
+                                                   (FuncCall
+                                                      (Ident (Identifier "selector"))
+                                                      [ NormalArg (Ident (Identifier "heading")) ]))
+                                                [ NormalArg (Ident (Identifier "it")) ])
+                                         , NormalArg (Ident (Identifier "it"))
+                                         ])
+                                  , Let
+                                      (BasicBind (Just (Identifier "elem")))
+                                      (If
+                                         [ ( Not
+                                               (Equals
+                                                  (FuncCall
+                                                     (FieldAccess
+                                                        (Ident (Identifier "len"))
+                                                        (Ident (Identifier "before")))
+                                                     [])
+                                                  (Literal (Int 0)))
+                                           , Block
+                                               (CodeBlock
+                                                  [ FuncCall
+                                                      (FieldAccess
+                                                         (Ident (Identifier "last"))
+                                                         (Ident (Identifier "before")))
+                                                      []
+                                                  ])
+                                           )
+                                         , ( Not
+                                               (Equals
+                                                  (FuncCall
+                                                     (FieldAccess
+                                                        (Ident (Identifier "len"))
+                                                        (Ident (Identifier "after")))
+                                                     [])
+                                                  (Literal (Int 0)))
+                                           , Block
+                                               (CodeBlock
+                                                  [ FuncCall
+                                                      (FieldAccess
+                                                         (Ident (Identifier "first"))
+                                                         (Ident (Identifier "after")))
+                                                      []
+                                                  ])
+                                           )
+                                         ])
+                                  , FuncCall
+                                      (Ident (Identifier "emph"))
+                                      [ NormalArg
+                                          (FieldAccess
+                                             (Ident (Identifier "body"))
+                                             (Ident (Identifier "elem")))
+                                      ]
+                                  ])))
+                     ]
+                 ]))
+       ])
+, ParBreak
+, Code
+    "typ/meta/query-header-00.typ"
+    ( line 21 , column 2 )
+    (FuncCall (Ident (Identifier "outline")) [])
+, ParBreak
+, Heading 1 [ Text "Introduction" ]
+, Code
+    "typ/meta/query-header-00.typ"
+    ( line 24 , column 2 )
+    (FuncCall
+       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 35)) ])
+, ParBreak
+, Heading 1 [ Text "Background" ]
+, Code
+    "typ/meta/query-header-00.typ"
+    ( line 27 , column 2 )
+    (FuncCall
+       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 35)) ])
+, ParBreak
+, Heading 1 [ Text "Approach" ]
+, Code
+    "typ/meta/query-header-00.typ"
+    ( line 30 , column 2 )
+    (FuncCall
+       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 60)) ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 outline(), 
+                 parbreak(), 
+                 heading(body: text(body: [Introduction]), 
+                         level: 1), 
+                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo]), 
+                 parbreak(), 
+                 heading(body: text(body: [Background]), 
+                         level: 1), 
+                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo]), 
+                 parbreak(), 
+                 heading(body: text(body: [Approach]), 
+                         level: 1), 
+                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in]), 
+                 parbreak() })
diff --git a/test/typ/meta/ref-00.out b/test/typ/meta/ref-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/ref-00.out
@@ -0,0 +1,98 @@
+--- parse tree ---
+[ Code
+    "typ/meta/ref-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/ref-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/ref-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/meta/ref-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "heading"))
+       [ KeyValArg (Identifier "numbering") (Literal (String "1.")) ])
+, ParBreak
+, Heading 1 [ Text "Introduction" ]
+, Code "typ/meta/ref-00.typ" ( line 4 , column 16 ) (Label "intro")
+, SoftBreak
+, Text "See"
+, Space
+, Ref "setup" (Literal Auto)
+, Text "."
+, ParBreak
+, Heading 2 [ Text "Setup" ]
+, Code "typ/meta/ref-00.typ" ( line 7 , column 10 ) (Label "setup")
+, SoftBreak
+, Text "As"
+, Space
+, Text "seen"
+, Space
+, Text "in"
+, Space
+, Ref "intro" (Literal Auto)
+, Text ","
+, Space
+, Text "we"
+, Space
+, Text "proceed"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 heading(body: text(body: [Introduction]), 
+                         level: 1, 
+                         numbering: "1."), 
+                 <intro>, 
+                 text(body: [
+See ]), 
+                 ref(supplement: auto, 
+                     target: <setup>), 
+                 text(body: [.]), 
+                 parbreak(), 
+                 heading(body: text(body: [Setup]), 
+                         level: 2, 
+                         numbering: "1."), 
+                 <setup>, 
+                 text(body: [
+As seen in ]), 
+                 ref(supplement: auto, 
+                     target: <intro>), 
+                 text(body: [, we proceed.]), 
+                 parbreak() })
diff --git a/test/typ/meta/ref-01.out b/test/typ/meta/ref-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/ref-01.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/meta/ref-02.out b/test/typ/meta/ref-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/ref-02.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/meta/ref-03.out b/test/typ/meta/ref-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/ref-03.out
@@ -0,0 +1,166 @@
+--- parse tree ---
+[ Code
+    "typ/meta/ref-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/ref-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/ref-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, ParBreak
+, Code
+    "typ/meta/ref-03.typ"
+    ( line 3 , column 2 )
+    (Show
+       (Just (Ident (Identifier "ref")))
+       (FuncExpr
+          [ NormalParam (Identifier "it") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( And
+                          (Not
+                             (Equals
+                                (FieldAccess
+                                   (Ident (Identifier "element")) (Ident (Identifier "it")))
+                                (Literal None)))
+                          (Equals
+                             (FuncCall
+                                (FieldAccess
+                                   (Ident (Identifier "func"))
+                                   (FieldAccess
+                                      (Ident (Identifier "element")) (Ident (Identifier "it"))))
+                                [])
+                             (Ident (Identifier "figure")))
+                      , Block
+                          (CodeBlock
+                             [ Let
+                                 (BasicBind (Just (Identifier "element")))
+                                 (FieldAccess
+                                    (Ident (Identifier "element")) (Ident (Identifier "it")))
+                             , Literal (String "[")
+                             , FieldAccess
+                                 (Ident (Identifier "supplement")) (Ident (Identifier "element"))
+                             , Literal (String "-")
+                             , FuncCall
+                                 (Ident (Identifier "str"))
+                                 [ NormalArg
+                                     (FuncCall
+                                        (FieldAccess
+                                           (Ident (Identifier "at"))
+                                           (FuncCall
+                                              (FieldAccess
+                                                 (Ident (Identifier "at"))
+                                                 (FieldAccess
+                                                    (Ident (Identifier "counter"))
+                                                    (Ident (Identifier "element"))))
+                                              [ NormalArg
+                                                  (FuncCall
+                                                     (FieldAccess
+                                                        (Ident (Identifier "location"))
+                                                        (Ident (Identifier "element")))
+                                                     [])
+                                              ]))
+                                        [ NormalArg (Literal (Int 0)) ])
+                                 ]
+                             , Literal (String "]")
+                             ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block (CodeBlock [ Ident (Identifier "it") ])
+                      )
+                    ]
+                ]))))
+, ParBreak
+, Code
+    "typ/meta/ref-03.typ"
+    ( line 17 , column 2 )
+    (FuncCall
+       (Ident (Identifier "figure"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "image"))
+              [ NormalArg (Literal (String "/assets/files/cylinder.svg"))
+              , KeyValArg (Identifier "height") (Literal (Numeric 3.0 Cm))
+              ])
+       , KeyValArg
+           (Identifier "caption")
+           (Block (Content [ Text "A" , Space , Text "sylinder" , Text "." ]))
+       , KeyValArg (Identifier "supplement") (Literal (String "Fig"))
+       ])
+, Space
+, Code "typ/meta/ref-03.typ" ( line 21 , column 3 ) (Label "fig1")
+, ParBreak
+, Code
+    "typ/meta/ref-03.typ"
+    ( line 23 , column 2 )
+    (FuncCall
+       (Ident (Identifier "figure"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "image"))
+              [ NormalArg (Literal (String "/assets/files/tiger.jpg"))
+              , KeyValArg (Identifier "height") (Literal (Numeric 3.0 Cm))
+              ])
+       , KeyValArg
+           (Identifier "caption")
+           (Block (Content [ Text "A" , Space , Text "tiger" , Text "." ]))
+       , KeyValArg (Identifier "supplement") (Literal (String "Figg"))
+       ])
+, Space
+, Code "typ/meta/ref-03.typ" ( line 27 , column 3 ) (Label "fig2")
+, ParBreak
+, Code
+    "typ/meta/ref-03.typ"
+    ( line 29 , column 2 )
+    (FuncCall
+       (Ident (Identifier "figure"))
+       [ NormalArg
+           (Block
+              (Content [ Equation True [ Text "A" , Text "=" , Text "1" ] ]))
+       , KeyValArg (Identifier "kind") (Literal (String "equation"))
+       , KeyValArg (Identifier "supplement") (Literal (String "Equa"))
+       ])
+, Space
+, Code "typ/meta/ref-03.typ" ( line 34 , column 3 ) (Label "eq1")
+, SoftBreak
+, Ref "fig1" (Literal Auto)
+, ParBreak
+, Ref "fig2" (Literal Auto)
+, ParBreak
+, Ref "eq1" (Literal Auto)
+, ParBreak
+]
+"typ/meta/ref-03.typ" (line 34, column 3):
+Content does not have a method "element" or FieldAccess requires a dictionary
diff --git a/test/typ/meta/ref-04.out b/test/typ/meta/ref-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/ref-04.out
@@ -0,0 +1,157 @@
+--- parse tree ---
+[ Code
+    "typ/meta/ref-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/ref-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/ref-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/meta/ref-04.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "heading"))
+       [ KeyValArg
+           (Identifier "numbering")
+           (FuncExpr
+              [ SinkParam (Just (Identifier "nums")) ]
+              (Block
+                 (CodeBlock
+                    [ FuncCall
+                        (FieldAccess
+                           (Ident (Identifier "join"))
+                           (FuncCall
+                              (FieldAccess
+                                 (Ident (Identifier "map"))
+                                 (FuncCall
+                                    (FieldAccess
+                                       (Ident (Identifier "pos")) (Ident (Identifier "nums")))
+                                    []))
+                              [ NormalArg (Ident (Identifier "str")) ]))
+                        [ NormalArg (Literal (String ".")) ]
+                    ])))
+       , KeyValArg
+           (Identifier "supplement") (Block (Content [ Text "Chapt" ]))
+       ])
+, ParBreak
+, Code
+    "typ/meta/ref-04.typ"
+    ( line 6 , column 2 )
+    (Show
+       (Just (Ident (Identifier "ref")))
+       (FuncExpr
+          [ NormalParam (Identifier "it") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( And
+                          (Not
+                             (Equals
+                                (FieldAccess
+                                   (Ident (Identifier "element")) (Ident (Identifier "it")))
+                                (Literal None)))
+                          (Equals
+                             (FuncCall
+                                (FieldAccess
+                                   (Ident (Identifier "func"))
+                                   (FieldAccess
+                                      (Ident (Identifier "element")) (Ident (Identifier "it"))))
+                                [])
+                             (Ident (Identifier "heading")))
+                      , Block
+                          (CodeBlock
+                             [ Let
+                                 (BasicBind (Just (Identifier "element")))
+                                 (FieldAccess
+                                    (Ident (Identifier "element")) (Ident (Identifier "it")))
+                             , Literal (String "[")
+                             , FuncCall
+                                 (Ident (Identifier "emph"))
+                                 [ NormalArg
+                                     (FieldAccess
+                                        (Ident (Identifier "supplement"))
+                                        (Ident (Identifier "element")))
+                                 ]
+                             , Literal (String "-")
+                             , FuncCall
+                                 (Ident (Identifier "numbering"))
+                                 [ NormalArg
+                                     (FieldAccess
+                                        (Ident (Identifier "numbering"))
+                                        (Ident (Identifier "element")))
+                                 , SpreadArg
+                                     (FuncCall
+                                        (FieldAccess
+                                           (Ident (Identifier "at"))
+                                           (FuncCall
+                                              (Ident (Identifier "counter"))
+                                              [ NormalArg (Ident (Identifier "heading")) ]))
+                                        [ NormalArg
+                                            (FuncCall
+                                               (FieldAccess
+                                                  (Ident (Identifier "location"))
+                                                  (Ident (Identifier "element")))
+                                               [])
+                                        ])
+                                 ]
+                             , Literal (String "]")
+                             ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block (CodeBlock [ Ident (Identifier "it") ])
+                      )
+                    ]
+                ]))))
+, ParBreak
+, Heading 1 [ Text "Introduction" ]
+, Code
+    "typ/meta/ref-04.typ" ( line 19 , column 16 ) (Label "intro")
+, ParBreak
+, Heading 1 [ Text "Summary" ]
+, Code "typ/meta/ref-04.typ" ( line 21 , column 11 ) (Label "sum")
+, ParBreak
+, Heading 2 [ Text "Subsection" ]
+, Code "typ/meta/ref-04.typ" ( line 23 , column 15 ) (Label "sub")
+, ParBreak
+, Ref "intro" (Literal Auto)
+, ParBreak
+, Ref "sum" (Literal Auto)
+, ParBreak
+, Ref "sub" (Literal Auto)
+, ParBreak
+]
+"typ/meta/ref-04.typ" (line 23, column 15):
+Content does not have a method "element" or FieldAccess requires a dictionary
diff --git a/test/typ/meta/ref-05.out b/test/typ/meta/ref-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/ref-05.out
@@ -0,0 +1,147 @@
+--- parse tree ---
+[ Code
+    "typ/meta/ref-05.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/ref-05.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/ref-05.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, ParBreak
+, Code
+    "typ/meta/ref-05.typ"
+    ( line 3 , column 2 )
+    (Show
+       (Just (Ident (Identifier "ref")))
+       (FuncExpr
+          [ NormalParam (Identifier "it") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Not
+                          (Equals
+                             (FieldAccess
+                                (Ident (Identifier "element")) (Ident (Identifier "it")))
+                             (Literal None))
+                      , Block
+                          (CodeBlock
+                             [ If
+                                 [ ( Equals
+                                       (FuncCall
+                                          (FieldAccess
+                                             (Ident (Identifier "func"))
+                                             (FieldAccess
+                                                (Ident (Identifier "element"))
+                                                (Ident (Identifier "it"))))
+                                          [])
+                                       (Ident (Identifier "text"))
+                                   , Block
+                                       (CodeBlock
+                                          [ Let
+                                              (BasicBind (Just (Identifier "element")))
+                                              (FieldAccess
+                                                 (Ident (Identifier "element"))
+                                                 (Ident (Identifier "it")))
+                                          , Literal (String "[")
+                                          , Ident (Identifier "element")
+                                          , Literal (String "]")
+                                          ])
+                                   )
+                                 , ( Equals
+                                       (FuncCall
+                                          (FieldAccess
+                                             (Ident (Identifier "func"))
+                                             (FieldAccess
+                                                (Ident (Identifier "element"))
+                                                (Ident (Identifier "it"))))
+                                          [])
+                                       (Ident (Identifier "underline"))
+                                   , Block
+                                       (CodeBlock
+                                          [ Let
+                                              (BasicBind (Just (Identifier "element")))
+                                              (FieldAccess
+                                                 (Ident (Identifier "element"))
+                                                 (Ident (Identifier "it")))
+                                          , Literal (String "{")
+                                          , Ident (Identifier "element")
+                                          , Literal (String "}")
+                                          ])
+                                   )
+                                 , ( Literal (Boolean True)
+                                   , Block (CodeBlock [ Ident (Identifier "it") ])
+                                   )
+                                 ]
+                             ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block (CodeBlock [ Ident (Identifier "it") ])
+                      )
+                    ]
+                ]))))
+, ParBreak
+, Ref "txt" (Literal Auto)
+, ParBreak
+, Text "Ref"
+, Space
+, Text "something"
+, Space
+, Text "unreferable"
+, Space
+, Code "typ/meta/ref-05.typ" ( line 25 , column 27 ) (Label "txt")
+, ParBreak
+, Ref "under" (Literal Auto)
+, SoftBreak
+, Code
+    "typ/meta/ref-05.typ"
+    ( line 28 , column 2 )
+    (FuncCall
+       (Ident (Identifier "underline"))
+       [ BlockArg
+           [ SoftBreak
+           , Text "Some"
+           , Space
+           , Text "underline"
+           , Space
+           , Text "text"
+           , Text "."
+           , ParBreak
+           ]
+       ])
+, Space
+, Code "typ/meta/ref-05.typ" ( line 30 , column 3 ) (Label "under")
+, ParBreak
+]
+"typ/meta/ref-05.typ" (line 3, column 2):
+Content does not have a method "element" or FieldAccess requires a dictionary
diff --git a/test/typ/meta/state-00.out b/test/typ/meta/state-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/state-00.out
@@ -0,0 +1,139 @@
+--- parse tree ---
+[ Code
+    "typ/meta/state-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/state-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/state-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/meta/state-00.typ"
+    ( line 2 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "s")))
+       (FuncCall
+          (Ident (Identifier "state"))
+          [ NormalArg (Literal (String "hey"))
+          , NormalArg (Literal (String "a"))
+          ]))
+, SoftBreak
+, Code
+    "typ/meta/state-00.typ"
+    ( line 3 , column 2 )
+    (LetFunc
+       (Identifier "double")
+       [ NormalParam (Identifier "it") ]
+       (Times (Literal (Int 2)) (Ident (Identifier "it"))))
+, ParBreak
+, Code
+    "typ/meta/state-00.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (FieldAccess
+          (Ident (Identifier "update")) (Ident (Identifier "s")))
+       [ NormalArg (Ident (Identifier "double")) ])
+, SoftBreak
+, Code
+    "typ/meta/state-00.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (FieldAccess
+          (Ident (Identifier "update")) (Ident (Identifier "s")))
+       [ NormalArg (Ident (Identifier "double")) ])
+, SoftBreak
+, Equation True [ Text "2" , Text "+" , Text "3" ]
+, SoftBreak
+, Code
+    "typ/meta/state-00.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (FieldAccess
+          (Ident (Identifier "update")) (Ident (Identifier "s")))
+       [ NormalArg (Ident (Identifier "double")) ])
+, ParBreak
+, Text "Is"
+, Text ":"
+, Space
+, Code
+    "typ/meta/state-00.typ"
+    ( line 10 , column 6 )
+    (FuncCall
+       (FieldAccess
+          (Ident (Identifier "display")) (Ident (Identifier "s")))
+       [])
+, Text ","
+, SoftBreak
+, Text "Was"
+, Text ":"
+, Space
+, Code
+    "typ/meta/state-00.typ"
+    ( line 11 , column 7 )
+    (FuncCall
+       (Ident (Identifier "locate"))
+       [ NormalArg
+           (FuncExpr
+              [ NormalParam (Identifier "location") ]
+              (Block
+                 (CodeBlock
+                    [ Let
+                        (BasicBind (Just (Identifier "it")))
+                        (FuncCall
+                           (FieldAccess
+                              (Ident (Identifier "first"))
+                              (FuncCall
+                                 (Ident (Identifier "query"))
+                                 [ NormalArg
+                                     (FieldAccess
+                                        (Ident (Identifier "equation")) (Ident (Identifier "math")))
+                                 , NormalArg (Ident (Identifier "location"))
+                                 ]))
+                           [])
+                    , FuncCall
+                        (FieldAccess (Ident (Identifier "at")) (Ident (Identifier "s")))
+                        [ NormalArg
+                            (FuncCall
+                               (FieldAccess
+                                  (Ident (Identifier "location")) (Ident (Identifier "it")))
+                               [])
+                        ]
+                    ])))
+       ])
+, Text "."
+, ParBreak
+]
+"typ/meta/state-00.typ" (line 5, column 2):
+Content does not have a method "update" or FieldAccess requires a dictionary
diff --git a/test/typ/meta/state-01.out b/test/typ/meta/state-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/meta/state-01.out
@@ -0,0 +1,216 @@
+--- parse tree ---
+[ Code
+    "typ/meta/state-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/meta/state-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/meta/state-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/meta/state-01.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 200.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/meta/state-01.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ NormalArg (Literal (Numeric 8.0 Pt)) ])
+, ParBreak
+, Code
+    "typ/meta/state-01.typ"
+    ( line 5 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "ls")))
+       (FuncCall
+          (Ident (Identifier "state"))
+          [ NormalArg (Literal (String "lorem"))
+          , NormalArg
+              (FuncCall
+                 (FieldAccess
+                    (Ident (Identifier "split"))
+                    (FuncCall
+                       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 1000)) ]))
+                 [ NormalArg (Literal (String ".")) ])
+          ]))
+, SoftBreak
+, Code
+    "typ/meta/state-01.typ"
+    ( line 6 , column 2 )
+    (LetFunc
+       (Identifier "loremum")
+       [ NormalParam (Identifier "count") ]
+       (Block
+          (CodeBlock
+             [ FuncCall
+                 (FieldAccess
+                    (Ident (Identifier "display")) (Ident (Identifier "ls")))
+                 [ NormalArg
+                     (FuncExpr
+                        [ NormalParam (Identifier "list") ]
+                        (Plus
+                           (FuncCall
+                              (FieldAccess
+                                 (Ident (Identifier "trim"))
+                                 (FuncCall
+                                    (FieldAccess
+                                       (Ident (Identifier "join"))
+                                       (FuncCall
+                                          (FieldAccess
+                                             (Ident (Identifier "slice"))
+                                             (Ident (Identifier "list")))
+                                          [ NormalArg (Literal (Int 0))
+                                          , NormalArg (Ident (Identifier "count"))
+                                          ]))
+                                    [ NormalArg (Literal (String ".")) ]))
+                              [])
+                           (Literal (String "."))))
+                 ]
+             , FuncCall
+                 (FieldAccess
+                    (Ident (Identifier "update")) (Ident (Identifier "ls")))
+                 [ NormalArg
+                     (FuncExpr
+                        [ NormalParam (Identifier "list") ]
+                        (FuncCall
+                           (FieldAccess
+                              (Ident (Identifier "slice")) (Ident (Identifier "list")))
+                           [ NormalArg (Ident (Identifier "count")) ]))
+                 ]
+             ])))
+, ParBreak
+, Code
+    "typ/meta/state-01.typ"
+    ( line 11 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "fs")))
+       (FuncCall
+          (Ident (Identifier "state"))
+          [ NormalArg (Literal (String "fader"))
+          , NormalArg (Ident (Identifier "red"))
+          ]))
+, SoftBreak
+, Code
+    "typ/meta/state-01.typ"
+    ( line 12 , column 2 )
+    (LetFunc
+       (Identifier "trait")
+       [ NormalParam (Identifier "title") ]
+       (FuncCall
+          (Ident (Identifier "block"))
+          [ BlockArg
+              [ SoftBreak
+              , Code
+                  "typ/meta/state-01.typ"
+                  ( line 13 , column 4 )
+                  (FuncCall
+                     (FieldAccess
+                        (Ident (Identifier "display")) (Ident (Identifier "fs")))
+                     [ NormalArg
+                         (FuncExpr
+                            [ NormalParam (Identifier "color") ]
+                            (FuncCall
+                               (Ident (Identifier "text"))
+                               [ KeyValArg (Identifier "fill") (Ident (Identifier "color"))
+                               , BlockArg
+                                   [ SoftBreak
+                                   , Strong
+                                       [ Code
+                                           "typ/meta/state-01.typ"
+                                           ( line 14 , column 7 )
+                                           (Ident (Identifier "title"))
+                                       , Text ":"
+                                       ]
+                                   , Space
+                                   , Code
+                                       "typ/meta/state-01.typ"
+                                       ( line 14 , column 16 )
+                                       (FuncCall
+                                          (Ident (Identifier "loremum"))
+                                          [ NormalArg (Literal (Int 1)) ])
+                                   , ParBreak
+                                   ]
+                               ]))
+                     ])
+              , SoftBreak
+              , Code
+                  "typ/meta/state-01.typ"
+                  ( line 16 , column 4 )
+                  (FuncCall
+                     (FieldAccess
+                        (Ident (Identifier "update")) (Ident (Identifier "fs")))
+                     [ NormalArg
+                         (FuncExpr
+                            [ NormalParam (Identifier "color") ]
+                            (FuncCall
+                               (FieldAccess
+                                  (Ident (Identifier "lighten")) (Ident (Identifier "color")))
+                               [ NormalArg (Literal (Numeric 30.0 Percent)) ]))
+                     ])
+              , ParBreak
+              ]
+          ]))
+, ParBreak
+, Code
+    "typ/meta/state-01.typ"
+    ( line 19 , column 2 )
+    (FuncCall
+       (Ident (Identifier "trait")) [ BlockArg [ Text "Boldness" ] ])
+, SoftBreak
+, Code
+    "typ/meta/state-01.typ"
+    ( line 20 , column 2 )
+    (FuncCall
+       (Ident (Identifier "trait")) [ BlockArg [ Text "Adventure" ] ])
+, SoftBreak
+, Code
+    "typ/meta/state-01.typ"
+    ( line 21 , column 2 )
+    (FuncCall
+       (Ident (Identifier "trait")) [ BlockArg [ Text "Fear" ] ])
+, SoftBreak
+, Code
+    "typ/meta/state-01.typ"
+    ( line 22 , column 2 )
+    (FuncCall
+       (Ident (Identifier "trait")) [ BlockArg [ Text "Anger" ] ])
+, ParBreak
+]
+"typ/meta/state-01.typ" (line 13, column 4):
+Content does not have a method "display" or FieldAccess requires a dictionary
diff --git a/test/typ/regression/addons/example.out b/test/typ/regression/addons/example.out
new file mode 100644
--- /dev/null
+++ b/test/typ/regression/addons/example.out
@@ -0,0 +1,55 @@
+--- parse tree ---
+[ Code
+    "typ/regression/addons/example.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/regression/addons/example.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/regression/addons/example.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/regression/addons/example.typ"
+    ( line 2 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "utf8string")))
+       (FuncCall
+          (Ident (Identifier "read"))
+          [ NormalArg (Literal (String "../something.txt")) ]))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak() })
diff --git a/test/typ/regression/issue1.out b/test/typ/regression/issue1.out
new file mode 100644
--- /dev/null
+++ b/test/typ/regression/issue1.out
@@ -0,0 +1,71 @@
+--- parse tree ---
+[ Code
+    "typ/regression/issue1.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/regression/issue1.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/regression/issue1.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/regression/issue1.typ"
+    ( line 2 , column 2 )
+    (LetFunc
+       (Identifier "foo")
+       [ NormalParam (Identifier "x") ]
+       (Block
+          (CodeBlock
+             [ Return
+                 (Just
+                    (Array [ Spr (Ident (Identifier "x")) , Reg (Literal (Int 5)) ]))
+             ])))
+, SoftBreak
+, Code
+    "typ/regression/issue1.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "foo"))
+       [ NormalArg
+           (Array [ Reg (Literal (Int 3)) , Reg (Literal (Int 4)) ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [(3, 4, 5)]), 
+                 parbreak() })
diff --git a/test/typ/regression/issue12.out b/test/typ/regression/issue12.out
new file mode 100644
--- /dev/null
+++ b/test/typ/regression/issue12.out
@@ -0,0 +1,61 @@
+--- parse tree ---
+[ Code
+    "typ/regression/issue12.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/regression/issue12.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/regression/issue12.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Text "he"
+, Quote '\''
+, Strong [ Text "llo" , Space , Text "World" ]
+, ParBreak
+, Text "l\8217"
+, Strong [ Text "exactitude" ]
+, ParBreak
+, Text "a*b_c_e"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+he’]), 
+                 strong(body: text(body: [llo World])), 
+                 parbreak(), 
+                 text(body: [l’]), 
+                 strong(body: text(body: [exactitude])), 
+                 parbreak(), 
+                 text(body: [a*b_c_e]), 
+                 parbreak() })
diff --git a/test/typ/regression/issue15.out b/test/typ/regression/issue15.out
new file mode 100644
--- /dev/null
+++ b/test/typ/regression/issue15.out
@@ -0,0 +1,70 @@
+--- parse tree ---
+[ Code
+    "typ/regression/issue15.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/regression/issue15.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/regression/issue15.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Equation
+    False
+    [ Code
+        "typ/regression/issue15.typ"
+        ( line 2 , column 2 )
+        (Ident (Identifier "dots"))
+    ]
+, SoftBreak
+, Equation
+    False
+    [ Code
+        "typ/regression/issue15.typ"
+        ( line 3 , column 2 )
+        (FieldAccess (Ident (Identifier "l")) (Ident (Identifier "quote")))
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: false, 
+                               body: text(body: […]), 
+                               numbering: none), 
+                 text(body: [
+]), 
+                 math.equation(block: false, 
+                               body: text(body: [“]), 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/regression/issue17.out b/test/typ/regression/issue17.out
new file mode 100644
--- /dev/null
+++ b/test/typ/regression/issue17.out
@@ -0,0 +1,223 @@
+--- parse tree ---
+[ Code
+    "typ/regression/issue17.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/regression/issue17.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/regression/issue17.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Equation
+    False
+    [ MAttach
+        Nothing
+        (Just (MGroup Nothing Nothing [ Text "b" ]))
+        (MGroup
+           Nothing
+           Nothing
+           [ Text "n" , MGroup (Just "(") (Just ")") [ Text "a" ] ])
+    ]
+, ParBreak
+, Equation
+    False
+    [ MAttach (Just (Text "1")) Nothing (Text "a")
+    , MGroup (Just "(") (Just ")") [ Text "x" ]
+    ]
+, ParBreak
+, Equation
+    False
+    [ MAttach
+        (Just
+           (MGroup
+              Nothing
+              Nothing
+              [ Text "f" , MGroup (Just "(") (Just ")") [ Text "x" ] ]))
+        Nothing
+        (Text "a")
+    ]
+, ParBreak
+, Equation
+    False
+    [ MAttach
+        (Just (MGroup Nothing Nothing [ Text "j" , Text "=" , Text "0" ]))
+        (Just (Text "3"))
+        (Code
+           "typ/regression/issue17.typ"
+           ( line 8 , column 2 )
+           (Ident (Identifier "sum")))
+    ]
+, ParBreak
+, Equation
+    False
+    [ MAttach
+        (Just (MGroup Nothing Nothing [ Text "j" , Text "=" , Text "0" ]))
+        (Just (Text "3"))
+        (Code
+           "typ/regression/issue17.typ"
+           ( line 10 , column 2 )
+           (Ident (Identifier "sum")))
+    ]
+, ParBreak
+, Equation
+    False
+    [ MAttach
+        (Just (Text "3"))
+        (Just (MGroup Nothing Nothing [ Text "j" , Text "=" , Text "0" ]))
+        (Code
+           "typ/regression/issue17.typ"
+           ( line 12 , column 2 )
+           (Ident (Identifier "sum")))
+    ]
+, ParBreak
+, Equation
+    False
+    [ MAttach
+        (Just (Text "3"))
+        (Just (MGroup Nothing Nothing [ Text "j" , Text "=" , Text "0" ]))
+        (Code
+           "typ/regression/issue17.typ"
+           ( line 14 , column 2 )
+           (Ident (Identifier "sum")))
+    ]
+, ParBreak
+, Equation
+    False
+    [ MAttach
+        (Just (MGroup Nothing Nothing [ Text "j" , Text "=" , Text "0" ]))
+        (Just
+           (Code
+              "typ/regression/issue17.typ"
+              ( line 16 , column 12 )
+              (Ident (Identifier "pi"))))
+        (Code
+           "typ/regression/issue17.typ"
+           ( line 16 , column 2 )
+           (Ident (Identifier "sum")))
+    ]
+, ParBreak
+, Equation
+    False
+    [ MAttach
+        (Just (MGroup Nothing Nothing [ Text "j" , Text "=" , Text "0" ]))
+        (Just
+           (Code
+              "typ/regression/issue17.typ"
+              ( line 18 , column 6 )
+              (Ident (Identifier "pi"))))
+        (Code
+           "typ/regression/issue17.typ"
+           ( line 18 , column 2 )
+           (Ident (Identifier "sum")))
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: false, 
+                               body: math.attach(b: none, 
+                                                 base: { text(body: [n]), 
+                                                         math.lr(body: ({ [(], 
+                                                                          text(body: [a]), 
+                                                                          [)] })) }, 
+                                                 t: text(body: [b])), 
+                               numbering: none), 
+                 parbreak(), 
+                 math.equation(block: false, 
+                               body: { math.attach(b: text(body: [1]), 
+                                                   base: text(body: [a]), 
+                                                   t: none), 
+                                       math.lr(body: ({ [(], 
+                                                        text(body: [x]), 
+                                                        [)] })) }, 
+                               numbering: none), 
+                 parbreak(), 
+                 math.equation(block: false, 
+                               body: math.attach(b: { text(body: [f]), 
+                                                      math.lr(body: ({ [(], 
+                                                                       text(body: [x]), 
+                                                                       [)] })) }, 
+                                                 base: text(body: [a]), 
+                                                 t: none), 
+                               numbering: none), 
+                 parbreak(), 
+                 math.equation(block: false, 
+                               body: math.attach(b: { text(body: [j]), 
+                                                      text(body: [=]), 
+                                                      text(body: [0]) }, 
+                                                 base: text(body: [∑]), 
+                                                 t: text(body: [3])), 
+                               numbering: none), 
+                 parbreak(), 
+                 math.equation(block: false, 
+                               body: math.attach(b: { text(body: [j]), 
+                                                      text(body: [=]), 
+                                                      text(body: [0]) }, 
+                                                 base: text(body: [∑]), 
+                                                 t: text(body: [3])), 
+                               numbering: none), 
+                 parbreak(), 
+                 math.equation(block: false, 
+                               body: math.attach(b: text(body: [3]), 
+                                                 base: text(body: [∑]), 
+                                                 t: { text(body: [j]), 
+                                                      text(body: [=]), 
+                                                      text(body: [0]) }), 
+                               numbering: none), 
+                 parbreak(), 
+                 math.equation(block: false, 
+                               body: math.attach(b: text(body: [3]), 
+                                                 base: text(body: [∑]), 
+                                                 t: { text(body: [j]), 
+                                                      text(body: [=]), 
+                                                      text(body: [0]) }), 
+                               numbering: none), 
+                 parbreak(), 
+                 math.equation(block: false, 
+                               body: math.attach(b: { text(body: [j]), 
+                                                      text(body: [=]), 
+                                                      text(body: [0]) }, 
+                                                 base: text(body: [∑]), 
+                                                 t: text(body: [π])), 
+                               numbering: none), 
+                 parbreak(), 
+                 math.equation(block: false, 
+                               body: math.attach(b: { text(body: [j]), 
+                                                      text(body: [=]), 
+                                                      text(body: [0]) }, 
+                                                 base: text(body: [∑]), 
+                                                 t: text(body: [π])), 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/regression/issue19.out b/test/typ/regression/issue19.out
new file mode 100644
--- /dev/null
+++ b/test/typ/regression/issue19.out
@@ -0,0 +1,89 @@
+--- parse tree ---
+[ Code
+    "typ/regression/issue19.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/regression/issue19.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/regression/issue19.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/regression/issue19.typ"
+    ( line 2 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "nums")))
+       (Array
+          [ Reg (Literal (Int 1))
+          , Reg (Literal None)
+          , Reg (Literal (Int 2))
+          ]))
+, SoftBreak
+, Code
+    "typ/regression/issue19.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (FieldAccess
+          (Ident (Identifier "map")) (Ident (Identifier "nums")))
+       [ NormalArg
+           (FuncExpr
+              [ NormalParam (Identifier "num") ]
+              (Block
+                 (CodeBlock
+                    [ If
+                        [ ( Equals (Ident (Identifier "num")) (Literal None)
+                          , Block (CodeBlock [ Return (Just (Literal (Int 1))) ])
+                          )
+                        ]
+                    , Return
+                        (Just
+                           (Dict
+                              [ Reg
+                                  ( FuncCall
+                                      (Ident (Identifier "str"))
+                                      [ NormalArg (Ident (Identifier "num")) ]
+                                  , Literal (Int 1)
+                                  )
+                              ]))
+                    ])))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [((1: 1), 1, (2: 1))]), 
+                 parbreak() })
diff --git a/test/typ/regression/issue2.out b/test/typ/regression/issue2.out
new file mode 100644
--- /dev/null
+++ b/test/typ/regression/issue2.out
@@ -0,0 +1,72 @@
+--- parse tree ---
+[ Code
+    "typ/regression/issue2.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/regression/issue2.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/regression/issue2.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Equation
+    False
+    [ Code
+        "typ/regression/issue2.typ"
+        ( line 2 , column 2 )
+        (FuncCall
+           (Ident (Identifier "lr"))
+           [ BlockArg
+               [ Code
+                   "typ/regression/issue2.typ"
+                   ( line 2 , column 6 )
+                   (FieldAccess
+                      (Ident (Identifier "alpha")) (Ident (Identifier "sym")))
+               , Code
+                   "typ/regression/issue2.typ"
+                   ( line 2 , column 16 )
+                   (FieldAccess
+                      (Ident (Identifier "beta")) (Ident (Identifier "sym")))
+               ]
+           ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: false, 
+                               body: math.lr(body: ({ text(body: [α]), 
+                                                      text(body: [β]) })), 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/regression/issue20.out b/test/typ/regression/issue20.out
new file mode 100644
--- /dev/null
+++ b/test/typ/regression/issue20.out
@@ -0,0 +1,63 @@
+--- parse tree ---
+[ Code
+    "typ/regression/issue20.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/regression/issue20.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/regression/issue20.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/regression/issue20.typ"
+    ( line 2 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "a")))
+       (Literal (String "\nThis is a\nmultiline string\n")))
+, SoftBreak
+, Code
+    "typ/regression/issue20.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (FieldAccess (Ident (Identifier "len")) (Ident (Identifier "a")))
+       [])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [28]), 
+                 parbreak() })
diff --git a/test/typ/regression/issue21.out b/test/typ/regression/issue21.out
new file mode 100644
--- /dev/null
+++ b/test/typ/regression/issue21.out
@@ -0,0 +1,68 @@
+--- parse tree ---
+[ Code
+    "typ/regression/issue21.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/regression/issue21.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/regression/issue21.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/regression/issue21.typ"
+    ( line 2 , column 2 )
+    (FuncCall
+       (Ident (Identifier "version"))
+       [ NormalArg (Literal (Int 1)) , NormalArg (Literal (Int 2)) ])
+, SoftBreak
+, Code
+    "typ/regression/issue21.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (FieldAccess
+          (Ident (Identifier "at"))
+          (FuncCall
+             (Ident (Identifier "version"))
+             [ NormalArg (Literal (Int 1)) , NormalArg (Literal (Int 2)) ]))
+       [ NormalArg (Literal (Int 3)) ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [1.2]), 
+                 text(body: [
+]), 
+                 text(body: [0]), 
+                 parbreak() })
diff --git a/test/typ/regression/issue21b.out b/test/typ/regression/issue21b.out
new file mode 100644
--- /dev/null
+++ b/test/typ/regression/issue21b.out
@@ -0,0 +1,83 @@
+--- parse tree ---
+[ Code
+    "typ/regression/issue21b.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/regression/issue21b.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/regression/issue21b.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/regression/issue21b.typ"
+    ( line 2 , column 2 )
+    (Import
+       (Literal (String "issue19.typ"))
+       (NoIdentifiers (Just (Identifier "zeke"))))
+, SoftBreak
+, Code
+    "typ/regression/issue21b.typ"
+    ( line 3 , column 2 )
+    (FieldAccess
+       (Ident (Identifier "nums")) (Ident (Identifier "zeke")))
+, SoftBreak
+, Code
+    "typ/regression/issue21b.typ"
+    ( line 4 , column 2 )
+    (Import
+       (Literal (String "issue20.typ"))
+       (SomeIdentifiers
+          [ ( Identifier "a" , Just (Identifier "multiline") ) ]))
+, SoftBreak
+, Code
+    "typ/regression/issue21b.typ"
+    ( line 5 , column 2 )
+    (Ident (Identifier "multiline"))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [(1, none, 2)]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+This is a
+multiline string
+]), 
+                 parbreak() })
diff --git a/test/typ/regression/issue23.out b/test/typ/regression/issue23.out
new file mode 100644
--- /dev/null
+++ b/test/typ/regression/issue23.out
@@ -0,0 +1,77 @@
+--- parse tree ---
+[ Code
+    "typ/regression/issue23.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/regression/issue23.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/regression/issue23.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/regression/issue23.typ"
+    ( line 2 , column 2 )
+    (LetFunc
+       (Identifier "fn")
+       []
+       (Block
+          (CodeBlock
+             [ Set
+                 (Ident (Identifier "text"))
+                 [ KeyValArg (Identifier "fill") (Ident (Identifier "red")) ]
+             , If
+                 [ ( Literal (Boolean True)
+                   , Block (Content [ SoftBreak , Text "test" , ParBreak ])
+                   )
+                 , ( Literal (Boolean True)
+                   , Block (Content [ SoftBreak , Text "test2" , ParBreak ])
+                   )
+                 ]
+             ])))
+, ParBreak
+, Code
+    "typ/regression/issue23.typ"
+    ( line 11 , column 2 )
+    (FuncCall (Ident (Identifier "fn")) [])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [
+test], 
+                      fill: rgb(100%,25%,21%,100%)), 
+                 parbreak(), 
+                 parbreak() })
diff --git a/test/typ/regression/issue25.out b/test/typ/regression/issue25.out
new file mode 100644
--- /dev/null
+++ b/test/typ/regression/issue25.out
@@ -0,0 +1,82 @@
+--- parse tree ---
+[ Code
+    "typ/regression/issue25.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/regression/issue25.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/regression/issue25.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/regression/issue25.typ"
+    ( line 2 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "x")))
+       (Dict [ Reg ( Ident (Identifier "a") , Literal (Int 5) ) ]))
+, SoftBreak
+, Code
+    "typ/regression/issue25.typ"
+    ( line 3 , column 2 )
+    (Let (BasicBind (Just (Identifier "key"))) (Literal (String "a")))
+, SoftBreak
+, Code
+    "typ/regression/issue25.typ"
+    ( line 4 , column 2 )
+    (Block
+       (CodeBlock
+          [ Assign
+              (FuncCall
+                 (FieldAccess (Ident (Identifier "at")) (Ident (Identifier "x")))
+                 [ NormalArg (Ident (Identifier "key")) ])
+              (Literal (Int 6))
+          ]))
+, SoftBreak
+, Code
+    "typ/regression/issue25.typ"
+    ( line 7 , column 2 )
+    (Ident (Identifier "x"))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [(a: 6)]), 
+                 parbreak() })
diff --git a/test/typ/regression/issue26.out b/test/typ/regression/issue26.out
new file mode 100644
--- /dev/null
+++ b/test/typ/regression/issue26.out
@@ -0,0 +1,68 @@
+--- parse tree ---
+[ Code
+    "typ/regression/issue26.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/regression/issue26.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/regression/issue26.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/regression/issue26.typ"
+    ( line 2 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "x")))
+       (Dict [ Reg ( Ident (Identifier "a") , Literal (Int 4) ) ]))
+, SoftBreak
+, Code
+    "typ/regression/issue26.typ"
+    ( line 3 , column 2 )
+    (Block
+       (CodeBlock
+          [ Assign
+              (FuncCall
+                 (FieldAccess (Ident (Identifier "at")) (Ident (Identifier "x")))
+                 [ NormalArg (Literal (String "b")) ])
+              (Literal (Int 5))
+          ]))
+, SoftBreak
+, Code
+    "typ/regression/issue26.typ"
+    ( line 6 , column 2 )
+    (Ident (Identifier "x"))
+, ParBreak
+]
+"typ/regression/issue26.typ" (line 3, column 2):
+Dictionary does not contain key "b"
diff --git a/test/typ/regression/issue3.out b/test/typ/regression/issue3.out
new file mode 100644
--- /dev/null
+++ b/test/typ/regression/issue3.out
@@ -0,0 +1,74 @@
+--- parse tree ---
+[ Code
+    "typ/regression/issue3.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/regression/issue3.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/regression/issue3.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/regression/issue3.typ"
+    ( line 2 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "alpha")))
+       (Dict
+          [ Reg
+              ( Ident (Identifier "named")
+              , Dict
+                  [ Reg ( Ident (Identifier "a") , Literal (Int 1) )
+                  , Reg ( Ident (Identifier "b") , Literal (Int 2) )
+                  ]
+              )
+          ]))
+, SoftBreak
+, Code
+    "typ/regression/issue3.typ"
+    ( line 3 , column 2 )
+    (Dict
+       [ Spr
+           (FieldAccess
+              (Ident (Identifier "named")) (Ident (Identifier "alpha")))
+       , Reg ( Ident (Identifier "c") , Literal (Int 3) )
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [(a: 1, b: 2, c: 3)]), 
+                 parbreak() })
diff --git a/test/typ/regression/issue41.out b/test/typ/regression/issue41.out
new file mode 100644
--- /dev/null
+++ b/test/typ/regression/issue41.out
@@ -0,0 +1,63 @@
+--- parse tree ---
+[ Code
+    "typ/regression/issue41.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/regression/issue41.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/regression/issue41.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Equation
+    False
+    [ MAttach
+        (Just (Text "2"))
+        Nothing
+        (Code
+           "typ/regression/issue41.typ"
+           ( line 2 , column 2 )
+           (FieldAccess
+              (Ident (Identifier "circle")) (Ident (Identifier "plus"))))
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: false, 
+                               body: math.attach(b: text(body: [2]), 
+                                                 base: text(body: [⊕]), 
+                                                 t: none), 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/regression/issue43.out b/test/typ/regression/issue43.out
new file mode 100644
--- /dev/null
+++ b/test/typ/regression/issue43.out
@@ -0,0 +1,124 @@
+--- parse tree ---
+[ Code
+    "typ/regression/issue43.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/regression/issue43.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/regression/issue43.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/regression/issue43.typ"
+    ( line 2 , column 1 )
+    (Label "foo:bar")
+, ParBreak
+, Code
+    "typ/regression/issue43.typ"
+    ( line 4 , column 2 )
+    (Let (BasicBind (Just (Identifier "a"))) (Literal (String "a")))
+, ParBreak
+, Code
+    "typ/regression/issue43.typ"
+    ( line 6 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "w")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") ]
+          (Plus
+             (Block (Content [ Equation False [ Text "x" ] ]))
+             (Ident (Identifier "x")))))
+, ParBreak
+, Code
+    "typ/regression/issue43.typ"
+    ( line 8 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "x")))
+       (Block (Content [ RawInline "hello" ])))
+, ParBreak
+, Code
+    "typ/regression/issue43.typ"
+    ( line 10 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "a")))
+       (Dict [ Reg ( Ident (Identifier "a") , Literal (Int 1) ) ]))
+, ParBreak
+, Code
+    "typ/regression/issue43.typ"
+    ( line 12 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "b")))
+       (Dict [ Reg ( Ident (Identifier "b") , Literal (Int 2) ) ]))
+, ParBreak
+, Code
+    "typ/regression/issue43.typ"
+    ( line 14 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "c")))
+       (Dict [ Reg ( Ident (Identifier "c") , Literal (Int 3) ) ]))
+, ParBreak
+, Code
+    "typ/regression/issue43.typ"
+    ( line 16 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "d")))
+       (Dict [ Spr (Ident (Identifier "a")) ]))
+, ParBreak
+, Code
+    "typ/regression/issue43.typ"
+    ( line 18 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "e")))
+       (Dict [ Spr (Ident (Identifier "b")) ]))
+, ParBreak
+, Code
+    "typ/regression/issue43.typ"
+    ( line 20 , column 2 )
+    (Let (BasicBind (Just (Identifier "f"))) (Dict []))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 <foo:bar>, 
+                 parbreak(), 
+                 parbreak(), 
+                 parbreak(), 
+                 parbreak(), 
+                 parbreak(), 
+                 parbreak(), 
+                 parbreak(), 
+                 parbreak(), 
+                 parbreak(), 
+                 parbreak() })
diff --git a/test/typ/regression/issue49.out b/test/typ/regression/issue49.out
new file mode 100644
--- /dev/null
+++ b/test/typ/regression/issue49.out
@@ -0,0 +1,52 @@
+--- parse tree ---
+[ Code
+    "typ/regression/issue49.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/regression/issue49.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/regression/issue49.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Text "\27979\35797\25991\26412"
+, Strong [ Text "\21152\31895" ]
+, Text "\12290"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+测试文本]), 
+                 strong(body: text(body: [加粗])), 
+                 text(body: [。]), 
+                 parbreak() })
diff --git a/test/typ/regression/issue5.out b/test/typ/regression/issue5.out
new file mode 100644
--- /dev/null
+++ b/test/typ/regression/issue5.out
@@ -0,0 +1,52 @@
+--- parse tree ---
+[ Code
+    "typ/regression/issue5.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/regression/issue5.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/regression/issue5.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Equation True [ MGroup Nothing Nothing [ Text "3" , Text "!" ] ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { text(body: [3]), 
+                                       text(body: [!]) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/regression/issue50.out b/test/typ/regression/issue50.out
new file mode 100644
--- /dev/null
+++ b/test/typ/regression/issue50.out
@@ -0,0 +1,51 @@
+--- parse tree ---
+[ Code
+    "typ/regression/issue50.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/regression/issue50.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/regression/issue50.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Equation False [ Text "1." ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: false, 
+                               body: text(body: [1.]), 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/regression/issue54.out b/test/typ/regression/issue54.out
new file mode 100644
--- /dev/null
+++ b/test/typ/regression/issue54.out
@@ -0,0 +1,114 @@
+--- parse tree ---
+[ Code
+    "typ/regression/issue54.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/regression/issue54.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/regression/issue54.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Equation
+    True
+    [ MAttach
+        (Just
+           (MGroup
+              Nothing
+              Nothing
+              [ Text "a" , MGroup (Just "(") (Just ")") [ Text "b" ] ]))
+        Nothing
+        (Text "c")
+    , HardBreak
+    , MAttach
+        (Just (MGroup Nothing Nothing [ Text "a" ])) Nothing (Text "c")
+    , MGroup (Just "(") (Just ")") [ Text "b" ]
+    , HardBreak
+    , MAttach
+        (Just (MGroup Nothing Nothing [ Text "a" , Text "!" ]))
+        Nothing
+        (Text "c")
+    , HardBreak
+    , MAttach
+        (Just (MGroup Nothing Nothing [ Text "a" , Text "!" ]))
+        Nothing
+        (Text "c")
+    , MGroup (Just "(") (Just ")") [ Text "b" ]
+    , HardBreak
+    , MFrac
+        (Text "a")
+        (MAttach
+           Nothing
+           (Just (Text "n"))
+           (MGroup Nothing Nothing [ Text "b" , Text "!" ]))
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { math.attach(b: { text(body: [a]), 
+                                                        math.lr(body: ({ [(], 
+                                                                         text(body: [b]), 
+                                                                         [)] })) }, 
+                                                   base: text(body: [c]), 
+                                                   t: none), 
+                                       linebreak(), 
+                                       math.attach(b: text(body: [a]), 
+                                                   base: text(body: [c]), 
+                                                   t: none), 
+                                       math.lr(body: ({ [(], 
+                                                        text(body: [b]), 
+                                                        [)] })), 
+                                       linebreak(), 
+                                       math.attach(b: { text(body: [a]), 
+                                                        text(body: [!]) }, 
+                                                   base: text(body: [c]), 
+                                                   t: none), 
+                                       linebreak(), 
+                                       math.attach(b: { text(body: [a]), 
+                                                        text(body: [!]) }, 
+                                                   base: text(body: [c]), 
+                                                   t: none), 
+                                       math.lr(body: ({ [(], 
+                                                        text(body: [b]), 
+                                                        [)] })), 
+                                       linebreak(), 
+                                       math.frac(denom: math.attach(b: none, 
+                                                                    base: { text(body: [b]), 
+                                                                            text(body: [!]) }, 
+                                                                    t: text(body: [n])), 
+                                                 num: text(body: [a])) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/regression/issue55.out b/test/typ/regression/issue55.out
new file mode 100644
--- /dev/null
+++ b/test/typ/regression/issue55.out
@@ -0,0 +1,76 @@
+--- parse tree ---
+[ Code
+    "typ/regression/issue55.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/regression/issue55.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/regression/issue55.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Equation
+    True
+    [ MGroup (Just "(") (Just ")") [ Text "b" ]
+    , MFrac
+        (MGroup (Just "(") (Just ")") [ Text "c" ])
+        (MGroup Nothing Nothing [ Text "d" ])
+    , Text "!"
+    , MFrac
+        (MGroup (Just "(") (Just ")") [ Text "a" ])
+        (MGroup Nothing Nothing [ Text "b" ])
+    , MGroup Nothing Nothing [ HardBreak , Text "!" ]
+    , MFrac
+        (MGroup (Just "(") (Just ")") [ Text "a" ])
+        (MGroup Nothing Nothing [ Text "b" ])
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: { math.lr(body: ({ [(], 
+                                                        text(body: [b]), 
+                                                        [)] })), 
+                                       math.frac(denom: text(body: [d]), 
+                                                 num: text(body: [c])), 
+                                       text(body: [!]), 
+                                       math.frac(denom: text(body: [b]), 
+                                                 num: text(body: [a])), 
+                                       linebreak(), 
+                                       text(body: [!]), 
+                                       math.frac(denom: text(body: [b]), 
+                                                 num: text(body: [a])) }, 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/regression/issue59.out b/test/typ/regression/issue59.out
new file mode 100644
--- /dev/null
+++ b/test/typ/regression/issue59.out
@@ -0,0 +1,56 @@
+--- parse tree ---
+[ Code
+    "typ/regression/issue59.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/regression/issue59.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/regression/issue59.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/regression/issue59.typ"
+    ( line 2 , column 2 )
+    (If
+       [ ( Not (Equals (Literal (Int 5)) (Label "foo"))
+         , Block (CodeBlock [ Block (Content [ Text "a" ]) ])
+         )
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [a]), 
+                 parbreak() })
diff --git a/test/typ/regression/issue6.out b/test/typ/regression/issue6.out
new file mode 100644
--- /dev/null
+++ b/test/typ/regression/issue6.out
@@ -0,0 +1,65 @@
+--- parse tree ---
+[ Code
+    "typ/regression/issue6.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/regression/issue6.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/regression/issue6.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Equation
+    True
+    [ Code
+        "typ/regression/issue6.typ"
+        ( line 2 , column 4 )
+        (Let
+           (BasicBind (Just (Identifier "g")))
+           (Block (Content [ Equation False [ Text "3" ] ])))
+    , Code
+        "typ/regression/issue6.typ"
+        ( line 3 , column 2 )
+        (Ident (Identifier "g"))
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 math.equation(block: true, 
+                               body: math.equation(block: false, 
+                                                   body: text(body: [3]), 
+                                                   numbering: none), 
+                               numbering: none), 
+                 parbreak() })
diff --git a/test/typ/regression/issue60.out b/test/typ/regression/issue60.out
new file mode 100644
--- /dev/null
+++ b/test/typ/regression/issue60.out
@@ -0,0 +1,62 @@
+--- parse tree ---
+[ Code
+    "typ/regression/issue60.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/regression/issue60.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/regression/issue60.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/regression/issue60.typ"
+    ( line 2 , column 2 )
+    (Import
+       (Literal (String "addons/example.typ"))
+       (SomeIdentifiers [ ( Identifier "utf8string" , Nothing ) ]))
+, SoftBreak
+, Code
+    "typ/regression/issue60.typ"
+    ( line 3 , column 2 )
+    (Ident (Identifier "utf8string"))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [Anything!
+]), 
+                 parbreak() })
diff --git a/test/typ/regression/issue63.out b/test/typ/regression/issue63.out
new file mode 100644
--- /dev/null
+++ b/test/typ/regression/issue63.out
@@ -0,0 +1,99 @@
+--- parse tree ---
+[ Code
+    "typ/regression/issue63.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/regression/issue63.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/regression/issue63.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/regression/issue63.typ"
+    ( line 2 , column 2 )
+    (Show
+       (Just (Ident (Identifier "link")))
+       (Ident (Identifier "underline")))
+, ParBreak
+, BulletListItem
+    [ Code
+        "typ/regression/issue63.typ"
+        ( line 4 , column 4 )
+        (FuncCall
+           (Ident (Identifier "link"))
+           [ NormalArg
+               (Literal
+                  (String "https://www.jetbrains.com/compose-multiplatform/"))
+           , BlockArg [ Text "Compose" , Space , Text "Multiplatform" ]
+           ])
+    , Space
+    , Text "as"
+    , Space
+    , Text "front"
+    , Text "-"
+    , Text "end"
+    , Space
+    , Text "framework"
+    ]
+, SoftBreak
+, BulletListItem
+    [ Code
+        "typ/regression/issue63.typ"
+        ( line 5 , column 4 )
+        (FuncCall
+           (Ident (Identifier "link"))
+           [ NormalArg
+               (Literal (String "https://github.com/InsertKoinIO/koin/"))
+           , BlockArg [ Text "Koin" ]
+           ])
+    , Space
+    , Text "for"
+    , Space
+    , Text "Dependecy"
+    , Space
+    , Text "Injection"
+    , ParBreak
+    ]
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 list(children: ({ underline(body: link(body: text(body: [Compose Multiplatform]), 
+                                                        dest: "https://www.jetbrains.com/compose-multiplatform/")), 
+                                   text(body: [ as front-end framework]) }, 
+                                 { underline(body: link(body: text(body: [Koin]), 
+                                                        dest: "https://github.com/InsertKoinIO/koin/")), 
+                                   text(body: [ for Dependecy Injection]), 
+                                   parbreak() })) })
diff --git a/test/typ/regression/issue63.typ b/test/typ/regression/issue63.typ
new file mode 100644
--- /dev/null
+++ b/test/typ/regression/issue63.typ
@@ -0,0 +1,5 @@
+#show link: underline
+
+- #link("https://www.jetbrains.com/compose-multiplatform/")[Compose Multiplatform] as front-end framework
+- #link("https://github.com/InsertKoinIO/koin/")[Koin] for Dependecy Injection
+
diff --git a/test/typ/text/baseline-00.out b/test/typ/text/baseline-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/baseline-00.out
@@ -0,0 +1,193 @@
+--- parse tree ---
+[ Code
+    "typ/text/baseline-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/baseline-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/baseline-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, SoftBreak
+, EmDash
+, SoftBreak
+, Text "Hi"
+, Space
+, Code
+    "typ/text/baseline-00.typ"
+    ( line 5 , column 5 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ NormalArg (Literal (Numeric 1.5 Em)) , BlockArg [ Text "You" ] ])
+, Text ","
+, Space
+, Code
+    "typ/text/baseline-00.typ"
+    ( line 5 , column 24 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ NormalArg (Literal (Numeric 0.75 Em))
+       , BlockArg
+           [ Text "how" , Space , Text "are" , Space , Text "you?" ]
+       ])
+, ParBreak
+, Text "Our"
+, Space
+, Text "cockatoo"
+, Space
+, Text "was"
+, Space
+, Text "one"
+, Space
+, Text "of"
+, Space
+, Text "the"
+, SoftBreak
+, Code
+    "typ/text/baseline-00.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ KeyValArg
+           (Identifier "baseline") (Negated (Literal (Numeric 0.2 Em)))
+       , BlockArg
+           [ Code
+               "typ/text/baseline-00.typ"
+               ( line 8 , column 26 )
+               (FuncCall
+                  (Ident (Identifier "box"))
+                  [ NormalArg
+                      (FuncCall
+                         (Ident (Identifier "circle"))
+                         [ KeyValArg (Identifier "radius") (Literal (Numeric 2.0 Pt)) ])
+                  ])
+           , Space
+           , Text "first"
+           ]
+       ])
+, SoftBreak
+, Code
+    "typ/text/baseline-00.typ"
+    ( line 9 , column 2 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "baseline") (Literal (Numeric 0.2 Em))
+       , BlockArg
+           [ Text "birds"
+           , Space
+           , Code
+               "typ/text/baseline-00.typ"
+               ( line 9 , column 31 )
+               (FuncCall
+                  (Ident (Identifier "box"))
+                  [ NormalArg
+                      (FuncCall
+                         (Ident (Identifier "circle"))
+                         [ KeyValArg (Identifier "radius") (Literal (Numeric 2.0 Pt)) ])
+                  ])
+           ]
+       ])
+, SoftBreak
+, Text "that"
+, Space
+, Text "ever"
+, Space
+, Text "learned"
+, Space
+, Text "to"
+, Space
+, Text "mimic"
+, Space
+, Text "a"
+, Space
+, Text "human"
+, Space
+, Text "voice"
+, Text "."
+, ParBreak
+, EmDash
+, SoftBreak
+, Text "Hey"
+, Space
+, Code
+    "typ/text/baseline-00.typ"
+    ( line 13 , column 6 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ KeyValArg
+           (Identifier "baseline") (Literal (Numeric 40.0 Percent))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "image"))
+              [ NormalArg (Literal (String "/assets/files/tiger.jpg"))
+              , KeyValArg (Identifier "width") (Literal (Numeric 1.5 Cm))
+              ])
+       ])
+, Space
+, Text "there!"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+—
+Hi ]), 
+                 text(body: text(body: [You]), 
+                      size: 1.5em), 
+                 text(body: [, ]), 
+                 text(body: text(body: [how are you?]), 
+                      size: 0.75em), 
+                 parbreak(), 
+                 text(body: [Our cockatoo was one of the
+]), 
+                 text(baseline: -0.2em, 
+                      body: { box(body: circle(radius: 2.0pt)), 
+                              text(body: [ first]) }), 
+                 text(body: [
+]), 
+                 text(baseline: 0.2em, 
+                      body: { text(body: [birds ]), 
+                              box(body: circle(radius: 2.0pt)) }), 
+                 text(body: [
+that ever learned to mimic a human voice.]), 
+                 parbreak(), 
+                 text(body: [—
+Hey ]), 
+                 box(baseline: 40%, 
+                     body: image(path: "/assets/files/tiger.jpg", 
+                                 width: 1.5cm)), 
+                 text(body: [ there!]), 
+                 parbreak() })
diff --git a/test/typ/text/case-00.out b/test/typ/text/case-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/case-00.out
@@ -0,0 +1,98 @@
+--- parse tree ---
+[ Code
+    "typ/text/case-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/case-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/case-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/text/case-00.typ"
+    ( line 2 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "memes")))
+       (Literal (String "ArE mEmEs gReAt?")))
+, SoftBreak
+, Code
+    "typ/text/case-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "lower"))
+              [ NormalArg (Ident (Identifier "memes")) ])
+       , NormalArg (Literal (String "are memes great?"))
+       ])
+, SoftBreak
+, Code
+    "typ/text/case-00.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "upper"))
+              [ NormalArg (Ident (Identifier "memes")) ])
+       , NormalArg (Literal (String "ARE MEMES GREAT?"))
+       ])
+, SoftBreak
+, Code
+    "typ/text/case-00.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "upper"))
+              [ NormalArg (Literal (String "\917\955\955\940\948\945")) ])
+       , NormalArg (Literal (String "\917\923\923\902\916\913"))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 text(body: [
+]), 
+                 text(body: [✅]), 
+                 parbreak() })
diff --git a/test/typ/text/case-01.out b/test/typ/text/case-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/case-01.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/text/chinese-00.out b/test/typ/text/chinese-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/chinese-00.out
@@ -0,0 +1,73 @@
+--- parse tree ---
+[ Code
+    "typ/text/chinese-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/chinese-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/chinese-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/text/chinese-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg
+           (Identifier "font") (Literal (String "Noto Serif CJK SC"))
+       ])
+, ParBreak
+, Text
+    "\26159\32654\22269\24191\25773\20844\21496\30005\35270\21095\12298\36855\22833\12299\31532\&3\23395\30340\31532\&22\21644\&23\38598\65292\20063\26159\20840\21095\30340\31532\&71\38598\21644\&72\38598"
+, SoftBreak
+, Text
+    "\30001\25191\34892\21046\20316\20154\25140\33945\183\26519\36947\22827\21644\21345\23572\39039\183\24211\26031\32534\21095\65292\23548\28436\21017\26159\21478\19968\21517\25191\34892\21046\20316\20154\26480\20811\183\26412\24503"
+, SoftBreak
+, Text
+    "\33410\30446\20110\&2007\24180\&5\26376\&23\26085\22312\32654\22269\21644\21152\25343\22823\39318\25773\65292\20849\35745\21560\24341\20102\&1400\19975\32654\22269\35266\20247\25910\30475"
+, SoftBreak
+, Text
+    "\26412\38598\21152\19978\25554\25773\24191\21578\19968\20849\20063\25345\32493\26377\20004\20010\23567\26102"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [是美国广播公司电视剧《迷失》第3季的第22和23集，也是全剧的第71集和72集
+由执行制作人戴蒙·林道夫和卡尔顿·库斯编剧，导演则是另一名执行制作人杰克·本德
+节目于2007年5月23日在美国和加拿大首播，共计吸引了1400万美国观众收看
+本集加上插播广告一共也持续有两个小时], 
+                      font: "Noto Serif CJK SC"), 
+                 parbreak() })
diff --git a/test/typ/text/copy-paste-00.out b/test/typ/text/copy-paste-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/copy-paste-00.out
@@ -0,0 +1,71 @@
+--- parse tree ---
+[ Code
+    "typ/text/copy-paste-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/copy-paste-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/copy-paste-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Text "The"
+, Space
+, Text "after"
+, Space
+, Text "fira"
+, Space
+, Text "\127987\65039\8205\127752!"
+, ParBreak
+, Code
+    "typ/text/copy-paste-00.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "lang") (Literal (String "ar"))
+       , KeyValArg
+           (Identifier "font") (Literal (String "Noto Sans Arabic"))
+       ])
+, SoftBreak
+, Text "\1605\1585\1581\1576\1611\1575"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+The after fira 🏳️‍🌈!]), 
+                 parbreak(), 
+                 text(body: [
+مرحبًا], 
+                      font: "Noto Sans Arabic", 
+                      lang: "ar"), 
+                 parbreak() })
diff --git a/test/typ/text/deco-00.out b/test/typ/text/deco-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/deco-00.out
@@ -0,0 +1,170 @@
+--- parse tree ---
+[ Code
+    "typ/text/deco-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/deco-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/deco-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/text/deco-00.typ"
+    ( line 2 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "red")))
+       (FuncCall
+          (Ident (Identifier "rgb"))
+          [ NormalArg (Literal (String "fc0030")) ]))
+, ParBreak
+, Comment
+, Code
+    "typ/text/deco-00.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "strike"))
+       [ BlockArg
+           [ Text "Statements"
+           , Space
+           , Text "dreamt"
+           , Space
+           , Text "up"
+           , Space
+           , Text "by"
+           , Space
+           , Text "the"
+           , Space
+           , Text "utterly"
+           , Space
+           , Text "deranged"
+           , Text "."
+           ]
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/text/deco-00.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "underline"))
+       [ KeyValArg (Identifier "offset") (Literal (Numeric 5.0 Pt))
+       , BlockArg [ Text "Further" , Space , Text "below" , Text "." ]
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/text/deco-00.typ"
+    ( line 11 , column 2 )
+    (FuncCall
+       (Ident (Identifier "underline"))
+       [ KeyValArg (Identifier "stroke") (Ident (Identifier "red"))
+       , KeyValArg (Identifier "evade") (Literal (Boolean False))
+       , BlockArg
+           [ Text "Critical"
+           , Space
+           , Text "information"
+           , Space
+           , Text "is"
+           , Space
+           , Text "conveyed"
+           , Space
+           , Text "here"
+           , Text "."
+           ]
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/text/deco-00.typ"
+    ( line 14 , column 2 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "fill") (Ident (Identifier "red"))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "underline"))
+              [ BlockArg
+                  [ Text "Change"
+                  , Space
+                  , Text "with"
+                  , Space
+                  , Text "the"
+                  , Space
+                  , Text "wind"
+                  , Text "."
+                  ]
+              ])
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/text/deco-00.typ"
+    ( line 17 , column 2 )
+    (FuncCall
+       (Ident (Identifier "overline"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "underline"))
+              [ BlockArg
+                  [ Text "Running"
+                  , Space
+                  , Text "amongst"
+                  , Space
+                  , Text "the"
+                  , Space
+                  , Text "wolves"
+                  , Text "."
+                  ]
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 strike(body: text(body: [Statements dreamt up by the utterly deranged.])), 
+                 parbreak(), 
+                 underline(body: text(body: [Further below.]), 
+                           offset: 5.0pt), 
+                 parbreak(), 
+                 underline(body: text(body: [Critical information is conveyed here.]), 
+                           evade: false, 
+                           stroke: rgb(98%,0%,18%,100%)), 
+                 parbreak(), 
+                 text(body: underline(body: text(body: [Change with the wind.])), 
+                      fill: rgb(98%,0%,18%,100%)), 
+                 parbreak(), 
+                 overline(body: underline(body: text(body: [Running amongst the wolves.]))), 
+                 parbreak() })
diff --git a/test/typ/text/deco-01.out b/test/typ/text/deco-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/deco-01.out
@@ -0,0 +1,125 @@
+--- parse tree ---
+[ Code
+    "typ/text/deco-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/deco-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/deco-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/text/deco-01.typ"
+    ( line 2 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "redact")))
+       (FuncCall
+          (FieldAccess
+             (Ident (Identifier "with")) (Ident (Identifier "strike")))
+          [ KeyValArg (Identifier "stroke") (Literal (Numeric 10.0 Pt))
+          , KeyValArg (Identifier "extent") (Literal (Numeric 5.0e-2 Em))
+          ]))
+, SoftBreak
+, Code
+    "typ/text/deco-01.typ"
+    ( line 3 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "highlight")))
+       (FuncCall
+          (FieldAccess
+             (Ident (Identifier "with")) (Ident (Identifier "strike")))
+          [ KeyValArg
+              (Identifier "stroke")
+              (Plus
+                 (Literal (Numeric 10.0 Pt))
+                 (FuncCall
+                    (Ident (Identifier "rgb"))
+                    [ NormalArg (Literal (String "abcdef88")) ]))
+          , KeyValArg (Identifier "extent") (Literal (Numeric 5.0e-2 Em))
+          ]))
+, ParBreak
+, Comment
+, Text "Sometimes,"
+, Space
+, Text "we"
+, Space
+, Text "work"
+, Space
+, Code
+    "typ/text/deco-01.typ"
+    ( line 6 , column 21 )
+    (FuncCall
+       (Ident (Identifier "redact"))
+       [ BlockArg [ Text "in" , Space , Text "secret" ] ])
+, Text "."
+, SoftBreak
+, Text "There"
+, Space
+, Text "might"
+, Space
+, Text "be"
+, Space
+, Code
+    "typ/text/deco-01.typ"
+    ( line 7 , column 17 )
+    (FuncCall
+       (Ident (Identifier "highlight")) [ BlockArg [ Text "redacted" ] ])
+, Space
+, Text "things"
+, Text "."
+, SoftBreak
+, Text "underline"
+, Text "("
+, Text ")"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [Sometimes, we work ]), 
+                 strike(body: text(body: [in secret]), 
+                        extent: 5.0e-2em, 
+                        stroke: 10.0pt), 
+                 text(body: [.
+There might be ]), 
+                 strike(body: text(body: [redacted]), 
+                        extent: 5.0e-2em, 
+                        stroke: (thickness: 10.0pt,
+                                 color: rgb(67%,80%,93%,53%))), 
+                 text(body: [ things.
+underline()]), 
+                 parbreak() })
diff --git a/test/typ/text/deco-02.out b/test/typ/text/deco-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/deco-02.out
@@ -0,0 +1,75 @@
+--- parse tree ---
+[ Code
+    "typ/text/deco-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/deco-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/deco-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/text/deco-02.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "underline"))
+       [ KeyValArg (Identifier "stroke") (Literal (Numeric 2.0 Pt))
+       , KeyValArg (Identifier "offset") (Literal (Numeric 2.0 Pt))
+       ])
+, SoftBreak
+, Code
+    "typ/text/deco-02.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "underline"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "text"))
+              [ NormalArg (Ident (Identifier "red"))
+              , NormalArg (Block (Content [ Text "DANGER!" ]))
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 underline(body: text(body: text(body: [DANGER!]), 
+                                      color: rgb(100%,25%,21%,100%)), 
+                           offset: 2.0pt, 
+                           stroke: 2.0pt), 
+                 parbreak() })
diff --git a/test/typ/text/edge-00.out b/test/typ/text/edge-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/edge-00.out
@@ -0,0 +1,333 @@
+--- parse tree ---
+[ Code
+    "typ/text/edge-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/edge-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/edge-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/text/edge-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 160.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/text/edge-00.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "size") (Literal (Numeric 8.0 Pt)) ])
+, ParBreak
+, Code
+    "typ/text/edge-00.typ"
+    ( line 5 , column 2 )
+    (LetFunc
+       (Identifier "try")
+       [ NormalParam (Identifier "top")
+       , NormalParam (Identifier "bottom")
+       ]
+       (FuncCall
+          (Ident (Identifier "rect"))
+          [ KeyValArg (Identifier "inset") (Literal (Numeric 0.0 Pt))
+          , KeyValArg (Identifier "fill") (Ident (Identifier "green"))
+          , BlockArg
+              [ SoftBreak
+              , Code
+                  "typ/text/edge-00.typ"
+                  ( line 6 , column 4 )
+                  (Set
+                     (Ident (Identifier "text"))
+                     [ KeyValArg (Identifier "font") (Literal (String "IBM Plex Mono"))
+                     , KeyValArg (Identifier "top-edge") (Ident (Identifier "top"))
+                     , KeyValArg
+                         (Identifier "bottom-edge") (Ident (Identifier "bottom"))
+                     ])
+              , SoftBreak
+              , Text "From"
+              , Space
+              , Code
+                  "typ/text/edge-00.typ"
+                  ( line 7 , column 9 )
+                  (Ident (Identifier "top"))
+              , Space
+              , Text "to"
+              , Space
+              , Code
+                  "typ/text/edge-00.typ"
+                  ( line 7 , column 17 )
+                  (Ident (Identifier "bottom"))
+              , ParBreak
+              ]
+          ]))
+, ParBreak
+, Code
+    "typ/text/edge-00.typ"
+    ( line 10 , column 2 )
+    (FuncCall
+       (Ident (Identifier "try"))
+       [ NormalArg (Literal (String "ascender"))
+       , NormalArg (Literal (String "descender"))
+       ])
+, SoftBreak
+, Code
+    "typ/text/edge-00.typ"
+    ( line 11 , column 2 )
+    (FuncCall
+       (Ident (Identifier "try"))
+       [ NormalArg (Literal (String "ascender"))
+       , NormalArg (Literal (String "baseline"))
+       ])
+, SoftBreak
+, Code
+    "typ/text/edge-00.typ"
+    ( line 12 , column 2 )
+    (FuncCall
+       (Ident (Identifier "try"))
+       [ NormalArg (Literal (String "cap-height"))
+       , NormalArg (Literal (String "baseline"))
+       ])
+, SoftBreak
+, Code
+    "typ/text/edge-00.typ"
+    ( line 13 , column 2 )
+    (FuncCall
+       (Ident (Identifier "try"))
+       [ NormalArg (Literal (String "x-height"))
+       , NormalArg (Literal (String "baseline"))
+       ])
+, SoftBreak
+, Code
+    "typ/text/edge-00.typ"
+    ( line 14 , column 2 )
+    (FuncCall
+       (Ident (Identifier "try"))
+       [ NormalArg (Literal (Numeric 4.0 Pt))
+       , NormalArg (Negated (Literal (Numeric 2.0 Pt)))
+       ])
+, SoftBreak
+, Code
+    "typ/text/edge-00.typ"
+    ( line 15 , column 2 )
+    (FuncCall
+       (Ident (Identifier "try"))
+       [ NormalArg
+           (Plus (Literal (Numeric 1.0 Pt)) (Literal (Numeric 0.3 Em)))
+       , NormalArg (Negated (Literal (Numeric 0.15 Em)))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 parbreak(), 
+                 rect(body: { text(body: [
+], 
+                                   size: 8.0pt), 
+                              text(body: [
+From ], 
+                                   bottom-edge: "descender", 
+                                   font: "IBM Plex Mono", 
+                                   size: 8.0pt, 
+                                   top-edge: "ascender"), 
+                              text(body: [ascender], 
+                                   bottom-edge: "descender", 
+                                   font: "IBM Plex Mono", 
+                                   size: 8.0pt, 
+                                   top-edge: "ascender"), 
+                              text(body: [ to ], 
+                                   bottom-edge: "descender", 
+                                   font: "IBM Plex Mono", 
+                                   size: 8.0pt, 
+                                   top-edge: "ascender"), 
+                              text(body: [descender], 
+                                   bottom-edge: "descender", 
+                                   font: "IBM Plex Mono", 
+                                   size: 8.0pt, 
+                                   top-edge: "ascender"), 
+                              parbreak() }, 
+                      fill: rgb(18%,80%,25%,100%), 
+                      inset: 0.0pt), 
+                 text(body: [
+], size: 8.0pt), 
+                 rect(body: { text(body: [
+], 
+                                   size: 8.0pt), 
+                              text(body: [
+From ], 
+                                   bottom-edge: "baseline", 
+                                   font: "IBM Plex Mono", 
+                                   size: 8.0pt, 
+                                   top-edge: "ascender"), 
+                              text(body: [ascender], 
+                                   bottom-edge: "baseline", 
+                                   font: "IBM Plex Mono", 
+                                   size: 8.0pt, 
+                                   top-edge: "ascender"), 
+                              text(body: [ to ], 
+                                   bottom-edge: "baseline", 
+                                   font: "IBM Plex Mono", 
+                                   size: 8.0pt, 
+                                   top-edge: "ascender"), 
+                              text(body: [baseline], 
+                                   bottom-edge: "baseline", 
+                                   font: "IBM Plex Mono", 
+                                   size: 8.0pt, 
+                                   top-edge: "ascender"), 
+                              parbreak() }, 
+                      fill: rgb(18%,80%,25%,100%), 
+                      inset: 0.0pt), 
+                 text(body: [
+], size: 8.0pt), 
+                 rect(body: { text(body: [
+], 
+                                   size: 8.0pt), 
+                              text(body: [
+From ], 
+                                   bottom-edge: "baseline", 
+                                   font: "IBM Plex Mono", 
+                                   size: 8.0pt, 
+                                   top-edge: "cap-height"), 
+                              text(body: [cap-height], 
+                                   bottom-edge: "baseline", 
+                                   font: "IBM Plex Mono", 
+                                   size: 8.0pt, 
+                                   top-edge: "cap-height"), 
+                              text(body: [ to ], 
+                                   bottom-edge: "baseline", 
+                                   font: "IBM Plex Mono", 
+                                   size: 8.0pt, 
+                                   top-edge: "cap-height"), 
+                              text(body: [baseline], 
+                                   bottom-edge: "baseline", 
+                                   font: "IBM Plex Mono", 
+                                   size: 8.0pt, 
+                                   top-edge: "cap-height"), 
+                              parbreak() }, 
+                      fill: rgb(18%,80%,25%,100%), 
+                      inset: 0.0pt), 
+                 text(body: [
+], size: 8.0pt), 
+                 rect(body: { text(body: [
+], 
+                                   size: 8.0pt), 
+                              text(body: [
+From ], 
+                                   bottom-edge: "baseline", 
+                                   font: "IBM Plex Mono", 
+                                   size: 8.0pt, 
+                                   top-edge: "x-height"), 
+                              text(body: [x-height], 
+                                   bottom-edge: "baseline", 
+                                   font: "IBM Plex Mono", 
+                                   size: 8.0pt, 
+                                   top-edge: "x-height"), 
+                              text(body: [ to ], 
+                                   bottom-edge: "baseline", 
+                                   font: "IBM Plex Mono", 
+                                   size: 8.0pt, 
+                                   top-edge: "x-height"), 
+                              text(body: [baseline], 
+                                   bottom-edge: "baseline", 
+                                   font: "IBM Plex Mono", 
+                                   size: 8.0pt, 
+                                   top-edge: "x-height"), 
+                              parbreak() }, 
+                      fill: rgb(18%,80%,25%,100%), 
+                      inset: 0.0pt), 
+                 text(body: [
+], size: 8.0pt), 
+                 rect(body: { text(body: [
+], 
+                                   size: 8.0pt), 
+                              text(body: [
+From ], 
+                                   bottom-edge: -2.0pt, 
+                                   font: "IBM Plex Mono", 
+                                   size: 8.0pt, 
+                                   top-edge: 4.0pt), 
+                              text(body: [4.0pt], 
+                                   bottom-edge: -2.0pt, 
+                                   font: "IBM Plex Mono", 
+                                   size: 8.0pt, 
+                                   top-edge: 4.0pt), 
+                              text(body: [ to ], 
+                                   bottom-edge: -2.0pt, 
+                                   font: "IBM Plex Mono", 
+                                   size: 8.0pt, 
+                                   top-edge: 4.0pt), 
+                              text(body: [-2.0pt], 
+                                   bottom-edge: -2.0pt, 
+                                   font: "IBM Plex Mono", 
+                                   size: 8.0pt, 
+                                   top-edge: 4.0pt), 
+                              parbreak() }, 
+                      fill: rgb(18%,80%,25%,100%), 
+                      inset: 0.0pt), 
+                 text(body: [
+], size: 8.0pt), 
+                 rect(body: { text(body: [
+], 
+                                   size: 8.0pt), 
+                              text(body: [
+From ], 
+                                   bottom-edge: -0.15em, 
+                                   font: "IBM Plex Mono", 
+                                   size: 8.0pt, 
+                                   top-edge: 1.0pt + 0.3em), 
+                              text(body: [1.0pt + 0.3em], 
+                                   bottom-edge: -0.15em, 
+                                   font: "IBM Plex Mono", 
+                                   size: 8.0pt, 
+                                   top-edge: 1.0pt + 0.3em), 
+                              text(body: [ to ], 
+                                   bottom-edge: -0.15em, 
+                                   font: "IBM Plex Mono", 
+                                   size: 8.0pt, 
+                                   top-edge: 1.0pt + 0.3em), 
+                              text(body: [-0.15em], 
+                                   bottom-edge: -0.15em, 
+                                   font: "IBM Plex Mono", 
+                                   size: 8.0pt, 
+                                   top-edge: 1.0pt + 0.3em), 
+                              parbreak() }, 
+                      fill: rgb(18%,80%,25%,100%), 
+                      inset: 0.0pt), 
+                 parbreak() })
diff --git a/test/typ/text/edge-01.out b/test/typ/text/edge-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/edge-01.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/text/edge-02.out b/test/typ/text/edge-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/edge-02.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/text/em-00.out b/test/typ/text/em-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/em-00.out
@@ -0,0 +1,150 @@
+--- parse tree ---
+[ Code
+    "typ/text/em-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/em-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/em-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/text/em-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "size") (Literal (Numeric 5.0 Pt)) ])
+, SoftBreak
+, Text "A"
+, Space
+, Comment
+, Code
+    "typ/text/em-00.typ"
+    ( line 4 , column 2 )
+    (Block
+       (Content
+          [ SoftBreak
+          , Code
+              "typ/text/em-00.typ"
+              ( line 5 , column 4 )
+              (Set
+                 (Ident (Identifier "text"))
+                 [ KeyValArg (Identifier "size") (Literal (Numeric 2.0 Em)) ])
+          , SoftBreak
+          , Text "B"
+          , Space
+          , Comment
+          , Space
+          , Code
+              "typ/text/em-00.typ"
+              ( line 7 , column 4 )
+              (Block
+                 (Content
+                    [ SoftBreak
+                    , Code
+                        "typ/text/em-00.typ"
+                        ( line 8 , column 6 )
+                        (Set
+                           (Ident (Identifier "text"))
+                           [ KeyValArg
+                               (Identifier "size")
+                               (Plus (Literal (Numeric 1.5 Em)) (Literal (Numeric 1.0 Pt)))
+                           ])
+                    , SoftBreak
+                    , Text "C"
+                    , Space
+                    , Comment
+                    , Space
+                    , Code
+                        "typ/text/em-00.typ"
+                        ( line 10 , column 6 )
+                        (FuncCall
+                           (Ident (Identifier "text"))
+                           [ KeyValArg (Identifier "size") (Literal (Numeric 2.0 Em))
+                           , BlockArg [ Text "D" ]
+                           ])
+                    , Space
+                    , Comment
+                    , Space
+                    , Text "E"
+                    , Space
+                    , Comment
+                    , Space
+                    ]))
+          , SoftBreak
+          , Text "F"
+          , Space
+          , Comment
+          ]))
+, SoftBreak
+, Text "G"
+, Space
+, Comment
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+A ], 
+                      size: 5.0pt), 
+                 text(body: [
+], size: 5.0pt), 
+                 text(body: [
+B ], 
+                      size: 2.0em), 
+                 text(body: [ ], size: 2.0em), 
+                 text(body: [
+], size: 2.0em), 
+                 text(body: [
+C ], 
+                      size: 1.5em + 1.0pt), 
+                 text(body: [ ], 
+                      size: 1.5em + 1.0pt), 
+                 text(body: text(body: [D], 
+                                 size: 1.5em + 1.0pt), 
+                      size: 2.0em), 
+                 text(body: [ ], 
+                      size: 1.5em + 1.0pt), 
+                 text(body: [ E ], 
+                      size: 1.5em + 1.0pt), 
+                 text(body: [ ], 
+                      size: 1.5em + 1.0pt), 
+                 text(body: [
+F ], 
+                      size: 1.5em + 1.0pt), 
+                 text(body: [
+G ], 
+                      size: 1.5em + 1.0pt), 
+                 parbreak() })
diff --git a/test/typ/text/em-01.out b/test/typ/text/em-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/em-01.out
@@ -0,0 +1,120 @@
+--- parse tree ---
+[ Code
+    "typ/text/em-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/em-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/em-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/text/em-01.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "size") (Literal (Numeric 5.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/text/em-01.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "size") (Literal (Numeric 2.0 Em)) ])
+, SoftBreak
+, Code
+    "typ/text/em-01.typ"
+    ( line 5 , column 2 )
+    (Set
+       (Ident (Identifier "square"))
+       [ KeyValArg (Identifier "fill") (Ident (Identifier "red")) ])
+, ParBreak
+, Code
+    "typ/text/em-01.typ"
+    ( line 7 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "size")))
+       (Block
+          (CodeBlock
+             [ Let
+                 (BasicBind (Just (Identifier "size")))
+                 (Plus (Literal (Numeric 0.25 Em)) (Literal (Numeric 1.0 Pt)))
+             , For
+                 (BasicBind Nothing)
+                 (FuncCall
+                    (Ident (Identifier "range")) [ NormalArg (Literal (Int 3)) ])
+                 (Block
+                    (CodeBlock
+                       [ Assign
+                           (Ident (Identifier "size"))
+                           (Times (Ident (Identifier "size")) (Literal (Int 2)))
+                       ]))
+             , Minus (Ident (Identifier "size")) (Literal (Numeric 3.0 Pt))
+             ])))
+, ParBreak
+, Code
+    "typ/text/em-01.typ"
+    ( line 15 , column 2 )
+    (FuncCall
+       (Ident (Identifier "stack"))
+       [ KeyValArg (Identifier "dir") (Ident (Identifier "ltr"))
+       , KeyValArg (Identifier "spacing") (Literal (Numeric 1.0 Fr))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "square"))
+              [ KeyValArg (Identifier "size") (Ident (Identifier "size")) ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "square"))
+              [ KeyValArg (Identifier "size") (Literal (Numeric 25.0 Pt)) ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+], size: 5.0pt), 
+                 text(body: [
+], size: 2.0em), 
+                 parbreak(), 
+                 parbreak(), 
+                 stack(children: (square(fill: rgb(100%,25%,21%,100%), 
+                                         size: (2.0em + 8.0pt) + -3.0pt), 
+                                  square(fill: rgb(100%,25%,21%,100%), 
+                                         size: 25.0pt)), 
+                       dir: ltr, 
+                       spacing: 1.0fr), 
+                 parbreak() })
diff --git a/test/typ/text/emoji-00.out b/test/typ/text/emoji-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/emoji-00.out
@@ -0,0 +1,65 @@
+--- parse tree ---
+[ Code
+    "typ/text/emoji-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/emoji-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/emoji-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "\128105\8205\128105\8205\128102"
+, ParBreak
+, Comment
+, Text "\127987\65039\8205\127752"
+, ParBreak
+, Comment
+, Text "\128077\127999"
+, ParBreak
+, Comment
+, Text "1\65039\8419"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [👩‍👩‍👦]), 
+                 parbreak(), 
+                 text(body: [🏳️‍🌈]), 
+                 parbreak(), 
+                 text(body: [👍🏿]), 
+                 parbreak(), 
+                 text(body: [1️⃣]), 
+                 parbreak() })
diff --git a/test/typ/text/emoji-01.out b/test/typ/text/emoji-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/emoji-01.out
@@ -0,0 +1,50 @@
+--- parse tree ---
+[ Code
+    "typ/text/emoji-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/emoji-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/emoji-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "\127966\8205\127755"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [🏞‍🌋]), 
+                 parbreak() })
diff --git a/test/typ/text/emphasis-00.out b/test/typ/text/emphasis-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/emphasis-00.out
@@ -0,0 +1,84 @@
+--- parse tree ---
+[ Code
+    "typ/text/emphasis-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/emphasis-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/emphasis-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Emph
+    [ Text "Emphasized"
+    , Space
+    , Text "and"
+    , Space
+    , Strong [ Text "strong" ]
+    , Space
+    , Text "words!"
+    ]
+, ParBreak
+, Comment
+, Text "hello_world"
+, Space
+, Text "Nutzer*innen"
+, ParBreak
+, Comment
+, Emph
+    [ Text "Still"
+    , Space
+    , Code
+        "typ/text/emphasis-00.typ"
+        ( line 9 , column 9 )
+        (Block (Content [ ParBreak ]))
+    , Space
+    , Text "emphasized"
+    , Text "."
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 emph(body: { text(body: [Emphasized and ]), 
+                              strong(body: text(body: [strong])), 
+                              text(body: [ words!]) }), 
+                 parbreak(), 
+                 text(body: [hello_world Nutzer*innen]), 
+                 parbreak(), 
+                 emph(body: { text(body: [Still ]), 
+                              parbreak(), 
+                              text(body: [ emphasized.]) }), 
+                 parbreak() })
diff --git a/test/typ/text/emphasis-01.out b/test/typ/text/emphasis-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/emphasis-01.out
@@ -0,0 +1,68 @@
+--- parse tree ---
+[ Code
+    "typ/text/emphasis-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/emphasis-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/emphasis-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "P"
+, Code
+    "typ/text/emphasis-01.typ"
+    ( line 3 , column 3 )
+    (FuncCall
+       (Ident (Identifier "strong")) [ BlockArg [ Text "art" ] ])
+, Text "ly"
+, Space
+, Text "em"
+, Code
+    "typ/text/emphasis-01.typ"
+    ( line 3 , column 20 )
+    (FuncCall (Ident (Identifier "emph")) [ BlockArg [ Text "phas" ] ])
+, Text "ized"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [P]), 
+                 strong(body: text(body: [art])), 
+                 text(body: [ly em]), 
+                 emph(body: text(body: [phas])), 
+                 text(body: [ized.]), 
+                 parbreak() })
diff --git a/test/typ/text/emphasis-02.out b/test/typ/text/emphasis-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/emphasis-02.out
@@ -0,0 +1,91 @@
+--- parse tree ---
+[ Code
+    "typ/text/emphasis-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/emphasis-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/emphasis-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "Normal"
+, ParBreak
+, Code
+    "typ/text/emphasis-02.typ"
+    ( line 5 , column 2 )
+    (Set
+       (Ident (Identifier "strong"))
+       [ KeyValArg (Identifier "delta") (Literal (Int 300)) ])
+, SoftBreak
+, Strong [ Text "Bold" ]
+, ParBreak
+, Code
+    "typ/text/emphasis-02.typ"
+    ( line 8 , column 2 )
+    (Set
+       (Ident (Identifier "strong"))
+       [ KeyValArg (Identifier "delta") (Literal (Int 150)) ])
+, SoftBreak
+, Strong [ Text "Medium" ]
+, Space
+, Text "and"
+, Space
+, Strong
+    [ Code
+        "typ/text/emphasis-02.typ"
+        ( line 9 , column 16 )
+        (Block (Content [ Strong [ Text "Bold" ] ]))
+    ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [Normal]), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 strong(body: text(body: [Bold]), 
+                        delta: 300), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 strong(body: text(body: [Medium]), 
+                        delta: 150), 
+                 text(body: [ and ]), 
+                 strong(body: strong(body: text(body: [Bold]), 
+                                     delta: 150), 
+                        delta: 150), 
+                 parbreak() })
diff --git a/test/typ/text/emphasis-03.out b/test/typ/text/emphasis-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/emphasis-03.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/text/emphasis-04.out b/test/typ/text/emphasis-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/emphasis-04.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/text/emphasis-05.out b/test/typ/text/emphasis-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/emphasis-05.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/text/escape-00.out b/test/typ/text/escape-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/escape-00.out
@@ -0,0 +1,187 @@
+--- parse tree ---
+[ Code
+    "typ/text/escape-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/escape-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/escape-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "\\"
+, Space
+, Text "/"
+, Space
+, Text "["
+, Space
+, Text "]"
+, Space
+, Text "{"
+, Space
+, Text "}"
+, Space
+, Text "#"
+, Space
+, Text "*"
+, Space
+, Text "_"
+, Space
+, Text "+"
+, Space
+, Text "="
+, Space
+, Text "~"
+, Space
+, HardBreak
+, Text "`"
+, Space
+, Text "$"
+, Space
+, Text "\""
+, Space
+, Text "'"
+, Space
+, Text "<"
+, Space
+, Text ">"
+, Space
+, Text "@"
+, Space
+, Text "("
+, Space
+, Text ")"
+, Space
+, Text "A"
+, ParBreak
+, Comment
+, Text "("
+, Space
+, Text ")"
+, Space
+, Text ";"
+, ParBreak
+, Comment
+, Text "/"
+, Text "/"
+, SoftBreak
+, Text "/"
+, Text "*"
+, Space
+, Text "*"
+, Text "/"
+, SoftBreak
+, Text "/"
+, Strong [ Space , Text "*" , Text "/" , Space ]
+, ParBreak
+, Comment
+, Text "\127957"
+, Space
+, Text "="
+, Text "="
+, Space
+, Text "\127957"
+, ParBreak
+, Comment
+, Text "A"
+, Space
+, Text "vs"
+, Text "."
+, Space
+, Text "\\"
+, Text "u"
+, Text "{"
+, Text "41"
+, Text "}"
+, ParBreak
+, Comment
+, Text "let"
+, Space
+, Text "f"
+, Text "("
+, Text ")"
+, Space
+, Text ","
+, Space
+, Text ";"
+, Space
+, Text ":"
+, Space
+, Text "|"
+, Space
+, Text "+"
+, Space
+, Text "-"
+, Space
+, Text "/"
+, Text "="
+, Space
+, Text "="
+, Text "="
+, Space
+, Text "12"
+, Space
+, Quote '"'
+, Text "string"
+, Quote '"'
+, ParBreak
+, Comment
+, Text "10"
+, Text "."
+, Space
+, Text "May"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [\ / [ ] { } # * _ + = ~ ]), 
+                 linebreak(), 
+                 text(body: [` $ " ' < > @ ( ) A]), 
+                 parbreak(), 
+                 text(body: [( ) ;]), 
+                 parbreak(), 
+                 text(body: [//
+/* */
+/]), 
+                 strong(body: text(body: [ */ ])), 
+                 parbreak(), 
+                 text(body: [🏕 == 🏕]), 
+                 parbreak(), 
+                 text(body: [A vs. \u{41}]), 
+                 parbreak(), 
+                 text(body: [let f() , ; : | + - /= == 12 “string”]), 
+                 parbreak(), 
+                 text(body: [10. May]), 
+                 parbreak() })
diff --git a/test/typ/text/escape-01.out b/test/typ/text/escape-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/escape-01.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/text/escape-02.out b/test/typ/text/escape-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/escape-02.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/text/fallback-00.out b/test/typ/text/fallback-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/fallback-00.out
@@ -0,0 +1,81 @@
+--- parse tree ---
+[ Code
+    "typ/text/fallback-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/fallback-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/fallback-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "A\128512B"
+, ParBreak
+, Comment
+, Text "\1583\1593"
+, Space
+, Text "\1575\1604\1606\1589"
+, Space
+, Text "\1610\1605\1591\1585"
+, Space
+, Text "\1593\1604\1610\1603"
+, ParBreak
+, Comment
+, Text "\1576\128008\128512\1587\1605"
+, ParBreak
+, Comment
+, Text "A\1576\128512\127966\1587\1605B"
+, ParBreak
+, Comment
+, Text "01\65039\8419\&2"
+, ParBreak
+, Comment
+, Text "A\128008\4850\4638B"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [A😀B]), 
+                 parbreak(), 
+                 text(body: [دع النص يمطر عليك]), 
+                 parbreak(), 
+                 text(body: [ب🐈😀سم]), 
+                 parbreak(), 
+                 text(body: [Aب😀🏞سمB]), 
+                 parbreak(), 
+                 text(body: [01️⃣2]), 
+                 parbreak(), 
+                 text(body: [A🐈ዲሞB]), 
+                 parbreak() })
diff --git a/test/typ/text/features-00.out b/test/typ/text/features-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/features-00.out
@@ -0,0 +1,72 @@
+--- parse tree ---
+[ Code
+    "typ/text/features-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/features-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/features-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/text/features-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "kerning") (Literal (Boolean True))
+       , BlockArg [ Text "Tq" ]
+       ])
+, Space
+, HardBreak
+, Code
+    "typ/text/features-00.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "kerning") (Literal (Boolean False))
+       , BlockArg [ Text "Tq" ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: text(body: [Tq]), 
+                      kerning: true), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 text(body: text(body: [Tq]), 
+                      kerning: false), 
+                 parbreak() })
diff --git a/test/typ/text/features-01.out b/test/typ/text/features-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/features-01.out
@@ -0,0 +1,54 @@
+--- parse tree ---
+[ Code
+    "typ/text/features-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/features-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/features-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/text/features-01.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "smallcaps")) [ BlockArg [ Text "Smallcaps" ] ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 smallcaps(body: text(body: [Smallcaps])), 
+                 parbreak() })
diff --git a/test/typ/text/features-02.out b/test/typ/text/features-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/features-02.out
@@ -0,0 +1,98 @@
+--- parse tree ---
+[ Code
+    "typ/text/features-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/features-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/features-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/text/features-02.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "font") (Literal (String "IBM Plex Serif"))
+       ])
+, SoftBreak
+, Text "a"
+, Space
+, Text "vs"
+, Space
+, Code
+    "typ/text/features-02.typ"
+    ( line 4 , column 7 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "alternates") (Literal (Boolean True))
+       , BlockArg [ Text "a" ]
+       ])
+, Space
+, HardBreak
+, Text "\223"
+, Space
+, Text "vs"
+, Space
+, Code
+    "typ/text/features-02.typ"
+    ( line 5 , column 7 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "stylistic-set") (Literal (Int 5))
+       , BlockArg [ Text "\223" ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+a vs ], 
+                      font: "IBM Plex Serif"), 
+                 text(alternates: true, 
+                      body: text(body: [a], 
+                                 font: "IBM Plex Serif"), 
+                      font: "IBM Plex Serif"), 
+                 text(body: [ ], 
+                      font: "IBM Plex Serif"), 
+                 linebreak(), 
+                 text(body: [ß vs ], 
+                      font: "IBM Plex Serif"), 
+                 text(body: text(body: [ß], 
+                                 font: "IBM Plex Serif"), 
+                      font: "IBM Plex Serif", 
+                      stylistic-set: 5), 
+                 parbreak() })
diff --git a/test/typ/text/features-03.out b/test/typ/text/features-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/features-03.out
@@ -0,0 +1,64 @@
+--- parse tree ---
+[ Code
+    "typ/text/features-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/features-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/features-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "fi"
+, Space
+, Text "vs"
+, Text "."
+, Space
+, Code
+    "typ/text/features-03.typ"
+    ( line 3 , column 9 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "ligatures") (Literal (Boolean False))
+       , BlockArg [ Text "No" , Space , Text "fi" ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [fi vs. ]), 
+                 text(body: text(body: [No fi]), 
+                      ligatures: false), 
+                 parbreak() })
diff --git a/test/typ/text/features-04.out b/test/typ/text/features-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/features-04.out
@@ -0,0 +1,75 @@
+--- parse tree ---
+[ Code
+    "typ/text/features-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/features-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/features-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/text/features-04.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg
+           (Identifier "number-type") (Literal (String "old-style"))
+       ])
+, SoftBreak
+, Text "0123456789"
+, Space
+, HardBreak
+, Code
+    "typ/text/features-04.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "number-type") (Literal Auto)
+       , BlockArg [ Text "0123456789" ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+0123456789 ], 
+                      number-type: "old-style"), 
+                 linebreak(), 
+                 text(body: text(body: [0123456789], 
+                                 number-type: "old-style"), 
+                      number-type: auto), 
+                 parbreak() })
diff --git a/test/typ/text/features-05.out b/test/typ/text/features-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/features-05.out
@@ -0,0 +1,89 @@
+--- parse tree ---
+[ Code
+    "typ/text/features-05.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/features-05.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/features-05.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/text/features-05.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ KeyValArg
+           (Identifier "number-width") (Literal (String "proportional"))
+       , BlockArg [ Text "0123456789" ]
+       ])
+, Space
+, HardBreak
+, Code
+    "typ/text/features-05.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ KeyValArg
+           (Identifier "number-width") (Literal (String "tabular"))
+       , BlockArg [ Text "3456789123" ]
+       ])
+, Space
+, HardBreak
+, Code
+    "typ/text/features-05.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ KeyValArg
+           (Identifier "number-width") (Literal (String "tabular"))
+       , BlockArg [ Text "0123456789" ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: text(body: [0123456789]), 
+                      number-width: "proportional"), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 text(body: text(body: [3456789123]), 
+                      number-width: "tabular"), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 text(body: text(body: [0123456789]), 
+                      number-width: "tabular"), 
+                 parbreak() })
diff --git a/test/typ/text/features-06.out b/test/typ/text/features-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/features-06.out
@@ -0,0 +1,102 @@
+--- parse tree ---
+[ Code
+    "typ/text/features-06.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/features-06.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/features-06.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/text/features-06.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "font") (Literal (String "IBM Plex Serif"))
+       ])
+, SoftBreak
+, Text "0"
+, Space
+, Text "vs"
+, Text "."
+, Space
+, Code
+    "typ/text/features-06.typ"
+    ( line 4 , column 8 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "slashed-zero") (Literal (Boolean True))
+       , BlockArg [ Text "0" ]
+       ])
+, Space
+, HardBreak
+, Text "1"
+, Text "/"
+, Text "2"
+, Space
+, Text "vs"
+, Text "."
+, Space
+, Code
+    "typ/text/features-06.typ"
+    ( line 5 , column 10 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "fractions") (Literal (Boolean True))
+       , BlockArg [ Text "1" , Text "/" , Text "2" ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+0 vs. ], 
+                      font: "IBM Plex Serif"), 
+                 text(body: text(body: [0], 
+                                 font: "IBM Plex Serif"), 
+                      font: "IBM Plex Serif", 
+                      slashed-zero: true), 
+                 text(body: [ ], 
+                      font: "IBM Plex Serif"), 
+                 linebreak(), 
+                 text(body: [1/2 vs. ], 
+                      font: "IBM Plex Serif"), 
+                 text(body: text(body: [1/2], 
+                                 font: "IBM Plex Serif"), 
+                      font: "IBM Plex Serif", 
+                      fractions: true), 
+                 parbreak() })
diff --git a/test/typ/text/features-07.out b/test/typ/text/features-07.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/features-07.out
@@ -0,0 +1,81 @@
+--- parse tree ---
+[ Code
+    "typ/text/features-07.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/features-07.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/features-07.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/text/features-07.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ KeyValArg
+           (Identifier "features") (Array [ Reg (Literal (String "smcp")) ])
+       , BlockArg [ Text "Smcp" ]
+       ])
+, Space
+, HardBreak
+, Text "fi"
+, Space
+, Text "vs"
+, Text "."
+, Space
+, Code
+    "typ/text/features-07.typ"
+    ( line 4 , column 9 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ KeyValArg
+           (Identifier "features")
+           (Dict [ Reg ( Ident (Identifier "liga") , Literal (Int 0) ) ])
+       , BlockArg [ Text "No" , Space , Text "fi" ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: text(body: [Smcp]), 
+                      features: ("smcp")), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 text(body: [fi vs. ]), 
+                 text(body: text(body: [No fi]), 
+                      features: (liga: 0)), 
+                 parbreak() })
diff --git a/test/typ/text/features-08.out b/test/typ/text/features-08.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/features-08.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/text/features-09.out b/test/typ/text/features-09.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/features-09.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/text/features-10.out b/test/typ/text/features-10.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/features-10.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/text/features-11.out b/test/typ/text/features-11.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/features-11.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/text/features-12.out b/test/typ/text/features-12.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/features-12.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/text/font-00.out b/test/typ/text/font-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/font-00.out
@@ -0,0 +1,239 @@
+--- parse tree ---
+[ Code
+    "typ/text/font-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/font-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/font-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/text/font-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ NormalArg (Literal (Numeric 20.0 Pt)) , BlockArg [ Text "A" ] ])
+, SoftBreak
+, Code
+    "typ/text/font-00.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ NormalArg (Literal (Numeric 2.0 Em)) , BlockArg [ Text "A" ] ])
+, SoftBreak
+, Code
+    "typ/text/font-00.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ KeyValArg
+           (Identifier "size")
+           (Plus (Literal (Numeric 15.0 Pt)) (Literal (Numeric 0.5 Em)))
+       , BlockArg [ Text "A" ]
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/text/font-00.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "text")) [ BlockArg [ Text "Normal" ] ])
+, ParBreak
+, Comment
+, Code
+    "typ/text/font-00.typ"
+    ( line 11 , column 2 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "style") (Literal (String "italic"))
+       , BlockArg [ Text "Italic" ]
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/text/font-00.typ"
+    ( line 14 , column 2 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "weight") (Literal (String "bold"))
+       , BlockArg [ Text "Bold" ]
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/text/font-00.typ"
+    ( line 17 , column 2 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "stretch") (Literal (Numeric 50.0 Percent))
+       , BlockArg [ Text "Condensed" ]
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/text/font-00.typ"
+    ( line 20 , column 2 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "font") (Literal (String "IBM Plex Serif"))
+       , BlockArg [ Text "Serif" ]
+       ])
+, ParBreak
+, Comment
+, Text "Emoji"
+, Text ":"
+, Space
+, Text "\128042,"
+, Space
+, Text "\127755,"
+, Space
+, Text "\127966"
+, ParBreak
+, Comment
+, Code
+    "typ/text/font-00.typ"
+    ( line 26 , column 2 )
+    (Block
+       (Content
+          [ SoftBreak
+          , Code
+              "typ/text/font-00.typ"
+              ( line 27 , column 4 )
+              (Set
+                 (Ident (Identifier "text"))
+                 [ KeyValArg (Identifier "fill") (Ident (Identifier "eastern")) ])
+          , SoftBreak
+          , Text "This"
+          , Space
+          , Text "is"
+          , Space
+          , Code
+              "typ/text/font-00.typ"
+              ( line 28 , column 12 )
+              (FuncCall
+                 (Ident (Identifier "text"))
+                 [ NormalArg
+                     (FuncCall
+                        (Ident (Identifier "rgb"))
+                        [ NormalArg (Literal (String "FA644B")) ])
+                 , BlockArg [ Text "way" , Space , Text "more" ]
+                 ])
+          , Space
+          , Text "colorful"
+          , Text "."
+          , ParBreak
+          ]))
+, ParBreak
+, Comment
+, Comment
+, Code
+    "typ/text/font-00.typ"
+    ( line 33 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg
+           (Identifier "font")
+           (Array
+              [ Reg (Literal (String "PT Sans"))
+              , Reg (Literal (String "Twitter Color Emoji"))
+              ])
+       , KeyValArg (Identifier "fallback") (Literal (Boolean False))
+       ])
+, SoftBreak
+, Text "2\960"
+, Space
+, Text "="
+, Space
+, Text "\120572"
+, Space
+, Text "+"
+, Space
+, Text "\120573"
+, Text "."
+, Space
+, Text "\9989"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: text(body: [A]), 
+                      size: 20.0pt), 
+                 text(body: [
+]), 
+                 text(body: text(body: [A]), 
+                      size: 2.0em), 
+                 text(body: [
+]), 
+                 text(body: text(body: [A]), 
+                      size: 15.0pt + 0.5em), 
+                 parbreak(), 
+                 text(body: text(body: [Normal])), 
+                 parbreak(), 
+                 text(body: text(body: [Italic]), 
+                      style: "italic"), 
+                 parbreak(), 
+                 text(body: text(body: [Bold]), 
+                      weight: "bold"), 
+                 parbreak(), 
+                 text(body: text(body: [Condensed]), 
+                      stretch: 50%), 
+                 parbreak(), 
+                 text(body: text(body: [Serif]), 
+                      font: "IBM Plex Serif"), 
+                 parbreak(), 
+                 text(body: [Emoji: 🐪, 🌋, 🏞]), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 text(body: [
+This is ], 
+                      fill: rgb(13%,61%,67%,100%)), 
+                 text(body: text(body: [way more], 
+                                 fill: rgb(13%,61%,67%,100%)), 
+                      color: rgb(98%,39%,29%,100%), 
+                      fill: rgb(13%,61%,67%,100%)), 
+                 text(body: [ colorful.], 
+                      fill: rgb(13%,61%,67%,100%)), 
+                 parbreak(), 
+                 parbreak(), 
+                 text(body: [
+2π = 𝛼 + 𝛽. ✅], 
+                      fallback: false, 
+                      fill: rgb(13%,61%,67%,100%), 
+                      font: ("PT Sans", 
+                             "Twitter Color Emoji")), 
+                 parbreak() })
diff --git a/test/typ/text/font-01.out b/test/typ/text/font-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/font-01.out
@@ -0,0 +1,122 @@
+--- parse tree ---
+[ Code
+    "typ/text/font-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/font-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/font-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/text/font-01.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ NormalArg (Literal (String "Text")) ])
+, Space
+, HardBreak
+, Code
+    "typ/text/font-01.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ NormalArg (Ident (Identifier "red"))
+       , NormalArg (Literal (String "Text"))
+       ])
+, Space
+, HardBreak
+, Code
+    "typ/text/font-01.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "font") (Literal (String "Ubuntu"))
+       , NormalArg (Ident (Identifier "blue"))
+       , NormalArg (Literal (String "Text"))
+       ])
+, Space
+, HardBreak
+, Code
+    "typ/text/font-01.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ NormalArg (Block (Content [ Text "Text" ]))
+       , NormalArg (Ident (Identifier "teal"))
+       , KeyValArg (Identifier "font") (Literal (String "IBM Plex Serif"))
+       ])
+, Space
+, HardBreak
+, Code
+    "typ/text/font-01.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ NormalArg (Ident (Identifier "red"))
+       , KeyValArg
+           (Identifier "font") (Literal (String "New Computer Modern"))
+       , NormalArg (Block (Content [ Text "Text" ]))
+       ])
+, Space
+, HardBreak
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: "Text"), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 text(body: "Text", 
+                      color: rgb(100%,25%,21%,100%)), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 text(body: "Text", 
+                      color: rgb(0%,45%,85%,100%), 
+                      font: "Ubuntu"), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 text(body: text(body: [Text]), 
+                      color: rgb(22%,80%,80%,100%), 
+                      font: "IBM Plex Serif"), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 text(body: text(body: [Text]), 
+                      color: rgb(100%,25%,21%,100%), 
+                      font: "New Computer Modern"), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 parbreak() })
diff --git a/test/typ/text/font-02.out b/test/typ/text/font-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/font-02.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/text/font-03.out b/test/typ/text/font-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/font-03.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/text/font-04.out b/test/typ/text/font-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/font-04.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/text/font-05.out b/test/typ/text/font-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/font-05.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/text/hyphenate-00.out b/test/typ/text/hyphenate-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/hyphenate-00.out
@@ -0,0 +1,114 @@
+--- parse tree ---
+[ Code
+    "typ/text/hyphenate-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/hyphenate-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/hyphenate-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/text/hyphenate-00.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "hyphenate") (Literal (Boolean True)) ])
+, SoftBreak
+, Code
+    "typ/text/hyphenate-00.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal Auto) ])
+, SoftBreak
+, Code
+    "typ/text/hyphenate-00.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "grid"))
+       [ KeyValArg
+           (Identifier "columns")
+           (Array
+              [ Reg (Literal (Numeric 50.0 Pt))
+              , Reg (Literal (Numeric 50.0 Pt))
+              ])
+       , NormalArg
+           (Block
+              (Content
+                 [ Text "Warm"
+                 , Space
+                 , Text "welcomes"
+                 , Space
+                 , Text "to"
+                 , Space
+                 , Text "Typst"
+                 , Text "."
+                 ]))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "text"))
+              [ KeyValArg (Identifier "lang") (Literal (String "el"))
+              , BlockArg
+                  [ Text "\948\953\945\956\949\961\943\963\956\945\964\945"
+                  , Text "."
+                  , Space
+                  , HardBreak
+                  , Text "\955\945\964\961\949\965\964\972\962"
+                  ]
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+], 
+                      hyphenate: true), 
+                 text(body: [
+], 
+                      hyphenate: true), 
+                 grid(children: (text(body: [Warm welcomes to Typst.], 
+                                      hyphenate: true), 
+                                 text(body: { text(body: [διαμερίσματα. ], 
+                                                   hyphenate: true), 
+                                              linebreak(), 
+                                              text(body: [λατρευτός], 
+                                                   hyphenate: true) }, 
+                                      hyphenate: true, 
+                                      lang: "el")), 
+                      columns: (50.0pt, 50.0pt)), 
+                 parbreak() })
diff --git a/test/typ/text/hyphenate-01.out b/test/typ/text/hyphenate-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/hyphenate-01.out
@@ -0,0 +1,201 @@
+--- parse tree ---
+[ Code
+    "typ/text/hyphenate-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/hyphenate-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/hyphenate-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/text/hyphenate-01.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 110.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/text/hyphenate-01.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "hyphenate") (Literal (Boolean True)) ])
+, ParBreak
+, Text "Welcome"
+, Space
+, Text "to"
+, Space
+, Text "wonderful"
+, Space
+, Text "experiences"
+, Text "."
+, Space
+, HardBreak
+, Text "Welcome"
+, Space
+, Text "to"
+, Space
+, RawInline "wonderful"
+, Space
+, Text "experiences"
+, Text "."
+, Space
+, HardBreak
+, Text "Welcome"
+, Space
+, Text "to"
+, Space
+, Code
+    "typ/text/hyphenate-01.typ"
+    ( line 8 , column 13 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "hyphenate") (Literal (Boolean False))
+       , BlockArg [ Text "wonderful" ]
+       ])
+, Space
+, Text "experiences"
+, Text "."
+, Space
+, HardBreak
+, Text "Welcome"
+, Space
+, Text "to"
+, Space
+, Text "wonde"
+, Code
+    "typ/text/hyphenate-01.typ"
+    ( line 9 , column 18 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "hyphenate") (Literal (Boolean False))
+       , BlockArg [ Text "rf" ]
+       ])
+, Text "ul"
+, Space
+, Text "experiences"
+, Text "."
+, Space
+, HardBreak
+, SoftBreak
+, Comment
+, Code
+    "typ/text/hyphenate-01.typ"
+    ( line 12 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "hyphenate") (Literal (Boolean False)) ])
+, SoftBreak
+, Text "Welcome"
+, Space
+, Text "to"
+, Space
+, Text "wonderful"
+, Space
+, Text "experiences"
+, Text "."
+, Space
+, HardBreak
+, Text "Welcome"
+, Space
+, Text "to"
+, Space
+, Text "wo"
+, Code
+    "typ/text/hyphenate-01.typ"
+    ( line 14 , column 15 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "hyphenate") (Literal (Boolean True))
+       , BlockArg [ Text "nd" ]
+       ])
+, Text "erful"
+, Space
+, Text "experiences"
+, Text "."
+, Space
+, HardBreak
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [Welcome to wonderful experiences. ], 
+                      hyphenate: true), 
+                 linebreak(), 
+                 text(body: [Welcome to ], 
+                      hyphenate: true), 
+                 raw(block: false, 
+                     lang: none, 
+                     text: "wonderful"), 
+                 text(body: [ experiences. ], 
+                      hyphenate: true), 
+                 linebreak(), 
+                 text(body: [Welcome to ], 
+                      hyphenate: true), 
+                 text(body: text(body: [wonderful], 
+                                 hyphenate: true), 
+                      hyphenate: false), 
+                 text(body: [ experiences. ], 
+                      hyphenate: true), 
+                 linebreak(), 
+                 text(body: [Welcome to wonde], 
+                      hyphenate: true), 
+                 text(body: text(body: [rf], 
+                                 hyphenate: true), 
+                      hyphenate: false), 
+                 text(body: [ul experiences. ], 
+                      hyphenate: true), 
+                 linebreak(), 
+                 text(body: [
+], 
+                      hyphenate: true), 
+                 text(body: [
+Welcome to wonderful experiences. ], 
+                      hyphenate: false), 
+                 linebreak(), 
+                 text(body: [Welcome to wo], 
+                      hyphenate: false), 
+                 text(body: text(body: [nd], 
+                                 hyphenate: false), 
+                      hyphenate: true), 
+                 text(body: [erful experiences. ], 
+                      hyphenate: false), 
+                 linebreak(), 
+                 parbreak() })
diff --git a/test/typ/text/hyphenate-02.out b/test/typ/text/hyphenate-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/hyphenate-02.out
@@ -0,0 +1,83 @@
+--- parse tree ---
+[ Code
+    "typ/text/hyphenate-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/hyphenate-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/hyphenate-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/text/hyphenate-02.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 80.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/text/hyphenate-02.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "hyphenate") (Literal (Boolean True)) ])
+, SoftBreak
+, Text "It"
+, Quote '\''
+, Text "s"
+, Space
+, Text "a"
+, Space
+, Code
+    "typ/text/hyphenate-02.typ"
+    ( line 5 , column 9 )
+    (FuncCall (Ident (Identifier "emph")) [ BlockArg [ Text "Tree" ] ])
+, Text "beard"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+It’s a ], 
+                      hyphenate: true), 
+                 emph(body: text(body: [Tree], 
+                                 hyphenate: true)), 
+                 text(body: [beard.], 
+                      hyphenate: true), 
+                 parbreak() })
diff --git a/test/typ/text/hyphenate-03.out b/test/typ/text/hyphenate-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/hyphenate-03.out
@@ -0,0 +1,82 @@
+--- parse tree ---
+[ Code
+    "typ/text/hyphenate-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/hyphenate-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/hyphenate-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/text/hyphenate-03.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "lang") (Literal (String "de"))
+       , KeyValArg (Identifier "hyphenate") (Literal (Boolean True))
+       ])
+, SoftBreak
+, Code
+    "typ/text/hyphenate-03.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "grid"))
+       [ KeyValArg
+           (Identifier "columns")
+           (Times
+              (Literal (Int 2)) (Array [ Reg (Literal (Numeric 20.0 Pt)) ]))
+       , KeyValArg (Identifier "gutter") (Literal (Numeric 20.0 Pt))
+       , NormalArg (Block (Content [ Text "Barankauf" ]))
+       , NormalArg (Block (Content [ Text "Bar" , Shy , Text "ankauf" ]))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+], 
+                      hyphenate: true, 
+                      lang: "de"), 
+                 grid(children: (text(body: [Barankauf], 
+                                      hyphenate: true, 
+                                      lang: "de"), 
+                                 text(body: [Bar­ankauf], 
+                                      hyphenate: true, 
+                                      lang: "de")), 
+                      columns: (20.0pt, 20.0pt), 
+                      gutter: 20.0pt), 
+                 parbreak() })
diff --git a/test/typ/text/hyphenate-04.out b/test/typ/text/hyphenate-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/hyphenate-04.out
@@ -0,0 +1,85 @@
+--- parse tree ---
+[ Code
+    "typ/text/hyphenate-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/hyphenate-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/hyphenate-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Comment
+, Comment
+, Code
+    "typ/text/hyphenate-04.typ"
+    ( line 6 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 60.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/text/hyphenate-04.typ"
+    ( line 7 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "hyphenate") (Literal (Boolean True)) ])
+, SoftBreak
+, Code
+    "typ/text/hyphenate-04.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "h")) [ NormalArg (Literal (Numeric 6.0 Pt)) ])
+, Space
+, Text "networks,"
+, Space
+, Text "the"
+, Space
+, Text "rest"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+], 
+                      hyphenate: true), 
+                 h(amount: 6.0pt), 
+                 text(body: [ networks, the rest.], 
+                      hyphenate: true), 
+                 parbreak() })
diff --git a/test/typ/text/lang-00.out b/test/typ/text/lang-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/lang-00.out
@@ -0,0 +1,91 @@
+--- parse tree ---
+[ Code
+    "typ/text/lang-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/lang-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/lang-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/text/lang-00.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "hyphenate") (Literal (Boolean True)) ])
+, SoftBreak
+, Code
+    "typ/text/lang-00.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "grid"))
+       [ KeyValArg
+           (Identifier "columns")
+           (Times
+              (Literal (Int 2)) (Array [ Reg (Literal (Numeric 20.0 Pt)) ]))
+       , KeyValArg (Identifier "gutter") (Literal (Numeric 1.0 Fr))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "text"))
+              [ KeyValArg (Identifier "lang") (Literal (String "en"))
+              , BlockArg [ Quote '"' , Text "Eingabeaufforderung" , Quote '"' ]
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "text"))
+              [ KeyValArg (Identifier "lang") (Literal (String "de"))
+              , BlockArg [ Quote '"' , Text "Eingabeaufforderung" , Quote '"' ]
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+], 
+                      hyphenate: true), 
+                 grid(children: (text(body: text(body: [“Eingabeaufforderung”], 
+                                                 hyphenate: true), 
+                                      hyphenate: true, 
+                                      lang: "en"), 
+                                 text(body: text(body: [“Eingabeaufforderung”], 
+                                                 hyphenate: true), 
+                                      hyphenate: true, 
+                                      lang: "de")), 
+                      columns: (20.0pt, 20.0pt), 
+                      gutter: 1.0fr), 
+                 parbreak() })
diff --git a/test/typ/text/lang-01.out b/test/typ/text/lang-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/lang-01.out
@@ -0,0 +1,93 @@
+--- parse tree ---
+[ Code
+    "typ/text/lang-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/lang-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/lang-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/text/lang-01.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "font") (Literal (String "Ubuntu")) ])
+, ParBreak
+, Comment
+, Comment
+, Comment
+, Comment
+, Text "\1041\1073"
+, SoftBreak
+, Code
+    "typ/text/lang-01.typ"
+    ( line 10 , column 2 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "lang") (Literal (String "uk"))
+       , BlockArg [ Text "\1041\1073" ]
+       ])
+, SoftBreak
+, Code
+    "typ/text/lang-01.typ"
+    ( line 11 , column 2 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "lang") (Literal (String "sr"))
+       , BlockArg [ Text "\1041\1073" ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [Бб
+], 
+                      font: "Ubuntu"), 
+                 text(body: text(body: [Бб], 
+                                 font: "Ubuntu"), 
+                      font: "Ubuntu", 
+                      lang: "uk"), 
+                 text(body: [
+], 
+                      font: "Ubuntu"), 
+                 text(body: text(body: [Бб], 
+                                 font: "Ubuntu"), 
+                      font: "Ubuntu", 
+                      lang: "sr"), 
+                 parbreak() })
diff --git a/test/typ/text/lang-02.out b/test/typ/text/lang-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/lang-02.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/text/lang-03.out b/test/typ/text/lang-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/lang-03.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/text/lang-04.out b/test/typ/text/lang-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/lang-04.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/text/lang-05.out b/test/typ/text/lang-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/lang-05.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/text/lang-with-region-00.out b/test/typ/text/lang-with-region-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/lang-with-region-00.out
@@ -0,0 +1,62 @@
+--- parse tree ---
+[ Code
+    "typ/text/lang-with-region-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/lang-with-region-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/lang-with-region-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/text/lang-with-region-00.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "lang") (Literal (String "zh")) ])
+, SoftBreak
+, Code
+    "typ/text/lang-with-region-00.typ"
+    ( line 4 , column 2 )
+    (FuncCall (Ident (Identifier "outline")) [])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+], lang: "zh"), 
+                 outline(), 
+                 parbreak() })
diff --git a/test/typ/text/lang-with-region-01.out b/test/typ/text/lang-with-region-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/lang-with-region-01.out
@@ -0,0 +1,66 @@
+--- parse tree ---
+[ Code
+    "typ/text/lang-with-region-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/lang-with-region-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/lang-with-region-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/text/lang-with-region-01.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "lang") (Literal (String "zh"))
+       , KeyValArg (Identifier "region") (Literal (String "XX"))
+       ])
+, SoftBreak
+, Code
+    "typ/text/lang-with-region-01.typ"
+    ( line 4 , column 2 )
+    (FuncCall (Ident (Identifier "outline")) [])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+], 
+                      lang: "zh", 
+                      region: "XX"), 
+                 outline(), 
+                 parbreak() })
diff --git a/test/typ/text/lang-with-region-02.out b/test/typ/text/lang-with-region-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/lang-with-region-02.out
@@ -0,0 +1,66 @@
+--- parse tree ---
+[ Code
+    "typ/text/lang-with-region-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/lang-with-region-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/lang-with-region-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/text/lang-with-region-02.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "lang") (Literal (String "zh"))
+       , KeyValArg (Identifier "region") (Literal (String "TW"))
+       ])
+, SoftBreak
+, Code
+    "typ/text/lang-with-region-02.typ"
+    ( line 4 , column 2 )
+    (FuncCall (Ident (Identifier "outline")) [])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+], 
+                      lang: "zh", 
+                      region: "TW"), 
+                 outline(), 
+                 parbreak() })
diff --git a/test/typ/text/linebreak-00.out b/test/typ/text/linebreak-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/linebreak-00.out
@@ -0,0 +1,57 @@
+--- parse tree ---
+[ Code
+    "typ/text/linebreak-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/linebreak-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/linebreak-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "This"
+, Space
+, Text "is"
+, Space
+, Text "a"
+, Space
+, Text "spaceexceedinglylongy"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [This is a spaceexceedinglylongy.]), 
+                 parbreak() })
diff --git a/test/typ/text/linebreak-01.out b/test/typ/text/linebreak-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/linebreak-01.out
@@ -0,0 +1,53 @@
+--- parse tree ---
+[ Code
+    "typ/text/linebreak-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/linebreak-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/linebreak-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "Supercalifragilisticexpialidocious"
+, Space
+, Text "Expialigoricmetrioxidation"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [Supercalifragilisticexpialidocious Expialigoricmetrioxidation.]), 
+                 parbreak() })
diff --git a/test/typ/text/linebreak-02.out b/test/typ/text/linebreak-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/linebreak-02.out
@@ -0,0 +1,64 @@
+--- parse tree ---
+[ Code
+    "typ/text/linebreak-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/linebreak-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/linebreak-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "This"
+, Space
+, Text "is"
+, Space
+, Text "partly"
+, Space
+, Text "emp"
+, Code
+    "typ/text/linebreak-02.typ"
+    ( line 3 , column 20 )
+    (FuncCall (Ident (Identifier "emph")) [ BlockArg [ Text "has" ] ])
+, Text "ized"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [This is partly emp]), 
+                 emph(body: text(body: [has])), 
+                 text(body: [ized.]), 
+                 parbreak() })
diff --git a/test/typ/text/linebreak-03.out b/test/typ/text/linebreak-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/linebreak-03.out
@@ -0,0 +1,58 @@
+--- parse tree ---
+[ Code
+    "typ/text/linebreak-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/linebreak-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/linebreak-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Text "Hard"
+, Space
+, Code
+    "typ/text/linebreak-03.typ"
+    ( line 2 , column 7 )
+    (FuncCall (Ident (Identifier "linebreak")) [])
+, Space
+, Text "break"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+Hard ]), 
+                 linebreak(), 
+                 text(body: [ break.]), 
+                 parbreak() })
diff --git a/test/typ/text/linebreak-04.out b/test/typ/text/linebreak-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/linebreak-04.out
@@ -0,0 +1,64 @@
+--- parse tree ---
+[ Code
+    "typ/text/linebreak-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/linebreak-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/linebreak-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "Hard"
+, Space
+, Text "break"
+, Space
+, Text "directly"
+, Space
+, Text "after"
+, Space
+, HardBreak
+, Text "normal"
+, Space
+, Text "break"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [Hard break directly after ]), 
+                 linebreak(), 
+                 text(body: [normal break.]), 
+                 parbreak() })
diff --git a/test/typ/text/linebreak-05.out b/test/typ/text/linebreak-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/linebreak-05.out
@@ -0,0 +1,71 @@
+--- parse tree ---
+[ Code
+    "typ/text/linebreak-05.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/linebreak-05.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/linebreak-05.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "Two"
+, Space
+, Text "consecutive"
+, Space
+, HardBreak
+, HardBreak
+, Text "breaks"
+, Space
+, Text "and"
+, Space
+, Text "three"
+, Space
+, HardBreak
+, HardBreak
+, Text "more"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [Two consecutive ]), 
+                 linebreak(), 
+                 linebreak(), 
+                 text(body: [breaks and three ]), 
+                 linebreak(), 
+                 linebreak(), 
+                 text(body: [more.]), 
+                 parbreak() })
diff --git a/test/typ/text/linebreak-06.out b/test/typ/text/linebreak-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/linebreak-06.out
@@ -0,0 +1,57 @@
+--- parse tree ---
+[ Code
+    "typ/text/linebreak-06.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/linebreak-06.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/linebreak-06.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "Trailing"
+, Space
+, Text "break"
+, Space
+, HardBreak
+, HardBreak
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [Trailing break ]), 
+                 linebreak(), 
+                 linebreak(), 
+                 parbreak() })
diff --git a/test/typ/text/linebreak-07.out b/test/typ/text/linebreak-07.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/linebreak-07.out
@@ -0,0 +1,113 @@
+--- parse tree ---
+[ Code
+    "typ/text/linebreak-07.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/linebreak-07.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/linebreak-07.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/text/linebreak-07.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "par"))
+       [ KeyValArg (Identifier "justify") (Literal (Boolean True)) ])
+, SoftBreak
+, Text "With"
+, Space
+, Text "a"
+, Space
+, Text "soft"
+, Space
+, Code
+    "typ/text/linebreak-07.typ"
+    ( line 4 , column 14 )
+    (FuncCall
+       (Ident (Identifier "linebreak"))
+       [ KeyValArg (Identifier "justify") (Literal (Boolean True)) ])
+, SoftBreak
+, Text "break"
+, Space
+, Text "you"
+, Space
+, Text "can"
+, Space
+, Text "force"
+, Space
+, Text "a"
+, Space
+, Text "break"
+, Space
+, Text "without"
+, Space
+, Code
+    "typ/text/linebreak-07.typ"
+    ( line 5 , column 38 )
+    (FuncCall
+       (Ident (Identifier "linebreak"))
+       [ KeyValArg (Identifier "justify") (Literal (Boolean True)) ])
+, SoftBreak
+, Text "breaking"
+, Space
+, Text "justification"
+, Text "."
+, Space
+, Code
+    "typ/text/linebreak-07.typ"
+    ( line 6 , column 26 )
+    (FuncCall
+       (Ident (Identifier "linebreak"))
+       [ KeyValArg (Identifier "justify") (Literal (Boolean False)) ])
+, SoftBreak
+, Text "Nice!"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+With a soft ]), 
+                 linebreak(justify: true), 
+                 text(body: [
+break you can force a break without ]), 
+                 linebreak(justify: true), 
+                 text(body: [
+breaking justification. ]), 
+                 linebreak(justify: false), 
+                 text(body: [
+Nice!]), 
+                 parbreak() })
diff --git a/test/typ/text/linebreak-08.out b/test/typ/text/linebreak-08.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/linebreak-08.out
@@ -0,0 +1,70 @@
+--- parse tree ---
+[ Code
+    "typ/text/linebreak-08.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/linebreak-08.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/linebreak-08.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "First"
+, Space
+, Text "part"
+, Comment
+, Text "Second"
+, Space
+, Text "part"
+, ParBreak
+, Comment
+, Text "First"
+, Space
+, Text "part"
+, Space
+, Comment
+, Text "Second"
+, Space
+, Text "part"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [First part]), 
+                 text(body: [Second part]), 
+                 parbreak(), 
+                 text(body: [First part ]), 
+                 text(body: [Second part]), 
+                 parbreak() })
diff --git a/test/typ/text/linebreak-obj-00.out b/test/typ/text/linebreak-obj-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/linebreak-obj-00.out
@@ -0,0 +1,97 @@
+--- parse tree ---
+[ Code
+    "typ/text/linebreak-obj-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/linebreak-obj-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/linebreak-obj-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/text/linebreak-obj-00.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 162.0 Pt)) ])
+, ParBreak
+, Text "They"
+, Space
+, Text "can"
+, Space
+, Text "look"
+, Space
+, Text "for"
+, Space
+, Text "the"
+, Space
+, Text "details"
+, Space
+, Text "in"
+, Space
+, Ref "netwok" (Literal Auto)
+, Text ","
+, SoftBreak
+, Text "which"
+, Space
+, Text "is"
+, Space
+, Text "the"
+, Space
+, Text "authoritative"
+, Space
+, Text "source"
+, Text "."
+, ParBreak
+, Code
+    "typ/text/linebreak-obj-00.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "bibliography"))
+       [ NormalArg (Literal (String "/works.bib")) ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [They can look for the details in ]), 
+                 ref(supplement: auto, 
+                     target: <netwok>), 
+                 text(body: [,
+which is the authoritative source.]), 
+                 parbreak(), 
+                 bibliography(path: "/works.bib"), 
+                 parbreak() })
diff --git a/test/typ/text/linebreak-obj-01.out b/test/typ/text/linebreak-obj-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/linebreak-obj-01.out
@@ -0,0 +1,198 @@
+--- parse tree ---
+[ Code
+    "typ/text/linebreak-obj-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/linebreak-obj-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/linebreak-obj-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/text/linebreak-obj-01.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 85.0 Pt)) ])
+, ParBreak
+, Text "We"
+, Space
+, Text "prove"
+, Space
+, Equation False [ Text "1" , Text "<" , Text "2" ]
+, Text "."
+, Space
+, HardBreak
+, Text "We"
+, Space
+, Text "prove"
+, Space
+, Equation False [ Text "1" , Text "<" , Text "2" ]
+, Text "!"
+, Space
+, HardBreak
+, Text "We"
+, Space
+, Text "prove"
+, Space
+, Equation False [ Text "1" , Text "<" , Text "2" ]
+, Text "?"
+, Space
+, HardBreak
+, Text "We"
+, Space
+, Text "prove"
+, Space
+, Equation False [ Text "1" , Text "<" , Text "2" ]
+, Text ","
+, Space
+, HardBreak
+, Text "We"
+, Space
+, Text "prove"
+, Space
+, Equation False [ Text "1" , Text "<" , Text "2" ]
+, Text ";"
+, Space
+, HardBreak
+, Text "We"
+, Space
+, Text "prove"
+, Space
+, Equation False [ Text "1" , Text "<" , Text "2" ]
+, Text ":"
+, Space
+, HardBreak
+, Text "We"
+, Space
+, Text "prove"
+, Space
+, Equation False [ Text "1" , Text "<" , Text "2" ]
+, Text "-"
+, Space
+, HardBreak
+, Text "We"
+, Space
+, Text "prove"
+, Space
+, Equation False [ Text "1" , Text "<" , Text "2" ]
+, Text "\8211"
+, Space
+, HardBreak
+, Text "We"
+, Space
+, Text "prove"
+, Space
+, Equation False [ Text "1" , Text "<" , Text "2" ]
+, Text "\8212"
+, Space
+, HardBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [We prove ]), 
+                 math.equation(block: false, 
+                               body: { text(body: [1]), 
+                                       text(body: [<]), 
+                                       text(body: [2]) }, 
+                               numbering: none), 
+                 text(body: [. ]), 
+                 linebreak(), 
+                 text(body: [We prove ]), 
+                 math.equation(block: false, 
+                               body: { text(body: [1]), 
+                                       text(body: [<]), 
+                                       text(body: [2]) }, 
+                               numbering: none), 
+                 text(body: [! ]), 
+                 linebreak(), 
+                 text(body: [We prove ]), 
+                 math.equation(block: false, 
+                               body: { text(body: [1]), 
+                                       text(body: [<]), 
+                                       text(body: [2]) }, 
+                               numbering: none), 
+                 text(body: [? ]), 
+                 linebreak(), 
+                 text(body: [We prove ]), 
+                 math.equation(block: false, 
+                               body: { text(body: [1]), 
+                                       text(body: [<]), 
+                                       text(body: [2]) }, 
+                               numbering: none), 
+                 text(body: [, ]), 
+                 linebreak(), 
+                 text(body: [We prove ]), 
+                 math.equation(block: false, 
+                               body: { text(body: [1]), 
+                                       text(body: [<]), 
+                                       text(body: [2]) }, 
+                               numbering: none), 
+                 text(body: [; ]), 
+                 linebreak(), 
+                 text(body: [We prove ]), 
+                 math.equation(block: false, 
+                               body: { text(body: [1]), 
+                                       text(body: [<]), 
+                                       text(body: [2]) }, 
+                               numbering: none), 
+                 text(body: [: ]), 
+                 linebreak(), 
+                 text(body: [We prove ]), 
+                 math.equation(block: false, 
+                               body: { text(body: [1]), 
+                                       text(body: [<]), 
+                                       text(body: [2]) }, 
+                               numbering: none), 
+                 text(body: [- ]), 
+                 linebreak(), 
+                 text(body: [We prove ]), 
+                 math.equation(block: false, 
+                               body: { text(body: [1]), 
+                                       text(body: [<]), 
+                                       text(body: [2]) }, 
+                               numbering: none), 
+                 text(body: [– ]), 
+                 linebreak(), 
+                 text(body: [We prove ]), 
+                 math.equation(block: false, 
+                               body: { text(body: [1]), 
+                                       text(body: [<]), 
+                                       text(body: [2]) }, 
+                               numbering: none), 
+                 text(body: [— ]), 
+                 linebreak() })
diff --git a/test/typ/text/lorem-00.out b/test/typ/text/lorem-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/lorem-00.out
@@ -0,0 +1,54 @@
+--- parse tree ---
+[ Code
+    "typ/text/lorem-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/lorem-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/lorem-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/text/lorem-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 19)) ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.]), 
+                 parbreak() })
diff --git a/test/typ/text/lorem-01.out b/test/typ/text/lorem-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/lorem-01.out
@@ -0,0 +1,127 @@
+--- parse tree ---
+[ Code
+    "typ/text/lorem-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/lorem-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/lorem-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/text/lorem-01.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ NormalArg (Literal (Numeric 8.0 Pt)) ])
+, ParBreak
+, Code
+    "typ/text/lorem-01.typ"
+    ( line 5 , column 2 )
+    (Block
+       (CodeBlock
+          [ Let
+              (BasicBind (Just (Identifier "sentences")))
+              (FuncCall
+                 (FieldAccess
+                    (Ident (Identifier "map"))
+                    (FuncCall
+                       (FieldAccess
+                          (Ident (Identifier "filter"))
+                          (FuncCall
+                             (FieldAccess
+                                (Ident (Identifier "split"))
+                                (FuncCall
+                                   (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 59)) ]))
+                             [ NormalArg (Literal (String ".")) ]))
+                       [ NormalArg
+                           (FuncExpr
+                              [ NormalParam (Identifier "s") ]
+                              (Not (Equals (Ident (Identifier "s")) (Literal (String "")))))
+                       ]))
+                 [ NormalArg
+                     (FuncExpr
+                        [ NormalParam (Identifier "s") ]
+                        (Plus (Ident (Identifier "s")) (Literal (String "."))))
+                 ])
+          , Let (BasicBind (Just (Identifier "used"))) (Literal (Int 0))
+          , For
+              (BasicBind (Just (Identifier "s")))
+              (Ident (Identifier "sentences"))
+              (Block
+                 (CodeBlock
+                    [ If
+                        [ ( LessThan (Ident (Identifier "used")) (Literal (Int 2))
+                          , Block
+                              (CodeBlock
+                                 [ Assign
+                                     (Ident (Identifier "used"))
+                                     (Plus (Ident (Identifier "used")) (Literal (Int 1)))
+                                 ])
+                          )
+                        , ( Literal (Boolean True)
+                          , Block
+                              (CodeBlock
+                                 [ FuncCall (Ident (Identifier "parbreak")) []
+                                 , Assign (Ident (Identifier "used")) (Literal (Int 0))
+                                 ])
+                          )
+                        ]
+                    , FuncCall
+                        (FieldAccess (Ident (Identifier "trim")) (Ident (Identifier "s")))
+                        []
+                    , Block (Content [ Space ])
+                    ]))
+          ]))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.], 
+                      size: 8.0pt), 
+                 text(body: [ ], size: 8.0pt), 
+                 text(body: [Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.], 
+                      size: 8.0pt), 
+                 text(body: [ ], size: 8.0pt), 
+                 parbreak(), 
+                 text(body: [Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.], 
+                      size: 8.0pt), 
+                 text(body: [ ], size: 8.0pt), 
+                 text(body: [Excepteur sint occaecat cupidatat non proident, sunt.], 
+                      size: 8.0pt), 
+                 text(body: [ ], size: 8.0pt), 
+                 parbreak() })
diff --git a/test/typ/text/lorem-02.out b/test/typ/text/lorem-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/lorem-02.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/text/microtype-00.out b/test/typ/text/microtype-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/microtype-00.out
@@ -0,0 +1,213 @@
+--- parse tree ---
+[ Code
+    "typ/text/microtype-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/microtype-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/microtype-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/text/microtype-00.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 130.0 Pt))
+       , KeyValArg (Identifier "margin") (Literal (Numeric 15.0 Pt))
+       ])
+, SoftBreak
+, Code
+    "typ/text/microtype-00.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "par"))
+       [ KeyValArg (Identifier "justify") (Literal (Boolean True))
+       , KeyValArg (Identifier "linebreaks") (Literal (String "simple"))
+       ])
+, SoftBreak
+, Code
+    "typ/text/microtype-00.typ"
+    ( line 5 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "size") (Literal (Numeric 9.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/text/microtype-00.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "rect"))
+       [ KeyValArg (Identifier "inset") (Literal (Numeric 0.0 Pt))
+       , KeyValArg
+           (Identifier "fill")
+           (FuncCall
+              (Ident (Identifier "rgb"))
+              [ NormalArg (Literal (Int 0))
+              , NormalArg (Literal (Int 0))
+              , NormalArg (Literal (Int 0))
+              , NormalArg (Literal (Int 0))
+              ])
+       , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
+       , BlockArg
+           [ SoftBreak
+           , Text "This"
+           , Space
+           , Text "is"
+           , Space
+           , Text "a"
+           , Space
+           , Text "little"
+           , Space
+           , Text "bit"
+           , Space
+           , Text "of"
+           , Space
+           , Text "text"
+           , Space
+           , Text "that"
+           , Space
+           , Text "builds"
+           , Space
+           , Text "up"
+           , Space
+           , Text "to"
+           , SoftBreak
+           , Text "hang"
+           , Text "-"
+           , Text "ing"
+           , Space
+           , Text "hyphens"
+           , Space
+           , Text "and"
+           , Space
+           , Text "dash"
+           , EmDash
+           , Text "es"
+           , Space
+           , Text "and"
+           , Space
+           , Text "then,"
+           , Space
+           , Text "you"
+           , Space
+           , Text "know,"
+           , SoftBreak
+           , Text "some"
+           , Space
+           , Text "punctuation"
+           , Space
+           , Text "in"
+           , Space
+           , Text "the"
+           , Space
+           , Text "margin"
+           , Text "."
+           , ParBreak
+           ]
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/text/microtype-00.typ"
+    ( line 13 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "lang") (Literal (String "he"))
+       , KeyValArg
+           (Identifier "font")
+           (Array
+              [ Reg (Literal (String "PT Sans"))
+              , Reg (Literal (String "Noto Serif Hebrew"))
+              ])
+       ])
+, SoftBreak
+, Text "\1489\1504\1497\1497\1492"
+, Space
+, Text "\1504\1499\1493\1504\1492"
+, Space
+, Text "\1513\1500"
+, Space
+, Text "\1502\1513\1508\1496\1497\1501"
+, Space
+, Text "\1488\1512\1493\1499\1497\1501"
+, Space
+, Text "\1491\1493\1512\1513\1514"
+, Space
+, Text "\1497\1491\1506"
+, Space
+, Text "\1489\1513\1508\1492"
+, Text "."
+, Space
+, Text "\1488\1494"
+, Space
+, Text "\1489\1493\1488\1493"
+, Space
+, Text "\1504\1491\1489\1512"
+, Space
+, Text "\1506\1500"
+, Space
+, Text "\1502\1494\1490"
+, Space
+, Text "\1492\1488\1493\1493\1497\1512"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+], size: 9.0pt), 
+                 rect(body: { text(body: [
+This is a little bit of text that builds up to
+hang-ing hyphens and dash—es and then, you know,
+some punctuation in the margin.], 
+                                   size: 9.0pt), 
+                              parbreak() }, 
+                      fill: rgb(0%,0%,0%,0%), 
+                      inset: 0.0pt, 
+                      width: 100%), 
+                 parbreak(), 
+                 text(body: [
+בנייה נכונה של משפטים ארוכים דורשת ידע בשפה. אז בואו נדבר על מזג האוויר.], 
+                      font: ("PT Sans", 
+                             "Noto Serif Hebrew"), 
+                      lang: "he", 
+                      size: 9.0pt), 
+                 parbreak() })
diff --git a/test/typ/text/microtype-01.out b/test/typ/text/microtype-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/microtype-01.out
@@ -0,0 +1,76 @@
+--- parse tree ---
+[ Code
+    "typ/text/microtype-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/microtype-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/microtype-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/text/microtype-01.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "margin") (Literal (Numeric 0.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/text/microtype-01.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "align"))
+       [ NormalArg (Ident (Identifier "end")) ])
+, SoftBreak
+, Code
+    "typ/text/microtype-01.typ"
+    ( line 5 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "dir") (Ident (Identifier "rtl")) ])
+, SoftBreak
+, Text ":"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+:], dir: rtl), 
+                 parbreak() })
diff --git a/test/typ/text/quotes-00.out b/test/typ/text/quotes-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/quotes-00.out
@@ -0,0 +1,500 @@
+--- parse tree ---
+[ Code
+    "typ/text/quotes-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/quotes-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/quotes-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/text/quotes-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 250.0 Pt)) ])
+, ParBreak
+, Comment
+, Code
+    "typ/text/quotes-00.typ"
+    ( line 5 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "lang") (Literal (String "en")) ])
+, SoftBreak
+, Quote '"'
+, Text "The"
+, Space
+, Text "horse"
+, Space
+, Text "eats"
+, Space
+, Text "no"
+, Space
+, Text "cucumber"
+, Space
+, Text "salad"
+, Quote '"'
+, Space
+, Text "was"
+, Space
+, Text "the"
+, Space
+, Text "first"
+, Space
+, Text "sentence"
+, Space
+, Text "ever"
+, Space
+, Text "uttered"
+, Space
+, Text "on"
+, Space
+, Text "the"
+, Space
+, Quote '\''
+, Text "telephone"
+, Text "."
+, Quote '\''
+, ParBreak
+, Code
+    "typ/text/quotes-00.typ"
+    ( line 8 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "lang") (Literal (String "de")) ])
+, SoftBreak
+, Quote '"'
+, Text "Das"
+, Space
+, Text "Pferd"
+, Space
+, Text "frisst"
+, Space
+, Text "keinen"
+, Space
+, Text "Gurkensalat"
+, Quote '"'
+, Space
+, Text "war"
+, Space
+, Text "der"
+, Space
+, Text "erste"
+, Space
+, Text "jemals"
+, Space
+, Text "am"
+, Space
+, Quote '\''
+, Text "Fernsprecher"
+, Quote '\''
+, Space
+, Text "gesagte"
+, Space
+, Text "Satz"
+, Text "."
+, ParBreak
+, Code
+    "typ/text/quotes-00.typ"
+    ( line 11 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "lang") (Literal (String "de"))
+       , KeyValArg (Identifier "region") (Literal (String "CH"))
+       ])
+, SoftBreak
+, Quote '"'
+, Text "Das"
+, Space
+, Text "Pferd"
+, Space
+, Text "frisst"
+, Space
+, Text "keinen"
+, Space
+, Text "Gurkensalat"
+, Quote '"'
+, Space
+, Text "war"
+, Space
+, Text "der"
+, Space
+, Text "erste"
+, Space
+, Text "jemals"
+, Space
+, Text "am"
+, Space
+, Quote '\''
+, Text "Fernsprecher"
+, Quote '\''
+, Space
+, Text "gesagte"
+, Space
+, Text "Satz"
+, Text "."
+, ParBreak
+, Code
+    "typ/text/quotes-00.typ"
+    ( line 14 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "lang") (Literal (String "es"))
+       , KeyValArg (Identifier "region") (Literal None)
+       ])
+, SoftBreak
+, Quote '"'
+, Text "El"
+, Space
+, Text "caballo"
+, Space
+, Text "no"
+, Space
+, Text "come"
+, Space
+, Text "ensalada"
+, Space
+, Text "de"
+, Space
+, Text "pepino"
+, Quote '"'
+, Space
+, Text "fue"
+, Space
+, Text "la"
+, Space
+, Text "primera"
+, Space
+, Text "frase"
+, Space
+, Text "pronunciada"
+, Space
+, Text "por"
+, Space
+, Quote '\''
+, Text "tel\233fono"
+, Quote '\''
+, Text "."
+, ParBreak
+, Code
+    "typ/text/quotes-00.typ"
+    ( line 17 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "lang") (Literal (String "es"))
+       , KeyValArg (Identifier "region") (Literal (String "MX"))
+       ])
+, SoftBreak
+, Quote '"'
+, Text "El"
+, Space
+, Text "caballo"
+, Space
+, Text "no"
+, Space
+, Text "come"
+, Space
+, Text "ensalada"
+, Space
+, Text "de"
+, Space
+, Text "pepino"
+, Quote '"'
+, Space
+, Text "fue"
+, Space
+, Text "la"
+, Space
+, Text "primera"
+, Space
+, Text "frase"
+, Space
+, Text "pronunciada"
+, Space
+, Text "por"
+, Space
+, Quote '\''
+, Text "tel\233fono"
+, Quote '\''
+, Text "."
+, ParBreak
+, Code
+    "typ/text/quotes-00.typ"
+    ( line 20 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "lang") (Literal (String "fr"))
+       , KeyValArg (Identifier "region") (Literal None)
+       ])
+, SoftBreak
+, Quote '"'
+, Text "Le"
+, Space
+, Text "cheval"
+, Space
+, Text "ne"
+, Space
+, Text "mange"
+, Space
+, Text "pas"
+, Space
+, Text "de"
+, Space
+, Text "salade"
+, Space
+, Text "de"
+, Space
+, Text "concombres"
+, Quote '"'
+, Space
+, Text "est"
+, Space
+, Text "la"
+, Space
+, Text "premi\232re"
+, Space
+, Text "phrase"
+, Space
+, Text "jamais"
+, Space
+, Text "prononc\233e"
+, Space
+, Text "au"
+, Space
+, Quote '\''
+, Text "t\233l\233phone"
+, Quote '\''
+, Text "."
+, ParBreak
+, Code
+    "typ/text/quotes-00.typ"
+    ( line 23 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "lang") (Literal (String "fi")) ])
+, SoftBreak
+, Quote '"'
+, Text "Hevonen"
+, Space
+, Text "ei"
+, Space
+, Text "sy\246"
+, Space
+, Text "kurkkusalaattia"
+, Quote '"'
+, Space
+, Text "oli"
+, Space
+, Text "ensimm\228inen"
+, Space
+, Text "koskaan"
+, Space
+, Quote '\''
+, Text "puhelimessa"
+, Quote '\''
+, Space
+, Text "lausuttu"
+, Space
+, Text "lause"
+, Text "."
+, ParBreak
+, Code
+    "typ/text/quotes-00.typ"
+    ( line 26 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "lang") (Literal (String "he")) ])
+, SoftBreak
+, Quote '"'
+, Text "\1492\1505\1493\1505"
+, Space
+, Text "\1500\1488"
+, Space
+, Text "\1488\1493\1499\1500"
+, Space
+, Text "\1505\1500\1496"
+, Space
+, Text "\1502\1500\1508\1508\1493\1504\1497\1501"
+, Quote '"'
+, Space
+, Text "\1492\1497\1492"
+, Space
+, Text "\1492\1502\1513\1508\1496"
+, Space
+, Text "\1492\1492\1512\1488\1513\1493\1503"
+, Space
+, Text "\1513\1504\1488\1502\1512"
+, Space
+, Text "\1489"
+, Space
+, Quote '\''
+, Text "\1496\1500\1508\1493\1503"
+, Quote '\''
+, Text "."
+, ParBreak
+, Code
+    "typ/text/quotes-00.typ"
+    ( line 29 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "lang") (Literal (String "ro")) ])
+, SoftBreak
+, Quote '"'
+, Text "Calul"
+, Space
+, Text "nu"
+, Space
+, Text "m\259n\226nc\259"
+, Space
+, Text "salat\259"
+, Space
+, Text "de"
+, Space
+, Text "castrave\539i"
+, Quote '"'
+, Space
+, Text "a"
+, Space
+, Text "fost"
+, Space
+, Text "prima"
+, Space
+, Text "propozi\539ie"
+, Space
+, Text "rostit\259"
+, Space
+, Text "vreodat\259"
+, Space
+, Text "la"
+, Space
+, Quote '\''
+, Text "telefon"
+, Quote '\''
+, Text "."
+, ParBreak
+, Code
+    "typ/text/quotes-00.typ"
+    ( line 32 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "lang") (Literal (String "ru")) ])
+, SoftBreak
+, Quote '"'
+, Text "\1051\1086\1096\1072\1076\1100"
+, Space
+, Text "\1085\1077"
+, Space
+, Text "\1077\1089\1090"
+, Space
+, Text "\1089\1072\1083\1072\1090"
+, Space
+, Text "\1080\1079"
+, Space
+, Text "\1086\1075\1091\1088\1094\1086\1074"
+, Quote '"'
+, Space
+, Text "-"
+, Space
+, Text "\1101\1090\1086"
+, Space
+, Text "\1073\1099\1083\1072"
+, Space
+, Text "\1087\1077\1088\1074\1072\1103"
+, Space
+, Text "\1092\1088\1072\1079\1072,"
+, Space
+, Text "\1089\1082\1072\1079\1072\1085\1085\1072\1103"
+, Space
+, Text "\1087\1086"
+, Space
+, Quote '\''
+, Text "\1090\1077\1083\1077\1092\1086\1085\1091"
+, Quote '\''
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [
+“The horse eats no cucumber salad” was the first sentence ever uttered on the ‘telephone.’], 
+                      lang: "en"), 
+                 parbreak(), 
+                 text(body: [
+“Das Pferd frisst keinen Gurkensalat” war der erste jemals am ‘Fernsprecher” gesagte Satz.], 
+                      lang: "de"), 
+                 parbreak(), 
+                 text(body: [
+“Das Pferd frisst keinen Gurkensalat” war der erste jemals am ‘Fernsprecher” gesagte Satz.], 
+                      lang: "de", 
+                      region: "CH"), 
+                 parbreak(), 
+                 text(body: [
+“El caballo no come ensalada de pepino” fue la primera frase pronunciada por ‘teléfono’.], 
+                      lang: "es", 
+                      region: none), 
+                 parbreak(), 
+                 text(body: [
+“El caballo no come ensalada de pepino” fue la primera frase pronunciada por ‘teléfono’.], 
+                      lang: "es", 
+                      region: "MX"), 
+                 parbreak(), 
+                 text(body: [
+“Le cheval ne mange pas de salade de concombres” est la première phrase jamais prononcée au ‘téléphone’.], 
+                      lang: "fr", 
+                      region: none), 
+                 parbreak(), 
+                 text(body: [
+“Hevonen ei syö kurkkusalaattia” oli ensimmäinen koskaan ‘puhelimessa” lausuttu lause.], 
+                      lang: "fi", 
+                      region: none), 
+                 parbreak(), 
+                 text(body: [
+“הסוס לא אוכל סלט מלפפונים” היה המשפט ההראשון שנאמר ב ‘טלפון’.], 
+                      lang: "he", 
+                      region: none), 
+                 parbreak(), 
+                 text(body: [
+“Calul nu mănâncă salată de castraveți” a fost prima propoziție rostită vreodată la ‘telefon’.], 
+                      lang: "ro", 
+                      region: none), 
+                 parbreak(), 
+                 text(body: [
+“Лошадь не ест салат из огурцов” - это была первая фраза, сказанная по ‘телефону’.], 
+                      lang: "ru", 
+                      region: none), 
+                 parbreak() })
diff --git a/test/typ/text/quotes-01.out b/test/typ/text/quotes-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/quotes-01.out
@@ -0,0 +1,51 @@
+--- parse tree ---
+[ Code
+    "typ/text/quotes-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/quotes-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/quotes-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Quote '"'
+, Quote '"'
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [””]), 
+                 parbreak() })
diff --git a/test/typ/text/quotes-02.out b/test/typ/text/quotes-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/quotes-02.out
@@ -0,0 +1,99 @@
+--- parse tree ---
+[ Code
+    "typ/text/quotes-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/quotes-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/quotes-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "The"
+, Space
+, Text "5"
+, Quote '\''
+, Text "11"
+, Quote '"'
+, Space
+, Quote '\''
+, Text "quick"
+, Quote '\''
+, Space
+, Text "brown"
+, Space
+, Text "fox"
+, Space
+, Text "jumps"
+, Space
+, Text "over"
+, Space
+, Text "the"
+, Space
+, Quote '"'
+, Text "lazy"
+, Quote '"'
+, Space
+, Text "dog"
+, Quote '\''
+, Text "s"
+, Space
+, Text "ear"
+, Text "."
+, ParBreak
+, Text "He"
+, Space
+, Text "said"
+, Space
+, Quote '"'
+, Text "I"
+, Quote '\''
+, Text "m"
+, Space
+, Text "a"
+, Space
+, Text "big"
+, Space
+, Text "fella"
+, Text "."
+, Quote '"'
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [The 5’11” ‘quick” brown fox jumps over the “lazy” dog’s ear.]), 
+                 parbreak(), 
+                 text(body: [He said “I’m a big fella.”]), 
+                 parbreak() })
diff --git a/test/typ/text/quotes-03.out b/test/typ/text/quotes-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/quotes-03.out
@@ -0,0 +1,80 @@
+--- parse tree ---
+[ Code
+    "typ/text/quotes-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/quotes-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/quotes-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "The"
+, Space
+, Text "5"
+, Text "'"
+, Text "11"
+, Text "\""
+, Space
+, Quote '\''
+, Text "quick"
+, Text "'"
+, Space
+, Text "brown"
+, Space
+, Text "fox"
+, Space
+, Text "jumps"
+, Space
+, Text "over"
+, Space
+, Text "the"
+, Space
+, Text "\""
+, Text "lazy"
+, Quote '"'
+, Space
+, Text "dog"
+, Text "'"
+, Text "s"
+, Space
+, Text "ear"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [The 5'11" ‘quick' brown fox jumps over the "lazy” dog's ear.]), 
+                 parbreak() })
diff --git a/test/typ/text/quotes-04.out b/test/typ/text/quotes-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/quotes-04.out
@@ -0,0 +1,100 @@
+--- parse tree ---
+[ Code
+    "typ/text/quotes-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/quotes-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/quotes-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "He"
+, Quote '\''
+, Text "s"
+, Space
+, Text "told"
+, Space
+, Text "some"
+, Space
+, Text "books"
+, Space
+, Text "contain"
+, Space
+, Text "questionable"
+, Space
+, Quote '"'
+, Text "example"
+, Space
+, Text "text"
+, Quote '"'
+, Text "."
+, ParBreak
+, Code
+    "typ/text/quotes-04.typ"
+    ( line 5 , column 2 )
+    (Set
+       (Ident (Identifier "smartquote"))
+       [ KeyValArg (Identifier "enabled") (Literal (Boolean False)) ])
+, SoftBreak
+, Text "He"
+, Quote '\''
+, Text "s"
+, Space
+, Text "told"
+, Space
+, Text "some"
+, Space
+, Text "books"
+, Space
+, Text "contain"
+, Space
+, Text "questionable"
+, Space
+, Quote '"'
+, Text "example"
+, Space
+, Text "text"
+, Quote '"'
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [He’s told some books contain questionable “example text”.]), 
+                 parbreak(), 
+                 text(body: [
+He’s told some books contain questionable “example text”.]), 
+                 parbreak() })
diff --git a/test/typ/text/quotes-05.out b/test/typ/text/quotes-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/quotes-05.out
@@ -0,0 +1,128 @@
+--- parse tree ---
+[ Code
+    "typ/text/quotes-05.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/quotes-05.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/quotes-05.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Quote '"'
+, Text "She"
+, Space
+, Text "suddenly"
+, Space
+, Text "started"
+, Space
+, Text "speaking"
+, Space
+, Text "french"
+, Text ":"
+, Space
+, Code
+    "typ/text/quotes-05.typ"
+    ( line 3 , column 41 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "lang") (Literal (String "fr"))
+       , BlockArg
+           [ Quote '\''
+           , Text "Je"
+           , Space
+           , Text "suis"
+           , Space
+           , Text "une"
+           , Space
+           , Text "banane"
+           , Text "."
+           , Quote '\''
+           ]
+       ])
+, Quote '"'
+, Space
+, Text "Roman"
+, Space
+, Text "told"
+, Space
+, Text "me"
+, Text "."
+, ParBreak
+, Text "Some"
+, Space
+, Text "people"
+, Quote '\''
+, Text "s"
+, Space
+, Text "thought"
+, Space
+, Text "on"
+, Space
+, Text "this"
+, Space
+, Text "would"
+, Space
+, Text "be"
+, Space
+, Code
+    "typ/text/quotes-05.typ"
+    ( line 5 , column 41 )
+    (Block
+       (Content
+          [ Code
+              "typ/text/quotes-05.typ"
+              ( line 5 , column 43 )
+              (Set
+                 (Ident (Identifier "smartquote"))
+                 [ KeyValArg (Identifier "enabled") (Literal (Boolean False)) ])
+          , Space
+          , Quote '"'
+          , Text "strange"
+          , Text "."
+          , Quote '"'
+          ]))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [“She suddenly started speaking french: ]), 
+                 text(body: text(body: [‘Je suis une banane.’]), 
+                      lang: "fr"), 
+                 text(body: [” Roman told me.]), 
+                 parbreak(), 
+                 text(body: [Some people’s thought on this would be ]), 
+                 text(body: [ “strange.”]), 
+                 parbreak() })
diff --git a/test/typ/text/raw-00.out b/test/typ/text/raw-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/raw-00.out
@@ -0,0 +1,56 @@
+--- parse tree ---
+[ Code
+    "typ/text/raw-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/raw-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/raw-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, RawInline "A"
+, RawInline "B"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 raw(block: false, 
+                     lang: none, 
+                     text: "A"), 
+                 raw(block: false, 
+                     lang: none, 
+                     text: "B"), 
+                 parbreak() })
diff --git a/test/typ/text/raw-01.out b/test/typ/text/raw-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/raw-01.out
@@ -0,0 +1,60 @@
+--- parse tree ---
+[ Code
+    "typ/text/raw-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/raw-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/raw-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, RawBlock "typ" "#let x = 1"
+, Space
+, HardBreak
+, RawBlock "typ" "#f(1)"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 raw(block: true, 
+                     lang: "typ", 
+                     text: "#let x = 1"), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 raw(block: true, 
+                     lang: "typ", 
+                     text: "#f(1)"), 
+                 parbreak() })
diff --git a/test/typ/text/raw-02.out b/test/typ/text/raw-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/raw-02.out
@@ -0,0 +1,62 @@
+--- parse tree ---
+[ Code
+    "typ/text/raw-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/raw-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/raw-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, SoftBreak
+, Text "Text"
+, SoftBreak
+, RawBlock "rust" "fn code() {}\n"
+, SoftBreak
+, Text "Text"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+Text
+]), 
+                 raw(block: true, 
+                     lang: "rust", 
+                     text: "fn code() {}\n"), 
+                 text(body: [
+Text]), 
+                 parbreak() })
diff --git a/test/typ/text/raw-03.out b/test/typ/text/raw-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/raw-03.out
@@ -0,0 +1,52 @@
+--- parse tree ---
+[ Code
+    "typ/text/raw-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/raw-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/raw-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, RawBlock "" "```backticks```\n"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 raw(block: true, 
+                     lang: none, 
+                     text: "```backticks```\n"), 
+                 parbreak() })
diff --git a/test/typ/text/raw-04.out b/test/typ/text/raw-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/raw-04.out
@@ -0,0 +1,121 @@
+--- parse tree ---
+[ Code
+    "typ/text/raw-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/raw-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/raw-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, SoftBreak
+, Comment
+, Text "The"
+, Space
+, Text "keyword"
+, Space
+, RawBlock "rust" "let"
+, Text "."
+, ParBreak
+, Comment
+, Text "("
+, RawInline ""
+, Text ")"
+, Space
+, HardBreak
+, Text "("
+, RawInline " untrimmed "
+, Text ")"
+, Space
+, HardBreak
+, Text "("
+, RawBlock "" "trimmed` "
+, Text ")"
+, Space
+, HardBreak
+, Text "("
+, RawBlock "" "trimmed "
+, Text ")"
+, Space
+, HardBreak
+, Text "("
+, RawBlock "" "trimmed"
+, Text ")"
+, Space
+, HardBreak
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [The keyword ]), 
+                 raw(block: true, 
+                     lang: "rust", 
+                     text: "let"), 
+                 text(body: [.]), 
+                 parbreak(), 
+                 text(body: [(]), 
+                 raw(block: false, 
+                     lang: none, 
+                     text: ""), 
+                 text(body: [) ]), 
+                 linebreak(), 
+                 text(body: [(]), 
+                 raw(block: false, 
+                     lang: none, 
+                     text: " untrimmed "), 
+                 text(body: [) ]), 
+                 linebreak(), 
+                 text(body: [(]), 
+                 raw(block: true, 
+                     lang: none, 
+                     text: "trimmed` "), 
+                 text(body: [) ]), 
+                 linebreak(), 
+                 text(body: [(]), 
+                 raw(block: true, 
+                     lang: none, 
+                     text: "trimmed "), 
+                 text(body: [) ]), 
+                 linebreak(), 
+                 text(body: [(]), 
+                 raw(block: true, 
+                     lang: none, 
+                     text: "trimmed"), 
+                 text(body: [) ]), 
+                 linebreak(), 
+                 parbreak() })
diff --git a/test/typ/text/raw-05.out b/test/typ/text/raw-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/raw-05.out
@@ -0,0 +1,52 @@
+--- parse tree ---
+[ Code
+    "typ/text/raw-05.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/raw-05.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/raw-05.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, RawInline "rust let"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 raw(block: false, 
+                     lang: none, 
+                     text: "rust let"), 
+                 parbreak() })
diff --git a/test/typ/text/raw-06.out b/test/typ/text/raw-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/raw-06.out
@@ -0,0 +1,54 @@
+--- parse tree ---
+[ Code
+    "typ/text/raw-06.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/raw-06.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/raw-06.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Space
+, RawBlock "" "  A\n        B\n       C\n     "
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [ ]), 
+                 raw(block: true, 
+                     lang: none, 
+                     text: "  A\n        B\n       C\n     "), 
+                 parbreak() })
diff --git a/test/typ/text/raw-07.out b/test/typ/text/raw-07.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/raw-07.out
@@ -0,0 +1,63 @@
+--- parse tree ---
+[ Code
+    "typ/text/raw-07.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/raw-07.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/raw-07.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/text/raw-07.typ"
+    ( line 3 , column 2 )
+    (Show
+       (Just (Ident (Identifier "raw")))
+       (Set
+          (Ident (Identifier "text"))
+          [ KeyValArg (Identifier "font") (Literal (String "Roboto")) ]))
+, SoftBreak
+, RawInline "Roboto"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 raw(block: false, 
+                     lang: none, 
+                     text: "Roboto"), 
+                 parbreak() })
diff --git a/test/typ/text/raw-08.out b/test/typ/text/raw-08.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/raw-08.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/text/raw-align-00.out b/test/typ/text/raw-align-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/raw-align-00.out
@@ -0,0 +1,98 @@
+--- parse tree ---
+[ Code
+    "typ/text/raw-align-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/raw-align-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/raw-align-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/text/raw-align-00.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "align"))
+       [ NormalArg (Ident (Identifier "center")) ])
+, SoftBreak
+, Code
+    "typ/text/raw-align-00.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 180.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/text/raw-align-00.typ"
+    ( line 5 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ NormalArg (Literal (Numeric 6.0 Pt)) ])
+, ParBreak
+, Code
+    "typ/text/raw-align-00.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 20)) ])
+, ParBreak
+, RawBlock
+    "py"
+    "def something(x):\n  return x\n\na = 342395823859823958329\nb = 324923\n"
+, ParBreak
+, Code
+    "typ/text/raw-align-00.typ"
+    ( line 17 , column 2 )
+    (FuncCall
+       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 20)) ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut], 
+                      size: 6.0pt), 
+                 parbreak(), 
+                 raw(block: true, 
+                     lang: "py", 
+                     text: "def something(x):\n  return x\n\na = 342395823859823958329\nb = 324923\n"), 
+                 parbreak(), 
+                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut], 
+                      size: 6.0pt), 
+                 parbreak() })
diff --git a/test/typ/text/raw-align-01.out b/test/typ/text/raw-align-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/raw-align-01.out
@@ -0,0 +1,107 @@
+--- parse tree ---
+[ Code
+    "typ/text/raw-align-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/raw-align-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/raw-align-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/text/raw-align-01.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 180.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/text/raw-align-01.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ NormalArg (Literal (Numeric 6.0 Pt)) ])
+, ParBreak
+, Code
+    "typ/text/raw-align-01.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 20)) ])
+, SoftBreak
+, Code
+    "typ/text/raw-align-01.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "align"))
+       [ NormalArg (Ident (Identifier "center"))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "raw"))
+              [ KeyValArg (Identifier "lang") (Literal (String "typ"))
+              , KeyValArg (Identifier "block") (Literal (Boolean True))
+              , KeyValArg (Identifier "align") (Ident (Identifier "right"))
+              , NormalArg
+                  (Literal
+                     (String "#let f(x) = x\n#align(center, line(length: 1em))"))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/text/raw-align-01.typ"
+    ( line 13 , column 2 )
+    (FuncCall
+       (Ident (Identifier "lorem")) [ NormalArg (Literal (Int 20)) ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut], 
+                      size: 6.0pt), 
+                 text(body: [
+], size: 6.0pt), 
+                 align(alignment: center, 
+                       body: raw(align: right, 
+                                 block: true, 
+                                 lang: "typ", 
+                                 text: "#let f(x) = x\n#align(center, line(length: 1em))")), 
+                 text(body: [
+], size: 6.0pt), 
+                 text(body: [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut], 
+                      size: 6.0pt), 
+                 parbreak() })
diff --git a/test/typ/text/raw-align-02.out b/test/typ/text/raw-align-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/raw-align-02.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/text/raw-code-00.out b/test/typ/text/raw-code-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/raw-code-00.out
@@ -0,0 +1,71 @@
+--- parse tree ---
+[ Code
+    "typ/text/raw-code-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/raw-code-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/raw-code-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/text/raw-code-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 180.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/text/raw-code-00.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ NormalArg (Literal (Numeric 6.0 Pt)) ])
+, SoftBreak
+, RawBlock
+    "typ"
+    "= Chapter 1\n#lorem(100)\n\n#let hi = \"Hello World\"\n#show heading: emph\n"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+], size: 6.0pt), 
+                 raw(block: true, 
+                     lang: "typ", 
+                     text: "= Chapter 1\n#lorem(100)\n\n#let hi = \"Hello World\"\n#show heading: emph\n"), 
+                 parbreak() })
diff --git a/test/typ/text/raw-code-01.out b/test/typ/text/raw-code-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/raw-code-01.out
@@ -0,0 +1,70 @@
+--- parse tree ---
+[ Code
+    "typ/text/raw-code-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/raw-code-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/raw-code-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/text/raw-code-01.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 180.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/text/raw-code-01.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ NormalArg (Literal (Numeric 6.0 Pt)) ])
+, ParBreak
+, RawBlock
+    "rust"
+    "/// A carefully designed state machine.\n#[derive(Debug)]\nenum State<'a> { A(u8), B(&'a str) }\n\nfn advance(state: State<'_>) -> State<'_> {\n    unimplemented!(\"state machine\")\n}\n"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 raw(block: true, 
+                     lang: "rust", 
+                     text: "/// A carefully designed state machine.\n#[derive(Debug)]\nenum State<'a> { A(u8), B(&'a str) }\n\nfn advance(state: State<'_>) -> State<'_> {\n    unimplemented!(\"state machine\")\n}\n"), 
+                 parbreak() })
diff --git a/test/typ/text/raw-code-02.out b/test/typ/text/raw-code-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/raw-code-02.out
@@ -0,0 +1,68 @@
+--- parse tree ---
+[ Code
+    "typ/text/raw-code-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/raw-code-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/raw-code-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/text/raw-code-02.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 180.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/text/raw-code-02.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ NormalArg (Literal (Numeric 6.0 Pt)) ])
+, ParBreak
+, RawBlock "py" "import this\n\ndef hi():\n  print(\"Hi!\")\n"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 raw(block: true, 
+                     lang: "py", 
+                     text: "import this\n\ndef hi():\n  print(\"Hi!\")\n"), 
+                 parbreak() })
diff --git a/test/typ/text/raw-code-03.out b/test/typ/text/raw-code-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/raw-code-03.out
@@ -0,0 +1,70 @@
+--- parse tree ---
+[ Code
+    "typ/text/raw-code-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/raw-code-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/raw-code-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/text/raw-code-03.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 180.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/text/raw-code-03.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ NormalArg (Literal (Numeric 6.0 Pt)) ])
+, ParBreak
+, RawBlock
+    "cpp"
+    "#include <iostream>\n\nint main() {\n  std::cout << \"Hello, world!\";\n}\n"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 raw(block: true, 
+                     lang: "cpp", 
+                     text: "#include <iostream>\n\nint main() {\n  std::cout << \"Hello, world!\";\n}\n"), 
+                 parbreak() })
diff --git a/test/typ/text/raw-code-04.out b/test/typ/text/raw-code-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/raw-code-04.out
@@ -0,0 +1,102 @@
+--- parse tree ---
+[ Code
+    "typ/text/raw-code-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/raw-code-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/raw-code-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/text/raw-code-04.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 180.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/text/raw-code-04.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ NormalArg (Literal (Numeric 6.0 Pt)) ])
+, ParBreak
+, Code
+    "typ/text/raw-code-04.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "rect"))
+       [ KeyValArg
+           (Identifier "inset")
+           (Dict
+              [ Reg ( Ident (Identifier "x") , Literal (Numeric 4.0 Pt) )
+              , Reg ( Ident (Identifier "y") , Literal (Numeric 5.0 Pt) )
+              ])
+       , KeyValArg (Identifier "radius") (Literal (Numeric 4.0 Pt))
+       , KeyValArg
+           (Identifier "fill")
+           (FuncCall
+              (Ident (Identifier "rgb"))
+              [ NormalArg (Literal (Int 239))
+              , NormalArg (Literal (Int 241))
+              , NormalArg (Literal (Int 243))
+              ])
+       , BlockArg
+           [ SoftBreak
+           , RawBlock
+               "html"
+               "<!DOCTYPE html>\n  <html>\n    <head>\n      <meta charset=\"utf-8\">\n    </head>\n    <body>\n      <h1>Topic</h1>\n      <p>The Hypertext Markup Language.</p>\n      <script>\n        function foo(a, b) {\n          return a + b + \"string\";\n        }\n      </script>\n    </body>\n  </html>\n  "
+           , ParBreak
+           ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 rect(body: { text(body: [
+], 
+                                   size: 6.0pt), 
+                              raw(block: true, 
+                                  lang: "html", 
+                                  text: "<!DOCTYPE html>\n  <html>\n    <head>\n      <meta charset=\"utf-8\">\n    </head>\n    <body>\n      <h1>Topic</h1>\n      <p>The Hypertext Markup Language.</p>\n      <script>\n        function foo(a, b) {\n          return a + b + \"string\";\n        }\n      </script>\n    </body>\n  </html>\n  "), 
+                              parbreak() }, 
+                      fill: rgb(93%,94%,95%,100%), 
+                      inset: (x: 4.0pt, y: 5.0pt), 
+                      radius: 4.0pt), 
+                 parbreak() })
diff --git a/test/typ/text/shaping-00.out b/test/typ/text/shaping-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/shaping-00.out
@@ -0,0 +1,71 @@
+--- parse tree ---
+[ Code
+    "typ/text/shaping-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/shaping-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/shaping-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "ABC\2309\2346\2366\2352\2381\2335\2350\2375\2306\2335"
+, ParBreak
+, Comment
+, Text "\2309\2346\2366\2352\2381\2335\2350\2375\2306\2335"
+, ParBreak
+, Comment
+, Comment
+, Text "\2309"
+, Space
+, Text "\2346\2366"
+, Space
+, Text "\2352\2381"
+, Space
+, Text "\2335"
+, Space
+, Text "\2350\2375\2306"
+, Space
+, Text "\2335"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [ABCअपार्टमेंट]), 
+                 parbreak(), 
+                 text(body: [अपार्टमेंट]), 
+                 parbreak(), 
+                 text(body: [अ पा र् ट में ट]), 
+                 parbreak() })
diff --git a/test/typ/text/shaping-01.out b/test/typ/text/shaping-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/shaping-01.out
@@ -0,0 +1,69 @@
+--- parse tree ---
+[ Code
+    "typ/text/shaping-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/shaping-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/shaping-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/text/shaping-01.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "dir") (Ident (Identifier "rtl"))
+       , KeyValArg
+           (Identifier "font") (Literal (String "Noto Serif Hebrew"))
+       ])
+, SoftBreak
+, HardBreak
+, Text "\1496"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+], 
+                      dir: rtl, 
+                      font: "Noto Serif Hebrew"), 
+                 linebreak(), 
+                 text(body: [ט], 
+                      dir: rtl, 
+                      font: "Noto Serif Hebrew"), 
+                 parbreak() })
diff --git a/test/typ/text/shift-00.out b/test/typ/text/shift-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/shift-00.out
@@ -0,0 +1,163 @@
+--- parse tree ---
+[ Code
+    "typ/text/shift-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/shift-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/shift-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/text/shift-00.typ"
+    ( line 2 , column 2 )
+    (FuncCall
+       (Ident (Identifier "table"))
+       [ KeyValArg (Identifier "columns") (Literal (Int 3))
+       , NormalArg (Block (Content [ Text "Typo" , Text "." ]))
+       , NormalArg (Block (Content [ Text "Fallb" , Text "." ]))
+       , NormalArg (Block (Content [ Text "Synth" ]))
+       , NormalArg
+           (Block
+              (Content
+                 [ Text "x"
+                 , Code
+                     "typ/text/shift-00.typ"
+                     ( line 5 , column 6 )
+                     (FuncCall (Ident (Identifier "super")) [ BlockArg [ Text "1" ] ])
+                 ]))
+       , NormalArg
+           (Block
+              (Content
+                 [ Text "x"
+                 , Code
+                     "typ/text/shift-00.typ"
+                     ( line 5 , column 20 )
+                     (FuncCall (Ident (Identifier "super")) [ BlockArg [ Text "5n" ] ])
+                 ]))
+       , NormalArg
+           (Block
+              (Content
+                 [ Text "x"
+                 , Code
+                     "typ/text/shift-00.typ"
+                     ( line 5 , column 35 )
+                     (FuncCall
+                        (Ident (Identifier "super"))
+                        [ BlockArg
+                            [ Text "2"
+                            , Space
+                            , Code
+                                "typ/text/shift-00.typ"
+                                ( line 5 , column 44 )
+                                (FuncCall
+                                   (Ident (Identifier "box"))
+                                   [ NormalArg
+                                       (FuncCall
+                                          (Ident (Identifier "square"))
+                                          [ KeyValArg (Identifier "size") (Literal (Numeric 6.0 Pt))
+                                          ])
+                                   ])
+                            ]
+                        ])
+                 ]))
+       , NormalArg
+           (Block
+              (Content
+                 [ Text "x"
+                 , Code
+                     "typ/text/shift-00.typ"
+                     ( line 6 , column 6 )
+                     (FuncCall (Ident (Identifier "sub")) [ BlockArg [ Text "1" ] ])
+                 ]))
+       , NormalArg
+           (Block
+              (Content
+                 [ Text "x"
+                 , Code
+                     "typ/text/shift-00.typ"
+                     ( line 6 , column 18 )
+                     (FuncCall (Ident (Identifier "sub")) [ BlockArg [ Text "5n" ] ])
+                 ]))
+       , NormalArg
+           (Block
+              (Content
+                 [ Text "x"
+                 , Code
+                     "typ/text/shift-00.typ"
+                     ( line 6 , column 31 )
+                     (FuncCall
+                        (Ident (Identifier "sub"))
+                        [ BlockArg
+                            [ Text "2"
+                            , Space
+                            , Code
+                                "typ/text/shift-00.typ"
+                                ( line 6 , column 38 )
+                                (FuncCall
+                                   (Ident (Identifier "box"))
+                                   [ NormalArg
+                                       (FuncCall
+                                          (Ident (Identifier "square"))
+                                          [ KeyValArg (Identifier "size") (Literal (Numeric 6.0 Pt))
+                                          ])
+                                   ])
+                            ]
+                        ])
+                 ]))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 table(children: (text(body: [Typo.]), 
+                                  text(body: [Fallb.]), 
+                                  text(body: [Synth]), 
+                                  { text(body: [x]), 
+                                    super(body: text(body: [1])) }, 
+                                  { text(body: [x]), 
+                                    super(body: text(body: [5n])) }, 
+                                  { text(body: [x]), 
+                                    super(body: { text(body: [2 ]), 
+                                                  box(body: square(size: 6.0pt)) }) }, 
+                                  { text(body: [x]), 
+                                    sub(body: text(body: [1])) }, 
+                                  { text(body: [x]), 
+                                    sub(body: text(body: [5n])) }, 
+                                  { text(body: [x]), 
+                                    sub(body: { text(body: [2 ]), 
+                                                box(body: square(size: 6.0pt)) }) }), 
+                       columns: 3), 
+                 parbreak() })
diff --git a/test/typ/text/shift-01.out b/test/typ/text/shift-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/shift-01.out
@@ -0,0 +1,92 @@
+--- parse tree ---
+[ Code
+    "typ/text/shift-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/shift-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/shift-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/text/shift-01.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "super"))
+       [ KeyValArg (Identifier "typographic") (Literal (Boolean False))
+       , KeyValArg
+           (Identifier "baseline") (Negated (Literal (Numeric 0.25 Em)))
+       , KeyValArg (Identifier "size") (Literal (Numeric 0.7 Em))
+       ])
+, SoftBreak
+, Text "n"
+, Code
+    "typ/text/shift-01.typ"
+    ( line 3 , column 3 )
+    (FuncCall (Ident (Identifier "super")) [ BlockArg [ Text "1" ] ])
+, Text ","
+, Space
+, Text "n"
+, Code
+    "typ/text/shift-01.typ"
+    ( line 3 , column 15 )
+    (FuncCall (Ident (Identifier "sub")) [ BlockArg [ Text "2" ] ])
+, Text ","
+, Space
+, Ellipsis
+, Space
+, Text "n"
+, Code
+    "typ/text/shift-01.typ"
+    ( line 3 , column 29 )
+    (FuncCall (Ident (Identifier "super")) [ BlockArg [ Text "N" ] ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+n]), 
+                 super(baseline: -0.25em, 
+                       body: text(body: [1]), 
+                       size: 0.7em, 
+                       typographic: false), 
+                 text(body: [, n]), 
+                 sub(body: text(body: [2])), 
+                 text(body: [, … n]), 
+                 super(baseline: -0.25em, 
+                       body: text(body: [N]), 
+                       size: 0.7em, 
+                       typographic: false), 
+                 parbreak() })
diff --git a/test/typ/text/shift-02.out b/test/typ/text/shift-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/shift-02.out
@@ -0,0 +1,155 @@
+--- parse tree ---
+[ Code
+    "typ/text/shift-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/shift-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/shift-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/text/shift-02.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "underline"))
+       [ KeyValArg (Identifier "stroke") (Literal (Numeric 0.5 Pt))
+       , KeyValArg (Identifier "offset") (Literal (Numeric 0.15 Em))
+       ])
+, SoftBreak
+, Code
+    "typ/text/shift-02.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "underline"))
+       [ BlockArg
+           [ Text "The"
+           , Space
+           , Text "claim"
+           , Code
+               "typ/text/shift-02.typ"
+               ( line 3 , column 22 )
+               (FuncCall
+                  (Ident (Identifier "super"))
+                  [ BlockArg [ Text "[" , Text "4" , Text "]" ] ])
+           ]
+       ])
+, Space
+, Text "has"
+, Space
+, Text "been"
+, Space
+, Text "disputed"
+, Text "."
+, Space
+, HardBreak
+, Text "The"
+, Space
+, Text "claim"
+, Code
+    "typ/text/shift-02.typ"
+    ( line 4 , column 11 )
+    (FuncCall
+       (Ident (Identifier "super"))
+       [ BlockArg
+           [ Code
+               "typ/text/shift-02.typ"
+               ( line 4 , column 18 )
+               (FuncCall
+                  (Ident (Identifier "underline"))
+                  [ BlockArg [ Text "[" , Text "4" , Text "]" ] ])
+           ]
+       ])
+, Space
+, Text "has"
+, Space
+, Text "been"
+, Space
+, Text "disputed"
+, Text "."
+, Space
+, HardBreak
+, Text "It"
+, Space
+, Text "really"
+, Space
+, Text "has"
+, Space
+, Text "been"
+, Code
+    "typ/text/shift-02.typ"
+    ( line 5 , column 20 )
+    (FuncCall
+       (Ident (Identifier "super"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "box"))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "text"))
+                     [ KeyValArg (Identifier "baseline") (Literal (Numeric 0.0 Pt))
+                     , NormalArg
+                         (FuncCall
+                            (Ident (Identifier "underline"))
+                            [ BlockArg [ Text "[" , Text "4" , Text "]" ] ])
+                     ])
+              ])
+       ])
+, Space
+, HardBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 underline(body: { text(body: [The claim]), 
+                                   super(body: text(body: [[4]])) }, 
+                           offset: 0.15em, 
+                           stroke: 0.5pt), 
+                 text(body: [ has been disputed. ]), 
+                 linebreak(), 
+                 text(body: [The claim]), 
+                 super(body: underline(body: text(body: [[4]]), 
+                                       offset: 0.15em, 
+                                       stroke: 0.5pt)), 
+                 text(body: [ has been disputed. ]), 
+                 linebreak(), 
+                 text(body: [It really has been]), 
+                 super(body: box(body: text(baseline: 0.0pt, 
+                                            body: underline(body: text(body: [[4]]), 
+                                                            offset: 0.15em, 
+                                                            stroke: 0.5pt)))), 
+                 text(body: [ ]), 
+                 linebreak() })
diff --git a/test/typ/text/space-00.out b/test/typ/text/space-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/space-00.out
@@ -0,0 +1,241 @@
+--- parse tree ---
+[ Code
+    "typ/text/space-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/space-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/space-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "A"
+, Code
+    "typ/text/space-00.typ"
+    ( line 3 , column 3 )
+    (Let (BasicBind (Just (Identifier "x"))) (Literal (Int 1)))
+, Text "B"
+, Space
+, Code
+    "typ/text/space-00.typ"
+    ( line 3 , column 17 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "x"))
+       , NormalArg (Literal (Int 1))
+       ])
+, Space
+, HardBreak
+, Text "C"
+, Space
+, Code
+    "typ/text/space-00.typ"
+    ( line 4 , column 4 )
+    (Let (BasicBind (Just (Identifier "x"))) (Literal (Int 2)))
+, Text "D"
+, Space
+, Code
+    "typ/text/space-00.typ"
+    ( line 4 , column 17 )
+    (FuncCall
+       (Ident (Identifier "test"))
+       [ NormalArg (Ident (Identifier "x"))
+       , NormalArg (Literal (Int 2))
+       ])
+, Space
+, HardBreak
+, Text "E"
+, Code
+    "typ/text/space-00.typ"
+    ( line 5 , column 3 )
+    (If [ ( Literal (Boolean True) , Block (Content [ Text "F" ]) ) ])
+, Text "G"
+, Space
+, HardBreak
+, Text "H"
+, Space
+, Code
+    "typ/text/space-00.typ"
+    ( line 6 , column 4 )
+    (If
+       [ ( Literal (Boolean True)
+         , Block (CodeBlock [ Literal (String "I") ])
+         )
+       ])
+, Space
+, Text "J"
+, Space
+, HardBreak
+, Text "K"
+, Space
+, Code
+    "typ/text/space-00.typ"
+    ( line 7 , column 4 )
+    (If
+       [ ( Literal (Boolean True) , Block (Content [ Text "L" ]) )
+       , ( Literal (Boolean True) , Block (Content []) )
+       ])
+, Text "M"
+, Space
+, HardBreak
+, Code
+    "typ/text/space-00.typ"
+    ( line 8 , column 2 )
+    (Let (BasicBind (Just (Identifier "c"))) (Literal (Boolean True)))
+, Space
+, Text "N"
+, Code
+    "typ/text/space-00.typ"
+    ( line 8 , column 18 )
+    (While
+       (Ident (Identifier "c"))
+       (Block
+          (Content
+             [ Code
+                 "typ/text/space-00.typ"
+                 ( line 8 , column 28 )
+                 (Assign (Ident (Identifier "c")) (Literal (Boolean False)))
+             , Text "O"
+             ])))
+, Space
+, Text "P"
+, Space
+, HardBreak
+, Code
+    "typ/text/space-00.typ"
+    ( line 9 , column 2 )
+    (Let (BasicBind (Just (Identifier "c"))) (Literal (Boolean True)))
+, Space
+, Text "Q"
+, Space
+, Code
+    "typ/text/space-00.typ"
+    ( line 9 , column 19 )
+    (While
+       (Ident (Identifier "c"))
+       (Block
+          (CodeBlock
+             [ Assign (Ident (Identifier "c")) (Literal (Boolean False))
+             , Literal (String "R")
+             ])))
+, Space
+, Text "S"
+, Space
+, HardBreak
+, Text "T"
+, Code
+    "typ/text/space-00.typ"
+    ( line 10 , column 3 )
+    (For
+       (BasicBind Nothing)
+       (Array [ Reg (Literal None) ])
+       (Block (CodeBlock [ Literal (String "U") ])))
+, Text "V"
+, SoftBreak
+, Code
+    "typ/text/space-00.typ"
+    ( line 11 , column 2 )
+    (Let (BasicBind (Just (Identifier "foo"))) (Literal (String "A")))
+, Space
+, HardBreak
+, Code
+    "typ/text/space-00.typ"
+    ( line 12 , column 2 )
+    (Ident (Identifier "foo"))
+, Text "B"
+, Space
+, HardBreak
+, Code
+    "typ/text/space-00.typ"
+    ( line 13 , column 2 )
+    (Ident (Identifier "foo"))
+, Space
+, Text "B"
+, Space
+, HardBreak
+, Code
+    "typ/text/space-00.typ"
+    ( line 14 , column 2 )
+    (Ident (Identifier "foo"))
+, Text "B"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [A]), 
+                 text(body: [B ]), 
+                 text(body: [✅]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 text(body: [C ]), 
+                 text(body: [D ]), 
+                 text(body: [✅]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 text(body: [E]), 
+                 text(body: [F]), 
+                 text(body: [G ]), 
+                 linebreak(), 
+                 text(body: [H ]), 
+                 text(body: [I]), 
+                 text(body: [ J ]), 
+                 linebreak(), 
+                 text(body: [K ]), 
+                 text(body: [L]), 
+                 text(body: [M ]), 
+                 linebreak(), 
+                 text(body: [ N]), 
+                 text(body: [O]), 
+                 text(body: [ P ]), 
+                 linebreak(), 
+                 text(body: [ Q ]), 
+                 text(body: [R]), 
+                 text(body: [ S ]), 
+                 linebreak(), 
+                 text(body: [T]), 
+                 text(body: [U]), 
+                 text(body: [V
+]), 
+                 text(body: [ ]), 
+                 linebreak(), 
+                 text(body: [A]), 
+                 text(body: [B ]), 
+                 linebreak(), 
+                 text(body: [A]), 
+                 text(body: [ B ]), 
+                 linebreak(), 
+                 text(body: [A]), 
+                 text(body: [B]), 
+                 parbreak() })
diff --git a/test/typ/text/space-01.out b/test/typ/text/space-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/space-01.out
@@ -0,0 +1,82 @@
+--- parse tree ---
+[ Code
+    "typ/text/space-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/space-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/space-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "A"
+, Comment
+, Text "B"
+, Comment
+, Text "C"
+, Space
+, HardBreak
+, Text "A"
+, Space
+, Comment
+, Space
+, Text "B"
+, Comment
+, Text "C"
+, Space
+, HardBreak
+, Text "A"
+, Space
+, Comment
+, Text "B"
+, Comment
+, Space
+, Text "C"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [A]), 
+                 text(body: [B]), 
+                 text(body: [C ]), 
+                 linebreak(), 
+                 text(body: [A ]), 
+                 text(body: [ B]), 
+                 text(body: [C ]), 
+                 linebreak(), 
+                 text(body: [A ]), 
+                 text(body: [B]), 
+                 text(body: [ C]), 
+                 parbreak() })
diff --git a/test/typ/text/space-02.out b/test/typ/text/space-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/space-02.out
@@ -0,0 +1,62 @@
+--- parse tree ---
+[ Code
+    "typ/text/space-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/space-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/space-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "A"
+, Code
+    "typ/text/space-02.typ"
+    ( line 3 , column 3 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "font") (Literal (String "IBM Plex Serif"))
+       , BlockArg [ Space ]
+       ])
+, Text "B"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [A]), 
+                 text(body: text(body: [ ]), 
+                      font: "IBM Plex Serif"), 
+                 text(body: [B]), 
+                 parbreak() })
diff --git a/test/typ/text/space-03.out b/test/typ/text/space-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/space-03.out
@@ -0,0 +1,63 @@
+--- parse tree ---
+[ Code
+    "typ/text/space-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/space-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/space-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "Left"
+, Space
+, Code
+    "typ/text/space-03.typ"
+    ( line 3 , column 7 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "font") (Literal (String "IBM Plex Serif"))
+       , BlockArg [ Text "Right" ]
+       ])
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [Left ]), 
+                 text(body: text(body: [Right]), 
+                      font: "IBM Plex Serif"), 
+                 text(body: [.]), 
+                 parbreak() })
diff --git a/test/typ/text/space-04.out b/test/typ/text/space-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/space-04.out
@@ -0,0 +1,70 @@
+--- parse tree ---
+[ Code
+    "typ/text/space-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/space-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/space-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/text/space-04.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "align"))
+       [ NormalArg (Ident (Identifier "center"))
+       , BlockArg
+           [ Text "A"
+           , Space
+           , HardBreak
+           , Text "B"
+           , Space
+           , HardBreak
+           , Text "C"
+           ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 align(alignment: center, 
+                       body: { text(body: [A ]), 
+                               linebreak(), 
+                               text(body: [B ]), 
+                               linebreak(), 
+                               text(body: [C]) }), 
+                 parbreak() })
diff --git a/test/typ/text/space-05.out b/test/typ/text/space-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/space-05.out
@@ -0,0 +1,59 @@
+--- parse tree ---
+[ Code
+    "typ/text/space-05.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/space-05.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/space-05.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "A"
+, Code
+    "typ/text/space-05.typ"
+    ( line 3 , column 3 )
+    (Literal (String "\n"))
+, Space
+, Text "B"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [A]), 
+                 text(body: [
+]), 
+                 text(body: [ B]), 
+                 parbreak() })
diff --git a/test/typ/text/space-06.out b/test/typ/text/space-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/space-06.out
@@ -0,0 +1,55 @@
+--- parse tree ---
+[ Code
+    "typ/text/space-06.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/space-06.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/space-06.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "LLLLLLLLLLLLLLLLLL"
+, Space
+, Text "R"
+, Space
+, Emph [ Text "L" ]
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [LLLLLLLLLLLLLLLLLL R ]), 
+                 emph(body: text(body: [L])), 
+                 parbreak() })
diff --git a/test/typ/text/symbol-00.out b/test/typ/text/symbol-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/symbol-00.out
@@ -0,0 +1,164 @@
+--- parse tree ---
+[ Code
+    "typ/text/symbol-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/symbol-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/symbol-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/text/symbol-00.typ"
+    ( line 2 , column 2 )
+    (FieldAccess
+       (Ident (Identifier "face")) (Ident (Identifier "emoji")))
+, SoftBreak
+, Code
+    "typ/text/symbol-00.typ"
+    ( line 3 , column 2 )
+    (FieldAccess
+       (Ident (Identifier "old"))
+       (FieldAccess
+          (Ident (Identifier "woman")) (Ident (Identifier "emoji"))))
+, SoftBreak
+, Code
+    "typ/text/symbol-00.typ"
+    ( line 4 , column 2 )
+    (FieldAccess
+       (Ident (Identifier "turtle")) (Ident (Identifier "emoji")))
+, ParBreak
+, Code
+    "typ/text/symbol-00.typ"
+    ( line 6 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg
+           (Identifier "font") (Literal (String "New Computer Modern Math"))
+       ])
+, SoftBreak
+, Code
+    "typ/text/symbol-00.typ"
+    ( line 7 , column 2 )
+    (FieldAccess
+       (Ident (Identifier "arrow")) (Ident (Identifier "sym")))
+, SoftBreak
+, Code
+    "typ/text/symbol-00.typ"
+    ( line 8 , column 2 )
+    (FieldAccess
+       (Ident (Identifier "l"))
+       (FieldAccess
+          (Ident (Identifier "arrow")) (Ident (Identifier "sym"))))
+, SoftBreak
+, Code
+    "typ/text/symbol-00.typ"
+    ( line 9 , column 2 )
+    (FieldAccess
+       (Ident (Identifier "squiggly"))
+       (FieldAccess
+          (Ident (Identifier "r"))
+          (FieldAccess
+             (Ident (Identifier "arrow")) (Ident (Identifier "sym")))))
+, SoftBreak
+, Code
+    "typ/text/symbol-00.typ"
+    ( line 10 , column 2 )
+    (FieldAccess
+       (Ident (Identifier "hook"))
+       (FieldAccess
+          (Ident (Identifier "tr"))
+          (FieldAccess
+             (Ident (Identifier "arrow")) (Ident (Identifier "sym")))))
+, ParBreak
+, Code
+    "typ/text/symbol-00.typ"
+    ( line 12 , column 2 )
+    (FieldAccess
+       (Ident (Identifier "r"))
+       (FieldAccess
+          (Ident (Identifier "arrow")) (Ident (Identifier "sym"))))
+, Text "this"
+, Space
+, Text "and"
+, Space
+, Text "this"
+, Code
+    "typ/text/symbol-00.typ"
+    ( line 12 , column 28 )
+    (FieldAccess
+       (Ident (Identifier "l"))
+       (FieldAccess
+          (Ident (Identifier "arrow")) (Ident (Identifier "sym"))))
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [😀]), 
+                 text(body: [
+]), 
+                 text(body: [👵]), 
+                 text(body: [
+]), 
+                 text(body: [🐢]), 
+                 parbreak(), 
+                 text(body: [
+], 
+                      font: "New Computer Modern Math"), 
+                 text(body: [→], 
+                      font: "New Computer Modern Math"), 
+                 text(body: [
+], 
+                      font: "New Computer Modern Math"), 
+                 text(body: [←], 
+                      font: "New Computer Modern Math"), 
+                 text(body: [
+], 
+                      font: "New Computer Modern Math"), 
+                 text(body: [⇝], 
+                      font: "New Computer Modern Math"), 
+                 text(body: [
+], 
+                      font: "New Computer Modern Math"), 
+                 text(body: [⤤], 
+                      font: "New Computer Modern Math"), 
+                 parbreak(), 
+                 text(body: [→], 
+                      font: "New Computer Modern Math"), 
+                 text(body: [this and this], 
+                      font: "New Computer Modern Math"), 
+                 text(body: [←], 
+                      font: "New Computer Modern Math"), 
+                 parbreak() })
diff --git a/test/typ/text/symbol-01.out b/test/typ/text/symbol-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/symbol-01.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/text/tracking-spacing-00.out b/test/typ/text/tracking-spacing-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/tracking-spacing-00.out
@@ -0,0 +1,74 @@
+--- parse tree ---
+[ Code
+    "typ/text/tracking-spacing-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/tracking-spacing-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/tracking-spacing-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/text/tracking-spacing-00.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg
+           (Identifier "tracking") (Negated (Literal (Numeric 1.0e-2 Em)))
+       ])
+, SoftBreak
+, Text "I"
+, Space
+, Text "saw"
+, Space
+, Text "Zoe"
+, Space
+, Text "y\1243sterday,"
+, Space
+, Text "on"
+, Space
+, Text "the"
+, Space
+, Text "tram"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+I saw Zoe yӛsterday, on the tram.], 
+                      tracking: -1.0e-2em), 
+                 parbreak() })
diff --git a/test/typ/text/tracking-spacing-01.out b/test/typ/text/tracking-spacing-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/tracking-spacing-01.out
@@ -0,0 +1,68 @@
+--- parse tree ---
+[ Code
+    "typ/text/tracking-spacing-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/tracking-spacing-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/tracking-spacing-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "I"
+, Quote '\''
+, Text "m"
+, Space
+, Text "in"
+, Code
+    "typ/text/tracking-spacing-01.typ"
+    ( line 3 , column 8 )
+    (FuncCall
+       (Ident (Identifier "text"))
+       [ KeyValArg
+           (Identifier "tracking")
+           (Plus (Literal (Numeric 0.15 Em)) (Literal (Numeric 1.5 Pt)))
+       , BlockArg [ Space , Text "spaace" ]
+       ])
+, Text "!"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [I’m in]), 
+                 text(body: text(body: [ spaace]), 
+                      tracking: 0.15em + 1.5pt), 
+                 text(body: [!]), 
+                 parbreak() })
diff --git a/test/typ/text/tracking-spacing-02.out b/test/typ/text/tracking-spacing-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/tracking-spacing-02.out
@@ -0,0 +1,78 @@
+--- parse tree ---
+[ Code
+    "typ/text/tracking-spacing-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/tracking-spacing-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/tracking-spacing-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/text/tracking-spacing-02.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg
+           (Identifier "font")
+           (Array
+              [ Reg (Literal (String "PT Sans"))
+              , Reg (Literal (String "Noto Serif Hebrew"))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/text/tracking-spacing-02.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "tracking") (Literal (Numeric 0.3 Em)) ])
+, SoftBreak
+, Text "\1496\1462\1511\1505\1496"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+], 
+                      font: ("PT Sans", 
+                             "Noto Serif Hebrew")), 
+                 text(body: [
+טֶקסט], 
+                      font: ("PT Sans", 
+                             "Noto Serif Hebrew"), 
+                      tracking: 0.3em), 
+                 parbreak() })
diff --git a/test/typ/text/tracking-spacing-03.out b/test/typ/text/tracking-spacing-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/tracking-spacing-03.out
@@ -0,0 +1,59 @@
+--- parse tree ---
+[ Code
+    "typ/text/tracking-spacing-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/tracking-spacing-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/tracking-spacing-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/text/tracking-spacing-03.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "tracking") (Literal (Numeric 0.3 Em)) ])
+, SoftBreak
+, Text "\1575\1604\1606\1589"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+النص], 
+                      tracking: 0.3em), 
+                 parbreak() })
diff --git a/test/typ/text/tracking-spacing-04.out b/test/typ/text/tracking-spacing-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/tracking-spacing-04.out
@@ -0,0 +1,66 @@
+--- parse tree ---
+[ Code
+    "typ/text/tracking-spacing-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/tracking-spacing-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/tracking-spacing-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/text/tracking-spacing-04.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "spacing") (Literal (Numeric 1.0 Em)) ])
+, SoftBreak
+, Text "My"
+, Space
+, Text "text"
+, Space
+, Text "has"
+, Space
+, Text "spaces"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+My text has spaces.], 
+                      spacing: 1.0em), 
+                 parbreak() })
diff --git a/test/typ/text/tracking-spacing-05.out b/test/typ/text/tracking-spacing-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/text/tracking-spacing-05.out
@@ -0,0 +1,67 @@
+--- parse tree ---
+[ Code
+    "typ/text/tracking-spacing-05.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/text/tracking-spacing-05.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/text/tracking-spacing-05.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/text/tracking-spacing-05.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg
+           (Identifier "spacing")
+           (Plus (Literal (Numeric 50.0 Percent)) (Literal (Numeric 1.0 Pt)))
+       ])
+, SoftBreak
+, Text "This"
+, Space
+, Text "is"
+, Space
+, Text "tight"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+This is tight.], 
+                      spacing: 1.0pt + 50%), 
+                 parbreak() })
diff --git a/test/typ/visualize/image-00.out b/test/typ/visualize/image-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/image-00.out
@@ -0,0 +1,78 @@
+--- parse tree ---
+[ Code
+    "typ/visualize/image-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/visualize/image-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/visualize/image-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, SoftBreak
+, Comment
+, Code
+    "typ/visualize/image-00.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "image"))
+       [ NormalArg (Literal (String "/assets/files/rhino.png")) ])
+, ParBreak
+, Comment
+, Code
+    "typ/visualize/image-00.typ"
+    ( line 8 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 60.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/visualize/image-00.typ"
+    ( line 9 , column 2 )
+    (FuncCall
+       (Ident (Identifier "image"))
+       [ NormalArg (Literal (String "/assets/files/tiger.jpg")) ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 image(path: "/assets/files/rhino.png"), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 image(path: "/assets/files/tiger.jpg"), 
+                 parbreak() })
diff --git a/test/typ/visualize/image-01.out b/test/typ/visualize/image-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/image-01.out
@@ -0,0 +1,122 @@
+--- parse tree ---
+[ Code
+    "typ/visualize/image-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/visualize/image-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/visualize/image-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, SoftBreak
+, Comment
+, Code
+    "typ/visualize/image-01.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "image"))
+              [ NormalArg (Literal (String "/assets/files/rhino.png"))
+              , KeyValArg (Identifier "width") (Literal (Numeric 30.0 Pt))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/visualize/image-01.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "image"))
+              [ NormalArg (Literal (String "/assets/files/rhino.png"))
+              , KeyValArg (Identifier "height") (Literal (Numeric 30.0 Pt))
+              ])
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/visualize/image-01.typ"
+    ( line 9 , column 2 )
+    (FuncCall
+       (Ident (Identifier "image"))
+       [ NormalArg (Literal (String "/assets/files/monkey.svg"))
+       , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
+       , KeyValArg (Identifier "height") (Literal (Numeric 20.0 Pt))
+       , KeyValArg (Identifier "fit") (Literal (String "stretch"))
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/visualize/image-01.typ"
+    ( line 12 , column 2 )
+    (FuncCall
+       (Ident (Identifier "align"))
+       [ NormalArg
+           (Plus (Ident (Identifier "bottom")) (Ident (Identifier "right")))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "image"))
+              [ NormalArg (Literal (String "/assets/files/tiger.jpg"))
+              , KeyValArg (Identifier "width") (Literal (Numeric 40.0 Pt))
+              , KeyValArg (Identifier "alt") (Literal (String "A tiger"))
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 box(body: image(path: "/assets/files/rhino.png", 
+                                 width: 30.0pt)), 
+                 text(body: [
+]), 
+                 box(body: image(height: 30.0pt, 
+                                 path: "/assets/files/rhino.png")), 
+                 parbreak(), 
+                 image(fit: "stretch", 
+                       height: 20.0pt, 
+                       path: "/assets/files/monkey.svg", 
+                       width: 100%), 
+                 parbreak(), 
+                 align(alignment: Axes(right, bottom), 
+                       body: image(alt: "A tiger", 
+                                   path: "/assets/files/tiger.jpg", 
+                                   width: 40.0pt)), 
+                 parbreak() })
diff --git a/test/typ/visualize/image-02.out b/test/typ/visualize/image-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/image-02.out
@@ -0,0 +1,115 @@
+--- parse tree ---
+[ Code
+    "typ/visualize/image-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/visualize/image-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/visualize/image-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/visualize/image-02.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 50.0 Pt))
+       , KeyValArg (Identifier "margin") (Literal (Numeric 0.0 Pt))
+       ])
+, SoftBreak
+, Code
+    "typ/visualize/image-02.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "grid"))
+       [ KeyValArg
+           (Identifier "columns")
+           (Array
+              [ Reg (Literal (Numeric 1.0 Fr))
+              , Reg (Literal (Numeric 1.0 Fr))
+              , Reg (Literal (Numeric 1.0 Fr))
+              ])
+       , KeyValArg (Identifier "rows") (Literal (Numeric 100.0 Percent))
+       , KeyValArg (Identifier "gutter") (Literal (Numeric 3.0 Pt))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "image"))
+              [ NormalArg (Literal (String "/assets/files/tiger.jpg"))
+              , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
+              , KeyValArg (Identifier "height") (Literal (Numeric 100.0 Percent))
+              , KeyValArg (Identifier "fit") (Literal (String "contain"))
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "image"))
+              [ NormalArg (Literal (String "/assets/files/tiger.jpg"))
+              , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
+              , KeyValArg (Identifier "height") (Literal (Numeric 100.0 Percent))
+              , KeyValArg (Identifier "fit") (Literal (String "cover"))
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "image"))
+              [ NormalArg (Literal (String "/assets/files/monkey.svg"))
+              , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
+              , KeyValArg (Identifier "height") (Literal (Numeric 100.0 Percent))
+              , KeyValArg (Identifier "fit") (Literal (String "stretch"))
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 grid(children: (image(fit: "contain", 
+                                       height: 100%, 
+                                       path: "/assets/files/tiger.jpg", 
+                                       width: 100%), 
+                                 image(fit: "cover", 
+                                       height: 100%, 
+                                       path: "/assets/files/tiger.jpg", 
+                                       width: 100%), 
+                                 image(fit: "stretch", 
+                                       height: 100%, 
+                                       path: "/assets/files/monkey.svg", 
+                                       width: 100%)), 
+                      columns: (1.0fr, 
+                                1.0fr, 
+                                1.0fr), 
+                      gutter: 3.0pt, 
+                      rows: 100%), 
+                 parbreak() })
diff --git a/test/typ/visualize/image-03.out b/test/typ/visualize/image-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/image-03.out
@@ -0,0 +1,67 @@
+--- parse tree ---
+[ Code
+    "typ/visualize/image-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/visualize/image-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/visualize/image-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/visualize/image-03.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 60.0 Pt)) ])
+, SoftBreak
+, Text "Stuff"
+, SoftBreak
+, Code
+    "typ/visualize/image-03.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "image"))
+       [ NormalArg (Literal (String "/assets/files/rhino.png")) ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+Stuff
+]), 
+                 image(path: "/assets/files/rhino.png"), 
+                 parbreak() })
diff --git a/test/typ/visualize/image-04.out b/test/typ/visualize/image-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/image-04.out
@@ -0,0 +1,70 @@
+--- parse tree ---
+[ Code
+    "typ/visualize/image-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/visualize/image-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/visualize/image-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Text "A"
+, Space
+, Code
+    "typ/visualize/image-04.typ"
+    ( line 3 , column 4 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "image"))
+              [ NormalArg (Literal (String "/assets/files/tiger.jpg"))
+              , KeyValArg (Identifier "height") (Literal (Numeric 1.0 Cm))
+              , KeyValArg (Identifier "width") (Literal (Numeric 80.0 Percent))
+              ])
+       ])
+, Space
+, Text "B"
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [A ]), 
+                 box(body: image(height: 1.0cm, 
+                                 path: "/assets/files/tiger.jpg", 
+                                 width: 80%)), 
+                 text(body: [ B]), 
+                 parbreak() })
diff --git a/test/typ/visualize/image-05.out b/test/typ/visualize/image-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/image-05.out
@@ -0,0 +1,55 @@
+--- parse tree ---
+[ Code
+    "typ/visualize/image-05.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/visualize/image-05.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/visualize/image-05.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/visualize/image-05.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "image"))
+       [ NormalArg (Literal (String "/assets/files/pattern.svg")) ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 image(path: "/assets/files/pattern.svg"), 
+                 parbreak() })
diff --git a/test/typ/visualize/image-06.out b/test/typ/visualize/image-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/image-06.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/visualize/image-07.out b/test/typ/visualize/image-07.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/image-07.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/visualize/image-08.out b/test/typ/visualize/image-08.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/image-08.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/visualize/line-00.out b/test/typ/visualize/line-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/line-00.out
@@ -0,0 +1,152 @@
+--- parse tree ---
+[ Code
+    "typ/visualize/line-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/visualize/line-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/visualize/line-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/visualize/line-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 60.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/visualize/line-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ NormalArg
+           (Block
+              (CodeBlock
+                 [ Set
+                     (Ident (Identifier "line"))
+                     [ KeyValArg (Identifier "stroke") (Literal (Numeric 0.75 Pt)) ]
+                 , FuncCall
+                     (Ident (Identifier "place"))
+                     [ NormalArg
+                         (FuncCall
+                            (Ident (Identifier "line"))
+                            [ KeyValArg
+                                (Identifier "end")
+                                (Array
+                                   [ Reg (Literal (Numeric 0.4 Em))
+                                   , Reg (Literal (Numeric 0.0 Pt))
+                                   ])
+                            ])
+                     ]
+                 , FuncCall
+                     (Ident (Identifier "place"))
+                     [ NormalArg
+                         (FuncCall
+                            (Ident (Identifier "line"))
+                            [ KeyValArg
+                                (Identifier "start")
+                                (Array
+                                   [ Reg (Literal (Numeric 0.0 Pt))
+                                   , Reg (Literal (Numeric 0.4 Em))
+                                   ])
+                            , KeyValArg
+                                (Identifier "end")
+                                (Array
+                                   [ Reg (Literal (Numeric 0.0 Pt))
+                                   , Reg (Literal (Numeric 0.0 Pt))
+                                   ])
+                            ])
+                     ]
+                 , FuncCall
+                     (Ident (Identifier "line"))
+                     [ KeyValArg
+                         (Identifier "end")
+                         (Array
+                            [ Reg (Literal (Numeric 0.6 Em))
+                            , Reg (Literal (Numeric 0.6 Em))
+                            ])
+                     ]
+                 ]))
+       ])
+, Space
+, Text "Hello"
+, Space
+, Code
+    "typ/visualize/line-00.typ"
+    ( line 8 , column 11 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "line"))
+              [ KeyValArg (Identifier "length") (Literal (Numeric 1.0 Cm)) ])
+       ])
+, Text "!"
+, ParBreak
+, Code
+    "typ/visualize/line-00.typ"
+    ( line 10 , column 2 )
+    (FuncCall
+       (Ident (Identifier "line"))
+       [ KeyValArg
+           (Identifier "end")
+           (Array
+              [ Reg (Literal (Numeric 70.0 Percent))
+              , Reg (Literal (Numeric 50.0 Percent))
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 box(body: { place(body: line(end: (0.4em, 
+                                                    0.0pt), 
+                                              stroke: 0.75pt)), 
+                             place(body: line(end: (0.0pt, 
+                                                    0.0pt), 
+                                              start: (0.0pt, 
+                                                      0.4em), 
+                                              stroke: 0.75pt)), 
+                             line(end: (0.6em, 0.6em), 
+                                  stroke: 0.75pt) }), 
+                 text(body: [ Hello ]), 
+                 box(body: line(length: 1.0cm)), 
+                 text(body: [!]), 
+                 parbreak(), 
+                 line(end: (70%, 50%)), 
+                 parbreak() })
diff --git a/test/typ/visualize/line-01.out b/test/typ/visualize/line-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/line-01.out
@@ -0,0 +1,1179 @@
+--- parse tree ---
+[ Code
+    "typ/visualize/line-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/visualize/line-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/visualize/line-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, SoftBreak
+, Code
+    "typ/visualize/line-01.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg
+           (Identifier "fill")
+           (FuncCall
+              (Ident (Identifier "rgb"))
+              [ NormalArg (Literal (String "0B1026")) ])
+       ])
+, SoftBreak
+, Code
+    "typ/visualize/line-01.typ"
+    ( line 5 , column 2 )
+    (Set
+       (Ident (Identifier "line"))
+       [ KeyValArg (Identifier "stroke") (Ident (Identifier "white")) ])
+, ParBreak
+, Code
+    "typ/visualize/line-01.typ"
+    ( line 7 , column 2 )
+    (LetFunc
+       (Identifier "star")
+       [ NormalParam (Identifier "size")
+       , SinkParam (Just (Identifier "args"))
+       ]
+       (FuncCall
+          (Ident (Identifier "box"))
+          [ KeyValArg (Identifier "width") (Ident (Identifier "size"))
+          , KeyValArg (Identifier "height") (Ident (Identifier "size"))
+          , BlockArg
+              [ SoftBreak
+              , Code
+                  "typ/visualize/line-01.typ"
+                  ( line 8 , column 4 )
+                  (Set
+                     (Ident (Identifier "text"))
+                     [ KeyValArg (Identifier "spacing") (Literal (Numeric 0.0 Percent))
+                     ])
+              , SoftBreak
+              , Code
+                  "typ/visualize/line-01.typ"
+                  ( line 9 , column 4 )
+                  (Set
+                     (Ident (Identifier "line"))
+                     [ SpreadArg (Ident (Identifier "args")) ])
+              , SoftBreak
+              , Code
+                  "typ/visualize/line-01.typ"
+                  ( line 10 , column 4 )
+                  (Set
+                     (Ident (Identifier "align"))
+                     [ NormalArg (Ident (Identifier "left")) ])
+              , SoftBreak
+              , Code
+                  "typ/visualize/line-01.typ"
+                  ( line 11 , column 4 )
+                  (FuncCall
+                     (Ident (Identifier "v"))
+                     [ NormalArg (Literal (Numeric 30.0 Percent)) ])
+              , SoftBreak
+              , Code
+                  "typ/visualize/line-01.typ"
+                  ( line 12 , column 4 )
+                  (FuncCall
+                     (Ident (Identifier "place"))
+                     [ NormalArg
+                         (FuncCall
+                            (Ident (Identifier "line"))
+                            [ KeyValArg (Identifier "length") (Literal (Numeric 30.0 Percent))
+                            , KeyValArg
+                                (Identifier "start")
+                                (Array
+                                   [ Reg (Literal (Numeric 9.0 Percent))
+                                   , Reg (Literal (Numeric 2.0 Percent))
+                                   ])
+                            ])
+                     ])
+              , SoftBreak
+              , Code
+                  "typ/visualize/line-01.typ"
+                  ( line 13 , column 4 )
+                  (FuncCall
+                     (Ident (Identifier "place"))
+                     [ NormalArg
+                         (FuncCall
+                            (Ident (Identifier "line"))
+                            [ KeyValArg (Identifier "length") (Literal (Numeric 30.0 Percent))
+                            , KeyValArg
+                                (Identifier "start")
+                                (Array
+                                   [ Reg (Literal (Numeric 38.7 Percent))
+                                   , Reg (Literal (Numeric 2.0 Percent))
+                                   ])
+                            , KeyValArg
+                                (Identifier "angle") (Negated (Literal (Numeric 72.0 Deg)))
+                            ])
+                     ])
+              , SoftBreak
+              , Code
+                  "typ/visualize/line-01.typ"
+                  ( line 14 , column 4 )
+                  (FuncCall
+                     (Ident (Identifier "place"))
+                     [ NormalArg
+                         (FuncCall
+                            (Ident (Identifier "line"))
+                            [ KeyValArg (Identifier "length") (Literal (Numeric 30.0 Percent))
+                            , KeyValArg
+                                (Identifier "start")
+                                (Array
+                                   [ Reg (Literal (Numeric 57.5 Percent))
+                                   , Reg (Literal (Numeric 2.0 Percent))
+                                   ])
+                            , KeyValArg (Identifier "angle") (Literal (Numeric 252.0 Deg))
+                            ])
+                     ])
+              , SoftBreak
+              , Code
+                  "typ/visualize/line-01.typ"
+                  ( line 15 , column 4 )
+                  (FuncCall
+                     (Ident (Identifier "place"))
+                     [ NormalArg
+                         (FuncCall
+                            (Ident (Identifier "line"))
+                            [ KeyValArg (Identifier "length") (Literal (Numeric 30.0 Percent))
+                            , KeyValArg
+                                (Identifier "start")
+                                (Array
+                                   [ Reg (Literal (Numeric 57.3 Percent))
+                                   , Reg (Literal (Numeric 2.0 Percent))
+                                   ])
+                            ])
+                     ])
+              , SoftBreak
+              , Code
+                  "typ/visualize/line-01.typ"
+                  ( line 16 , column 4 )
+                  (FuncCall
+                     (Ident (Identifier "place"))
+                     [ NormalArg
+                         (FuncCall
+                            (Ident (Identifier "line"))
+                            [ KeyValArg
+                                (Identifier "length") (Negated (Literal (Numeric 30.0 Percent)))
+                            , KeyValArg
+                                (Identifier "start")
+                                (Array
+                                   [ Reg (Literal (Numeric 88.0 Percent))
+                                   , Reg (Literal (Numeric 2.0 Percent))
+                                   ])
+                            , KeyValArg
+                                (Identifier "angle") (Negated (Literal (Numeric 36.0 Deg)))
+                            ])
+                     ])
+              , SoftBreak
+              , Code
+                  "typ/visualize/line-01.typ"
+                  ( line 17 , column 4 )
+                  (FuncCall
+                     (Ident (Identifier "place"))
+                     [ NormalArg
+                         (FuncCall
+                            (Ident (Identifier "line"))
+                            [ KeyValArg (Identifier "length") (Literal (Numeric 30.0 Percent))
+                            , KeyValArg
+                                (Identifier "start")
+                                (Array
+                                   [ Reg (Literal (Numeric 73.3 Percent))
+                                   , Reg (Literal (Numeric 48.0 Percent))
+                                   ])
+                            , KeyValArg (Identifier "angle") (Literal (Numeric 252.0 Deg))
+                            ])
+                     ])
+              , SoftBreak
+              , Code
+                  "typ/visualize/line-01.typ"
+                  ( line 18 , column 4 )
+                  (FuncCall
+                     (Ident (Identifier "place"))
+                     [ NormalArg
+                         (FuncCall
+                            (Ident (Identifier "line"))
+                            [ KeyValArg
+                                (Identifier "length") (Negated (Literal (Numeric 30.0 Percent)))
+                            , KeyValArg
+                                (Identifier "start")
+                                (Array
+                                   [ Reg (Literal (Numeric 73.5 Percent))
+                                   , Reg (Literal (Numeric 48.0 Percent))
+                                   ])
+                            , KeyValArg (Identifier "angle") (Literal (Numeric 36.0 Deg))
+                            ])
+                     ])
+              , SoftBreak
+              , Code
+                  "typ/visualize/line-01.typ"
+                  ( line 19 , column 4 )
+                  (FuncCall
+                     (Ident (Identifier "place"))
+                     [ NormalArg
+                         (FuncCall
+                            (Ident (Identifier "line"))
+                            [ KeyValArg (Identifier "length") (Literal (Numeric 30.0 Percent))
+                            , KeyValArg
+                                (Identifier "start")
+                                (Array
+                                   [ Reg (Literal (Numeric 25.4 Percent))
+                                   , Reg (Literal (Numeric 48.0 Percent))
+                                   ])
+                            , KeyValArg
+                                (Identifier "angle") (Negated (Literal (Numeric 36.0 Deg)))
+                            ])
+                     ])
+              , SoftBreak
+              , Code
+                  "typ/visualize/line-01.typ"
+                  ( line 20 , column 4 )
+                  (FuncCall
+                     (Ident (Identifier "place"))
+                     [ NormalArg
+                         (FuncCall
+                            (Ident (Identifier "line"))
+                            [ KeyValArg (Identifier "length") (Literal (Numeric 30.0 Percent))
+                            , KeyValArg
+                                (Identifier "start")
+                                (Array
+                                   [ Reg (Literal (Numeric 25.6 Percent))
+                                   , Reg (Literal (Numeric 48.0 Percent))
+                                   ])
+                            , KeyValArg
+                                (Identifier "angle") (Negated (Literal (Numeric 72.0 Deg)))
+                            ])
+                     ])
+              , SoftBreak
+              , Code
+                  "typ/visualize/line-01.typ"
+                  ( line 21 , column 4 )
+                  (FuncCall
+                     (Ident (Identifier "place"))
+                     [ NormalArg
+                         (FuncCall
+                            (Ident (Identifier "line"))
+                            [ KeyValArg (Identifier "length") (Literal (Numeric 32.0 Percent))
+                            , KeyValArg
+                                (Identifier "start")
+                                (Array
+                                   [ Reg (Literal (Numeric 8.5 Percent))
+                                   , Reg (Literal (Numeric 2.0 Percent))
+                                   ])
+                            , KeyValArg (Identifier "angle") (Literal (Numeric 34.0 Deg))
+                            ])
+                     ])
+              , ParBreak
+              ]
+          ]))
+, ParBreak
+, Code
+    "typ/visualize/line-01.typ"
+    ( line 24 , column 2 )
+    (FuncCall
+       (Ident (Identifier "align"))
+       [ NormalArg (Ident (Identifier "center"))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "grid"))
+              [ KeyValArg (Identifier "columns") (Literal (Int 3))
+              , KeyValArg
+                  (Identifier "column-gutter") (Literal (Numeric 10.0 Pt))
+              , SpreadArg
+                  (Times
+                     (Array
+                        [ Reg
+                            (FuncCall
+                               (Ident (Identifier "star"))
+                               [ NormalArg (Literal (Numeric 20.0 Pt))
+                               , KeyValArg (Identifier "stroke") (Literal (Numeric 0.5 Pt))
+                               ])
+                        ])
+                     (Literal (Int 9)))
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 parbreak(), 
+                 align(alignment: center, 
+                       body: grid(children: (box(body: { text(body: [
+]), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         v(amount: 30%), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(length: 30%, 
+                                                                          start: (9%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: -72.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (38%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: 252.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (57%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(length: 30%, 
+                                                                          start: (57%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: -36.0deg, 
+                                                                          length: -30%, 
+                                                                          start: (88%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: 252.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (73%, 
+                                                                                  48%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: 36.0deg, 
+                                                                          length: -30%, 
+                                                                          start: (73%, 
+                                                                                  48%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: -36.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (25%, 
+                                                                                  48%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: -72.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (25%, 
+                                                                                  48%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: 34.0deg, 
+                                                                          length: 32%, 
+                                                                          start: (8%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         parbreak() }, 
+                                                 height: 20.0pt, 
+                                                 width: 20.0pt), 
+                                             box(body: { text(body: [
+]), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         v(amount: 30%), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(length: 30%, 
+                                                                          start: (9%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: -72.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (38%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: 252.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (57%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(length: 30%, 
+                                                                          start: (57%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: -36.0deg, 
+                                                                          length: -30%, 
+                                                                          start: (88%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: 252.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (73%, 
+                                                                                  48%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: 36.0deg, 
+                                                                          length: -30%, 
+                                                                          start: (73%, 
+                                                                                  48%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: -36.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (25%, 
+                                                                                  48%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: -72.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (25%, 
+                                                                                  48%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: 34.0deg, 
+                                                                          length: 32%, 
+                                                                          start: (8%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         parbreak() }, 
+                                                 height: 20.0pt, 
+                                                 width: 20.0pt), 
+                                             box(body: { text(body: [
+]), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         v(amount: 30%), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(length: 30%, 
+                                                                          start: (9%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: -72.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (38%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: 252.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (57%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(length: 30%, 
+                                                                          start: (57%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: -36.0deg, 
+                                                                          length: -30%, 
+                                                                          start: (88%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: 252.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (73%, 
+                                                                                  48%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: 36.0deg, 
+                                                                          length: -30%, 
+                                                                          start: (73%, 
+                                                                                  48%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: -36.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (25%, 
+                                                                                  48%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: -72.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (25%, 
+                                                                                  48%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: 34.0deg, 
+                                                                          length: 32%, 
+                                                                          start: (8%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         parbreak() }, 
+                                                 height: 20.0pt, 
+                                                 width: 20.0pt), 
+                                             box(body: { text(body: [
+]), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         v(amount: 30%), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(length: 30%, 
+                                                                          start: (9%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: -72.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (38%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: 252.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (57%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(length: 30%, 
+                                                                          start: (57%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: -36.0deg, 
+                                                                          length: -30%, 
+                                                                          start: (88%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: 252.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (73%, 
+                                                                                  48%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: 36.0deg, 
+                                                                          length: -30%, 
+                                                                          start: (73%, 
+                                                                                  48%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: -36.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (25%, 
+                                                                                  48%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: -72.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (25%, 
+                                                                                  48%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: 34.0deg, 
+                                                                          length: 32%, 
+                                                                          start: (8%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         parbreak() }, 
+                                                 height: 20.0pt, 
+                                                 width: 20.0pt), 
+                                             box(body: { text(body: [
+]), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         v(amount: 30%), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(length: 30%, 
+                                                                          start: (9%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: -72.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (38%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: 252.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (57%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(length: 30%, 
+                                                                          start: (57%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: -36.0deg, 
+                                                                          length: -30%, 
+                                                                          start: (88%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: 252.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (73%, 
+                                                                                  48%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: 36.0deg, 
+                                                                          length: -30%, 
+                                                                          start: (73%, 
+                                                                                  48%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: -36.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (25%, 
+                                                                                  48%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: -72.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (25%, 
+                                                                                  48%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: 34.0deg, 
+                                                                          length: 32%, 
+                                                                          start: (8%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         parbreak() }, 
+                                                 height: 20.0pt, 
+                                                 width: 20.0pt), 
+                                             box(body: { text(body: [
+]), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         v(amount: 30%), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(length: 30%, 
+                                                                          start: (9%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: -72.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (38%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: 252.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (57%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(length: 30%, 
+                                                                          start: (57%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: -36.0deg, 
+                                                                          length: -30%, 
+                                                                          start: (88%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: 252.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (73%, 
+                                                                                  48%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: 36.0deg, 
+                                                                          length: -30%, 
+                                                                          start: (73%, 
+                                                                                  48%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: -36.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (25%, 
+                                                                                  48%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: -72.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (25%, 
+                                                                                  48%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: 34.0deg, 
+                                                                          length: 32%, 
+                                                                          start: (8%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         parbreak() }, 
+                                                 height: 20.0pt, 
+                                                 width: 20.0pt), 
+                                             box(body: { text(body: [
+]), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         v(amount: 30%), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(length: 30%, 
+                                                                          start: (9%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: -72.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (38%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: 252.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (57%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(length: 30%, 
+                                                                          start: (57%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: -36.0deg, 
+                                                                          length: -30%, 
+                                                                          start: (88%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: 252.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (73%, 
+                                                                                  48%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: 36.0deg, 
+                                                                          length: -30%, 
+                                                                          start: (73%, 
+                                                                                  48%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: -36.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (25%, 
+                                                                                  48%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: -72.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (25%, 
+                                                                                  48%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: 34.0deg, 
+                                                                          length: 32%, 
+                                                                          start: (8%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         parbreak() }, 
+                                                 height: 20.0pt, 
+                                                 width: 20.0pt), 
+                                             box(body: { text(body: [
+]), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         v(amount: 30%), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(length: 30%, 
+                                                                          start: (9%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: -72.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (38%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: 252.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (57%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(length: 30%, 
+                                                                          start: (57%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: -36.0deg, 
+                                                                          length: -30%, 
+                                                                          start: (88%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: 252.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (73%, 
+                                                                                  48%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: 36.0deg, 
+                                                                          length: -30%, 
+                                                                          start: (73%, 
+                                                                                  48%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: -36.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (25%, 
+                                                                                  48%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: -72.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (25%, 
+                                                                                  48%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: 34.0deg, 
+                                                                          length: 32%, 
+                                                                          start: (8%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         parbreak() }, 
+                                                 height: 20.0pt, 
+                                                 width: 20.0pt), 
+                                             box(body: { text(body: [
+]), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         v(amount: 30%), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(length: 30%, 
+                                                                          start: (9%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: -72.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (38%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: 252.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (57%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(length: 30%, 
+                                                                          start: (57%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: -36.0deg, 
+                                                                          length: -30%, 
+                                                                          start: (88%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: 252.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (73%, 
+                                                                                  48%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: 36.0deg, 
+                                                                          length: -30%, 
+                                                                          start: (73%, 
+                                                                                  48%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: -36.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (25%, 
+                                                                                  48%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: -72.0deg, 
+                                                                          length: 30%, 
+                                                                          start: (25%, 
+                                                                                  48%), 
+                                                                          stroke: 0.5pt)), 
+                                                         text(body: [
+], 
+                                                              spacing: 0%), 
+                                                         place(body: line(angle: 34.0deg, 
+                                                                          length: 32%, 
+                                                                          start: (8%, 
+                                                                                  2%), 
+                                                                          stroke: 0.5pt)), 
+                                                         parbreak() }, 
+                                                 height: 20.0pt, 
+                                                 width: 20.0pt)), 
+                                  column-gutter: 10.0pt, 
+                                  columns: 3)), 
+                 parbreak() })
diff --git a/test/typ/visualize/line-02.out b/test/typ/visualize/line-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/line-02.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/visualize/line-03.out b/test/typ/visualize/line-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/line-03.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/visualize/path-00.out b/test/typ/visualize/path-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/path-00.out
@@ -0,0 +1,305 @@
+--- parse tree ---
+[ Code
+    "typ/visualize/path-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/visualize/path-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/visualize/path-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/visualize/path-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 200.0 Pt))
+       , KeyValArg (Identifier "width") (Literal (Numeric 200.0 Pt))
+       ])
+, SoftBreak
+, Code
+    "typ/visualize/path-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "table"))
+       [ KeyValArg
+           (Identifier "columns")
+           (Array
+              [ Reg (Literal (Numeric 1.0 Fr))
+              , Reg (Literal (Numeric 1.0 Fr))
+              ])
+       , KeyValArg
+           (Identifier "rows")
+           (Array
+              [ Reg (Literal (Numeric 1.0 Fr))
+              , Reg (Literal (Numeric 1.0 Fr))
+              ])
+       , KeyValArg
+           (Identifier "align")
+           (Plus (Ident (Identifier "center")) (Ident (Identifier "horizon")))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "path"))
+              [ KeyValArg (Identifier "fill") (Ident (Identifier "red"))
+              , KeyValArg (Identifier "closed") (Literal (Boolean True))
+              , NormalArg
+                  (Array
+                     [ Reg
+                         (Array
+                            [ Reg (Literal (Numeric 0.0 Percent))
+                            , Reg (Literal (Numeric 0.0 Percent))
+                            ])
+                     , Reg
+                         (Array
+                            [ Reg (Literal (Numeric 4.0 Percent))
+                            , Reg (Negated (Literal (Numeric 4.0 Percent)))
+                            ])
+                     ])
+              , NormalArg
+                  (Array
+                     [ Reg
+                         (Array
+                            [ Reg (Literal (Numeric 50.0 Percent))
+                            , Reg (Literal (Numeric 50.0 Percent))
+                            ])
+                     , Reg
+                         (Array
+                            [ Reg (Literal (Numeric 4.0 Percent))
+                            , Reg (Negated (Literal (Numeric 4.0 Percent)))
+                            ])
+                     ])
+              , NormalArg
+                  (Array
+                     [ Reg
+                         (Array
+                            [ Reg (Literal (Numeric 0.0 Percent))
+                            , Reg (Literal (Numeric 50.0 Percent))
+                            ])
+                     , Reg
+                         (Array
+                            [ Reg (Literal (Numeric 4.0 Percent))
+                            , Reg (Literal (Numeric 4.0 Percent))
+                            ])
+                     ])
+              , NormalArg
+                  (Array
+                     [ Reg
+                         (Array
+                            [ Reg (Literal (Numeric 50.0 Percent))
+                            , Reg (Literal (Numeric 0.0 Percent))
+                            ])
+                     , Reg
+                         (Array
+                            [ Reg (Literal (Numeric 4.0 Percent))
+                            , Reg (Literal (Numeric 4.0 Percent))
+                            ])
+                     ])
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "path"))
+              [ KeyValArg (Identifier "fill") (Ident (Identifier "purple"))
+              , KeyValArg (Identifier "stroke") (Literal (Numeric 1.0 Pt))
+              , NormalArg
+                  (Array
+                     [ Reg (Literal (Numeric 0.0 Pt))
+                     , Reg (Literal (Numeric 0.0 Pt))
+                     ])
+              , NormalArg
+                  (Array
+                     [ Reg (Literal (Numeric 30.0 Pt))
+                     , Reg (Literal (Numeric 30.0 Pt))
+                     ])
+              , NormalArg
+                  (Array
+                     [ Reg (Literal (Numeric 0.0 Pt))
+                     , Reg (Literal (Numeric 30.0 Pt))
+                     ])
+              , NormalArg
+                  (Array
+                     [ Reg (Literal (Numeric 30.0 Pt))
+                     , Reg (Literal (Numeric 0.0 Pt))
+                     ])
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "path"))
+              [ KeyValArg (Identifier "fill") (Ident (Identifier "blue"))
+              , KeyValArg (Identifier "stroke") (Literal (Numeric 1.0 Pt))
+              , KeyValArg (Identifier "closed") (Literal (Boolean True))
+              , NormalArg
+                  (Array
+                     [ Reg
+                         (Array
+                            [ Reg (Literal (Numeric 30.0 Percent))
+                            , Reg (Literal (Numeric 0.0 Percent))
+                            ])
+                     , Reg
+                         (Array
+                            [ Reg (Literal (Numeric 35.0 Percent))
+                            , Reg (Literal (Numeric 30.0 Percent))
+                            ])
+                     , Reg
+                         (Array
+                            [ Reg (Negated (Literal (Numeric 20.0 Percent)))
+                            , Reg (Literal (Numeric 0.0 Percent))
+                            ])
+                     ])
+              , NormalArg
+                  (Array
+                     [ Reg
+                         (Array
+                            [ Reg (Literal (Numeric 30.0 Percent))
+                            , Reg (Literal (Numeric 60.0 Percent))
+                            ])
+                     , Reg
+                         (Array
+                            [ Reg (Negated (Literal (Numeric 20.0 Percent)))
+                            , Reg (Literal (Numeric 0.0 Percent))
+                            ])
+                     , Reg
+                         (Array
+                            [ Reg (Literal (Numeric 0.0 Percent))
+                            , Reg (Literal (Numeric 0.0 Percent))
+                            ])
+                     ])
+              , NormalArg
+                  (Array
+                     [ Reg
+                         (Array
+                            [ Reg (Literal (Numeric 50.0 Percent))
+                            , Reg (Literal (Numeric 30.0 Percent))
+                            ])
+                     , Reg
+                         (Array
+                            [ Reg (Literal (Numeric 60.0 Percent))
+                            , Reg (Negated (Literal (Numeric 30.0 Percent)))
+                            ])
+                     , Reg
+                         (Array
+                            [ Reg (Literal (Numeric 60.0 Percent))
+                            , Reg (Literal (Numeric 0.0 Percent))
+                            ])
+                     ])
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "path"))
+              [ KeyValArg (Identifier "stroke") (Literal (Numeric 5.0 Pt))
+              , KeyValArg (Identifier "closed") (Literal (Boolean True))
+              , NormalArg
+                  (Array
+                     [ Reg (Literal (Numeric 0.0 Pt))
+                     , Reg (Literal (Numeric 30.0 Pt))
+                     ])
+              , NormalArg
+                  (Array
+                     [ Reg (Literal (Numeric 30.0 Pt))
+                     , Reg (Literal (Numeric 30.0 Pt))
+                     ])
+              , NormalArg
+                  (Array
+                     [ Reg (Literal (Numeric 15.0 Pt))
+                     , Reg (Literal (Numeric 0.0 Pt))
+                     ])
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 table(align: Axes(center, horizon), 
+                       children: (path(closed: true, 
+                                       fill: rgb(100%,25%,21%,100%), 
+                                       vertices: (((0%, 
+                                                    0%), 
+                                                   (4%, 
+                                                    -4%)), 
+                                                  ((50%, 
+                                                    50%), 
+                                                   (4%, 
+                                                    -4%)), 
+                                                  ((0%, 
+                                                    50%), 
+                                                   (4%, 
+                                                    4%)), 
+                                                  ((50%, 
+                                                    0%), 
+                                                   (4%, 
+                                                    4%)))), 
+                                  path(fill: rgb(69%,5%,78%,100%), 
+                                       stroke: 1.0pt, 
+                                       vertices: ((0.0pt, 
+                                                   0.0pt), 
+                                                  (30.0pt, 
+                                                   30.0pt), 
+                                                  (0.0pt, 
+                                                   30.0pt), 
+                                                  (30.0pt, 
+                                                   0.0pt))), 
+                                  path(closed: true, 
+                                       fill: rgb(0%,45%,85%,100%), 
+                                       stroke: 1.0pt, 
+                                       vertices: (((30%, 
+                                                    0%), 
+                                                   (35%, 
+                                                    30%), 
+                                                   (-20%, 
+                                                    0%)), 
+                                                  ((30%, 
+                                                    60%), 
+                                                   (-20%, 
+                                                    0%), 
+                                                   (0%, 
+                                                    0%)), 
+                                                  ((50%, 
+                                                    30%), 
+                                                   (60%, 
+                                                    -30%), 
+                                                   (60%, 
+                                                    0%)))), 
+                                  path(closed: true, 
+                                       stroke: 5.0pt, 
+                                       vertices: ((0.0pt, 
+                                                   30.0pt), 
+                                                  (30.0pt, 
+                                                   30.0pt), 
+                                                  (15.0pt, 
+                                                   0.0pt)))), 
+                       columns: (1.0fr, 1.0fr), 
+                       rows: (1.0fr, 1.0fr)), 
+                 parbreak() })
diff --git a/test/typ/visualize/path-01.out b/test/typ/visualize/path-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/path-01.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/visualize/path-02.out b/test/typ/visualize/path-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/path-02.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/visualize/path-03.out b/test/typ/visualize/path-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/path-03.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/visualize/polygon-00.out b/test/typ/visualize/polygon-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/polygon-00.out
@@ -0,0 +1,349 @@
+--- parse tree ---
+[ Code
+    "typ/visualize/polygon-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/visualize/polygon-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/visualize/polygon-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/visualize/polygon-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 50.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/visualize/polygon-00.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "polygon"))
+       [ KeyValArg (Identifier "stroke") (Literal (Numeric 0.75 Pt))
+       , KeyValArg (Identifier "fill") (Ident (Identifier "blue"))
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/visualize/polygon-00.typ"
+    ( line 6 , column 2 )
+    (FuncCall (Ident (Identifier "polygon")) [])
+, SoftBreak
+, Code
+    "typ/visualize/polygon-00.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "polygon"))
+       [ NormalArg
+           (Array
+              [ Reg (Literal (Numeric 0.0 Em))
+              , Reg (Literal (Numeric 0.0 Pt))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/visualize/polygon-00.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "polygon"))
+       [ NormalArg
+           (Array
+              [ Reg (Literal (Numeric 0.0 Pt))
+              , Reg (Literal (Numeric 0.0 Pt))
+              ])
+       , NormalArg
+           (Array
+              [ Reg (Literal (Numeric 10.0 Pt))
+              , Reg (Literal (Numeric 0.0 Pt))
+              ])
+       ])
+, ParBreak
+, Code
+    "typ/visualize/polygon-00.typ"
+    ( line 10 , column 2 )
+    (FuncCall
+       (Ident (Identifier "polygon"))
+       [ NormalArg
+           (Array
+              [ Reg (Literal (Numeric 5.0 Pt))
+              , Reg (Literal (Numeric 0.0 Pt))
+              ])
+       , NormalArg
+           (Array
+              [ Reg (Literal (Numeric 0.0 Pt))
+              , Reg (Literal (Numeric 10.0 Pt))
+              ])
+       , NormalArg
+           (Array
+              [ Reg (Literal (Numeric 10.0 Pt))
+              , Reg (Literal (Numeric 10.0 Pt))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/visualize/polygon-00.typ"
+    ( line 11 , column 2 )
+    (FuncCall
+       (Ident (Identifier "polygon"))
+       [ NormalArg
+           (Array
+              [ Reg (Literal (Numeric 0.0 Pt))
+              , Reg (Literal (Numeric 0.0 Pt))
+              ])
+       , NormalArg
+           (Array
+              [ Reg (Literal (Numeric 5.0 Pt))
+              , Reg (Literal (Numeric 5.0 Pt))
+              ])
+       , NormalArg
+           (Array
+              [ Reg (Literal (Numeric 10.0 Pt))
+              , Reg (Literal (Numeric 0.0 Pt))
+              ])
+       , NormalArg
+           (Array
+              [ Reg (Literal (Numeric 15.0 Pt))
+              , Reg (Literal (Numeric 5.0 Pt))
+              ])
+       , NormalArg
+           (Array
+              [ Reg (Literal (Numeric 5.0 Pt))
+              , Reg (Literal (Numeric 10.0 Pt))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/visualize/polygon-00.typ"
+    ( line 16 , column 2 )
+    (FuncCall
+       (Ident (Identifier "polygon"))
+       [ KeyValArg (Identifier "stroke") (Literal None)
+       , NormalArg
+           (Array
+              [ Reg (Literal (Numeric 5.0 Pt))
+              , Reg (Literal (Numeric 0.0 Pt))
+              ])
+       , NormalArg
+           (Array
+              [ Reg (Literal (Numeric 0.0 Pt))
+              , Reg (Literal (Numeric 10.0 Pt))
+              ])
+       , NormalArg
+           (Array
+              [ Reg (Literal (Numeric 10.0 Pt))
+              , Reg (Literal (Numeric 10.0 Pt))
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/visualize/polygon-00.typ"
+    ( line 17 , column 2 )
+    (FuncCall
+       (Ident (Identifier "polygon"))
+       [ KeyValArg (Identifier "stroke") (Literal (Numeric 3.0 Pt))
+       , KeyValArg (Identifier "fill") (Literal None)
+       , NormalArg
+           (Array
+              [ Reg (Literal (Numeric 5.0 Pt))
+              , Reg (Literal (Numeric 0.0 Pt))
+              ])
+       , NormalArg
+           (Array
+              [ Reg (Literal (Numeric 0.0 Pt))
+              , Reg (Literal (Numeric 10.0 Pt))
+              ])
+       , NormalArg
+           (Array
+              [ Reg (Literal (Numeric 10.0 Pt))
+              , Reg (Literal (Numeric 10.0 Pt))
+              ])
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/visualize/polygon-00.typ"
+    ( line 20 , column 2 )
+    (FuncCall
+       (Ident (Identifier "polygon"))
+       [ NormalArg
+           (Array
+              [ Reg (Literal (Numeric 0.0 Pt))
+              , Reg (Literal (Numeric 0.0 Pt))
+              ])
+       , NormalArg
+           (Array
+              [ Reg (Literal (Numeric 100.0 Percent))
+              , Reg (Literal (Numeric 5.0 Pt))
+              ])
+       , NormalArg
+           (Array
+              [ Reg (Literal (Numeric 50.0 Percent))
+              , Reg (Literal (Numeric 10.0 Pt))
+              ])
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/visualize/polygon-00.typ"
+    ( line 23 , column 2 )
+    (FuncCall
+       (Ident (Identifier "polygon"))
+       [ NormalArg
+           (Array
+              [ Reg (Literal (Numeric 0.0 Pt))
+              , Reg (Literal (Numeric 5.0 Pt))
+              ])
+       , NormalArg
+           (Array
+              [ Reg (Literal (Numeric 5.0 Pt))
+              , Reg (Literal (Numeric 0.0 Pt))
+              ])
+       , NormalArg
+           (Array
+              [ Reg (Literal (Numeric 0.0 Pt))
+              , Reg (Literal (Numeric 10.0 Pt))
+              ])
+       , NormalArg
+           (Array
+              [ Reg (Literal (Numeric 5.0 Pt))
+              , Reg (Literal (Numeric 15.0 Pt))
+              ])
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/visualize/polygon-00.typ"
+    ( line 26 , column 2 )
+    (FuncCall
+       (Ident (Identifier "polygon"))
+       [ NormalArg
+           (Array
+              [ Reg (Literal (Numeric 0.0 Pt))
+              , Reg (Literal (Numeric 10.0 Pt))
+              ])
+       , NormalArg
+           (Array
+              [ Reg (Literal (Numeric 30.0 Pt))
+              , Reg (Literal (Numeric 20.0 Pt))
+              ])
+       , NormalArg
+           (Array
+              [ Reg (Literal (Numeric 0.0 Pt))
+              , Reg (Literal (Numeric 30.0 Pt))
+              ])
+       , NormalArg
+           (Array
+              [ Reg (Literal (Numeric 20.0 Pt))
+              , Reg (Literal (Numeric 0.0 Pt))
+              ])
+       , NormalArg
+           (Array
+              [ Reg (Literal (Numeric 20.0 Pt))
+              , Reg (Literal (Numeric 35.0 Pt))
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 polygon(fill: rgb(0%,45%,85%,100%), 
+                         stroke: 0.75pt, 
+                         vertices: ()), 
+                 text(body: [
+]), 
+                 polygon(fill: rgb(0%,45%,85%,100%), 
+                         stroke: 0.75pt, 
+                         vertices: ((0.0em, 0.0pt))), 
+                 text(body: [
+]), 
+                 polygon(fill: rgb(0%,45%,85%,100%), 
+                         stroke: 0.75pt, 
+                         vertices: ((0.0pt, 0.0pt), 
+                                    (10.0pt, 0.0pt))), 
+                 parbreak(), 
+                 polygon(fill: rgb(0%,45%,85%,100%), 
+                         stroke: 0.75pt, 
+                         vertices: ((5.0pt, 0.0pt), 
+                                    (0.0pt, 10.0pt), 
+                                    (10.0pt, 10.0pt))), 
+                 text(body: [
+]), 
+                 polygon(fill: rgb(0%,45%,85%,100%), 
+                         stroke: 0.75pt, 
+                         vertices: ((0.0pt, 0.0pt), 
+                                    (5.0pt, 5.0pt), 
+                                    (10.0pt, 0.0pt), 
+                                    (15.0pt, 5.0pt), 
+                                    (5.0pt, 10.0pt))), 
+                 text(body: [
+]), 
+                 polygon(fill: rgb(0%,45%,85%,100%), 
+                         stroke: none, 
+                         vertices: ((5.0pt, 0.0pt), 
+                                    (0.0pt, 10.0pt), 
+                                    (10.0pt, 10.0pt))), 
+                 text(body: [
+]), 
+                 polygon(fill: none, 
+                         stroke: 3.0pt, 
+                         vertices: ((5.0pt, 0.0pt), 
+                                    (0.0pt, 10.0pt), 
+                                    (10.0pt, 10.0pt))), 
+                 parbreak(), 
+                 polygon(fill: rgb(0%,45%,85%,100%), 
+                         stroke: 0.75pt, 
+                         vertices: ((0.0pt, 0.0pt), 
+                                    (100%, 5.0pt), 
+                                    (50%, 10.0pt))), 
+                 parbreak(), 
+                 polygon(fill: rgb(0%,45%,85%,100%), 
+                         stroke: 0.75pt, 
+                         vertices: ((0.0pt, 5.0pt), 
+                                    (5.0pt, 0.0pt), 
+                                    (0.0pt, 10.0pt), 
+                                    (5.0pt, 15.0pt))), 
+                 parbreak(), 
+                 polygon(fill: rgb(0%,45%,85%,100%), 
+                         stroke: 0.75pt, 
+                         vertices: ((0.0pt, 10.0pt), 
+                                    (30.0pt, 20.0pt), 
+                                    (0.0pt, 30.0pt), 
+                                    (20.0pt, 0.0pt), 
+                                    (20.0pt, 35.0pt))), 
+                 parbreak() })
diff --git a/test/typ/visualize/polygon-01.out b/test/typ/visualize/polygon-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/polygon-01.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/visualize/shape-aspect-00.out b/test/typ/visualize/shape-aspect-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/shape-aspect-00.out
@@ -0,0 +1,130 @@
+--- parse tree ---
+[ Code
+    "typ/visualize/shape-aspect-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/visualize/shape-aspect-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/visualize/shape-aspect-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Comment
+, Code
+    "typ/visualize/shape-aspect-00.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 120.0 Pt))
+       , KeyValArg (Identifier "height") (Literal (Numeric 70.0 Pt))
+       ])
+, SoftBreak
+, Code
+    "typ/visualize/shape-aspect-00.typ"
+    ( line 5 , column 2 )
+    (Set
+       (Ident (Identifier "align"))
+       [ NormalArg (Ident (Identifier "bottom")) ])
+, SoftBreak
+, Code
+    "typ/visualize/shape-aspect-00.typ"
+    ( line 6 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "centered")))
+       (FuncCall
+          (FieldAccess
+             (Ident (Identifier "with")) (Ident (Identifier "align")))
+          [ NormalArg
+              (Plus (Ident (Identifier "center")) (Ident (Identifier "horizon")))
+          ]))
+, SoftBreak
+, Code
+    "typ/visualize/shape-aspect-00.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "stack"))
+       [ KeyValArg (Identifier "dir") (Ident (Identifier "ltr"))
+       , KeyValArg (Identifier "spacing") (Literal (Numeric 1.0 Fr))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "square"))
+              [ KeyValArg (Identifier "width") (Literal (Numeric 50.0 Percent))
+              , NormalArg
+                  (FuncCall
+                     (Ident (Identifier "centered")) [ BlockArg [ Text "A" ] ])
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "square"))
+              [ KeyValArg (Identifier "height") (Literal (Numeric 50.0 Percent))
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "stack"))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "square"))
+                     [ KeyValArg (Identifier "size") (Literal (Numeric 10.0 Pt)) ])
+              , NormalArg
+                  (FuncCall
+                     (Ident (Identifier "square"))
+                     [ KeyValArg (Identifier "size") (Literal (Numeric 20.0 Pt))
+                     , NormalArg
+                         (FuncCall
+                            (Ident (Identifier "centered")) [ BlockArg [ Text "B" ] ])
+                     ])
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 stack(children: (square(body: align(alignment: bottom, 
+                                                     body: text(body: [A])), 
+                                         width: 50%), 
+                                  square(height: 50%), 
+                                  stack(children: (square(size: 10.0pt), 
+                                                   square(body: align(alignment: bottom, 
+                                                                      body: text(body: [B])), 
+                                                          size: 20.0pt)))), 
+                       dir: ltr, 
+                       spacing: 1.0fr), 
+                 parbreak() })
diff --git a/test/typ/visualize/shape-aspect-01.out b/test/typ/visualize/shape-aspect-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/shape-aspect-01.out
@@ -0,0 +1,122 @@
+--- parse tree ---
+[ Code
+    "typ/visualize/shape-aspect-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/visualize/shape-aspect-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/visualize/shape-aspect-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/visualize/shape-aspect-01.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ NormalArg (Literal (Numeric 8.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/visualize/shape-aspect-01.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "square"))
+              [ KeyValArg (Identifier "inset") (Literal (Numeric 4.0 Pt))
+              , BlockArg
+                  [ SoftBreak
+                  , Text "Hey"
+                  , Space
+                  , Text "there,"
+                  , Space
+                  , Code
+                      "typ/visualize/shape-aspect-01.typ"
+                      ( line 5 , column 15 )
+                      (FuncCall
+                         (Ident (Identifier "align"))
+                         [ NormalArg
+                             (Plus (Ident (Identifier "center")) (Ident (Identifier "bottom")))
+                         , NormalArg
+                             (FuncCall
+                                (Ident (Identifier "rotate"))
+                                [ NormalArg (Literal (Numeric 180.0 Deg))
+                                , NormalArg (Block (Content [ Text "you!" ]))
+                                ])
+                         ])
+                  , ParBreak
+                  ]
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/visualize/shape-aspect-01.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "circle"))
+              [ NormalArg
+                  (FuncCall
+                     (Ident (Identifier "align"))
+                     [ NormalArg
+                         (Plus (Ident (Identifier "center")) (Ident (Identifier "horizon")))
+                     , NormalArg (Block (Content [ Text "Hey" , Text "." ]))
+                     ])
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+], size: 8.0pt), 
+                 box(body: square(body: { text(body: [
+Hey there, ], 
+                                               size: 8.0pt), 
+                                          align(alignment: Axes(center, bottom), 
+                                                body: rotate(angle: 180.0deg, 
+                                                             body: text(body: [you!], 
+                                                                        size: 8.0pt))), 
+                                          parbreak() }, 
+                                  inset: 4.0pt)), 
+                 text(body: [
+], size: 8.0pt), 
+                 box(body: circle(body: align(alignment: Axes(center, horizon), 
+                                              body: text(body: [Hey.], 
+                                                         size: 8.0pt)))), 
+                 parbreak() })
diff --git a/test/typ/visualize/shape-aspect-02.out b/test/typ/visualize/shape-aspect-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/shape-aspect-02.out
@@ -0,0 +1,74 @@
+--- parse tree ---
+[ Code
+    "typ/visualize/shape-aspect-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/visualize/shape-aspect-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/visualize/shape-aspect-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/visualize/shape-aspect-02.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "stack"))
+       [ KeyValArg (Identifier "dir") (Ident (Identifier "ltr"))
+       , KeyValArg (Identifier "spacing") (Literal (Numeric 2.0 Pt))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "square"))
+              [ KeyValArg (Identifier "width") (Literal (Numeric 20.0 Pt))
+              , KeyValArg (Identifier "height") (Literal (Numeric 40.0 Pt))
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "circle"))
+              [ KeyValArg (Identifier "width") (Literal (Numeric 20.0 Percent))
+              , KeyValArg (Identifier "height") (Literal (Numeric 100.0 Pt))
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 stack(children: (square(height: 40.0pt, 
+                                         width: 20.0pt), 
+                                  circle(height: 100.0pt, 
+                                         width: 20%)), 
+                       dir: ltr, 
+                       spacing: 2.0pt), 
+                 parbreak() })
diff --git a/test/typ/visualize/shape-aspect-03.out b/test/typ/visualize/shape-aspect-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/shape-aspect-03.out
@@ -0,0 +1,78 @@
+--- parse tree ---
+[ Code
+    "typ/visualize/shape-aspect-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/visualize/shape-aspect-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/visualize/shape-aspect-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/visualize/shape-aspect-03.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 20.0 Pt))
+       , KeyValArg (Identifier "height") (Literal (Numeric 10.0 Pt))
+       , KeyValArg (Identifier "margin") (Literal (Numeric 0.0 Pt))
+       ])
+, SoftBreak
+, Code
+    "typ/visualize/shape-aspect-03.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "stack"))
+       [ KeyValArg (Identifier "dir") (Ident (Identifier "ltr"))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "square"))
+              [ KeyValArg (Identifier "fill") (Ident (Identifier "red")) ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "square"))
+              [ KeyValArg (Identifier "fill") (Ident (Identifier "green")) ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 stack(children: (square(fill: rgb(100%,25%,21%,100%)), 
+                                  square(fill: rgb(18%,80%,25%,100%))), 
+                       dir: ltr), 
+                 parbreak() })
diff --git a/test/typ/visualize/shape-aspect-04.out b/test/typ/visualize/shape-aspect-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/shape-aspect-04.out
@@ -0,0 +1,86 @@
+--- parse tree ---
+[ Code
+    "typ/visualize/shape-aspect-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/visualize/shape-aspect-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/visualize/shape-aspect-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/visualize/shape-aspect-04.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 120.0 Pt))
+       , KeyValArg (Identifier "height") (Literal (Numeric 40.0 Pt))
+       ])
+, SoftBreak
+, Code
+    "typ/visualize/shape-aspect-04.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "stack"))
+       [ KeyValArg (Identifier "dir") (Ident (Identifier "ltr"))
+       , KeyValArg (Identifier "spacing") (Literal (Numeric 2.0 Pt))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "circle"))
+              [ KeyValArg (Identifier "radius") (Literal (Numeric 5.0 Pt)) ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "circle"))
+              [ KeyValArg (Identifier "width") (Literal (Numeric 10.0 Percent))
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "circle"))
+              [ KeyValArg (Identifier "height") (Literal (Numeric 50.0 Percent))
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 stack(children: (circle(radius: 5.0pt), 
+                                  circle(width: 10%), 
+                                  circle(height: 50%)), 
+                       dir: ltr, 
+                       spacing: 2.0pt), 
+                 parbreak() })
diff --git a/test/typ/visualize/shape-aspect-05.out b/test/typ/visualize/shape-aspect-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/shape-aspect-05.out
@@ -0,0 +1,81 @@
+--- parse tree ---
+[ Code
+    "typ/visualize/shape-aspect-05.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/visualize/shape-aspect-05.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/visualize/shape-aspect-05.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/visualize/shape-aspect-05.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 40.0 Pt))
+       , KeyValArg (Identifier "height") (Literal (Numeric 25.0 Pt))
+       , KeyValArg (Identifier "margin") (Literal (Numeric 5.0 Pt))
+       ])
+, SoftBreak
+, Code
+    "typ/visualize/shape-aspect-05.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "square"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
+       ])
+, SoftBreak
+, Code
+    "typ/visualize/shape-aspect-05.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "square"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
+       , BlockArg [ Text "Hello" , Space , Text "there" ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 square(width: 100%), 
+                 text(body: [
+]), 
+                 square(body: text(body: [Hello there]), 
+                        width: 100%), 
+                 parbreak() })
diff --git a/test/typ/visualize/shape-aspect-06.out b/test/typ/visualize/shape-aspect-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/shape-aspect-06.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/visualize/shape-circle-00.out b/test/typ/visualize/shape-circle-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/shape-circle-00.out
@@ -0,0 +1,68 @@
+--- parse tree ---
+[ Code
+    "typ/visualize/shape-circle-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/visualize/shape-circle-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/visualize/shape-circle-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/visualize/shape-circle-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ NormalArg (FuncCall (Ident (Identifier "circle")) []) ])
+, SoftBreak
+, Code
+    "typ/visualize/shape-circle-00.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "circle")) [ BlockArg [ Text "Hey" ] ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 box(body: circle()), 
+                 text(body: [
+]), 
+                 box(body: circle(body: text(body: [Hey]))), 
+                 parbreak() })
diff --git a/test/typ/visualize/shape-circle-01.out b/test/typ/visualize/shape-circle-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/shape-circle-01.out
@@ -0,0 +1,249 @@
+--- parse tree ---
+[ Code
+    "typ/visualize/shape-circle-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/visualize/shape-circle-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/visualize/shape-circle-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/visualize/shape-circle-01.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "circle"))
+       [ KeyValArg (Identifier "inset") (Literal (Numeric 0.0 Pt)) ])
+, ParBreak
+, Text "Auto"
+, Text "-"
+, Text "sized"
+, Space
+, Text "circle"
+, Text "."
+, SoftBreak
+, Code
+    "typ/visualize/shape-circle-01.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "circle"))
+       [ KeyValArg
+           (Identifier "fill")
+           (FuncCall
+              (Ident (Identifier "rgb"))
+              [ NormalArg (Literal (String "eb5278")) ])
+       , KeyValArg
+           (Identifier "stroke")
+           (Plus (Literal (Numeric 2.0 Pt)) (Ident (Identifier "black")))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "align"))
+              [ NormalArg
+                  (Plus (Ident (Identifier "center")) (Ident (Identifier "horizon")))
+              , BlockArg [ Text "But," , Space , Text "soft!" ]
+              ])
+       ])
+, ParBreak
+, Text "Center"
+, Text "-"
+, Text "aligned"
+, Space
+, Text "rect"
+, Space
+, Text "in"
+, Space
+, Text "auto"
+, Text "-"
+, Text "sized"
+, Space
+, Text "circle"
+, Text "."
+, SoftBreak
+, Code
+    "typ/visualize/shape-circle-01.typ"
+    ( line 11 , column 2 )
+    (FuncCall
+       (Ident (Identifier "circle"))
+       [ KeyValArg (Identifier "fill") (Ident (Identifier "red"))
+       , KeyValArg (Identifier "stroke") (Ident (Identifier "green"))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "align"))
+              [ NormalArg
+                  (Plus (Ident (Identifier "center")) (Ident (Identifier "horizon")))
+              , NormalArg
+                  (FuncCall
+                     (Ident (Identifier "rect"))
+                     [ KeyValArg (Identifier "fill") (Ident (Identifier "green"))
+                     , KeyValArg (Identifier "inset") (Literal (Numeric 5.0 Pt))
+                     , BlockArg [ Text "But," , Space , Text "soft!" ]
+                     ])
+              ])
+       ])
+, ParBreak
+, Text "Rect"
+, Space
+, Text "in"
+, Space
+, Text "auto"
+, Text "-"
+, Text "sized"
+, Space
+, Text "circle"
+, Text "."
+, SoftBreak
+, Code
+    "typ/visualize/shape-circle-01.typ"
+    ( line 18 , column 2 )
+    (FuncCall
+       (Ident (Identifier "circle"))
+       [ KeyValArg (Identifier "fill") (Ident (Identifier "red"))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg (Identifier "fill") (Ident (Identifier "green"))
+              , KeyValArg (Identifier "stroke") (Ident (Identifier "white"))
+              , KeyValArg (Identifier "inset") (Literal (Numeric 4.0 Pt))
+              , BlockArg
+                  [ SoftBreak
+                  , Code
+                      "typ/visualize/shape-circle-01.typ"
+                      ( line 20 , column 6 )
+                      (Set
+                         (Ident (Identifier "text"))
+                         [ NormalArg (Literal (Numeric 8.0 Pt)) ])
+                  , SoftBreak
+                  , Text "But,"
+                  , Space
+                  , Text "soft!"
+                  , Space
+                  , Text "what"
+                  , Space
+                  , Text "light"
+                  , Space
+                  , Text "through"
+                  , Space
+                  , Text "yonder"
+                  , Space
+                  , Text "window"
+                  , Space
+                  , Text "breaks?"
+                  , ParBreak
+                  ]
+              ])
+       ])
+, ParBreak
+, Text "Expanded"
+, Space
+, Text "by"
+, Space
+, Text "height"
+, Text "."
+, SoftBreak
+, Code
+    "typ/visualize/shape-circle-01.typ"
+    ( line 26 , column 2 )
+    (FuncCall
+       (Ident (Identifier "circle"))
+       [ KeyValArg (Identifier "stroke") (Ident (Identifier "black"))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "align"))
+              [ NormalArg (Ident (Identifier "center"))
+              , BlockArg
+                  [ Text "A"
+                  , Space
+                  , HardBreak
+                  , Text "B"
+                  , Space
+                  , HardBreak
+                  , Text "C"
+                  ]
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [Auto-sized circle.
+]), 
+                 circle(body: align(alignment: Axes(center, horizon), 
+                                    body: text(body: [But, soft!])), 
+                        fill: rgb(92%,32%,47%,100%), 
+                        inset: 0.0pt, 
+                        stroke: (thickness: 2.0pt,
+                                 color: rgb(0%,0%,0%,100%))), 
+                 parbreak(), 
+                 text(body: [Center-aligned rect in auto-sized circle.
+]), 
+                 circle(body: align(alignment: Axes(center, horizon), 
+                                    body: rect(body: text(body: [But, soft!]), 
+                                               fill: rgb(18%,80%,25%,100%), 
+                                               inset: 5.0pt)), 
+                        fill: rgb(100%,25%,21%,100%), 
+                        inset: 0.0pt, 
+                        stroke: rgb(18%,80%,25%,100%)), 
+                 parbreak(), 
+                 text(body: [Rect in auto-sized circle.
+]), 
+                 circle(body: rect(body: { text(body: [
+]), 
+                                           text(body: [
+But, soft! what light through yonder window breaks?], 
+                                                size: 8.0pt), 
+                                           parbreak() }, 
+                                   fill: rgb(18%,80%,25%,100%), 
+                                   inset: 4.0pt, 
+                                   stroke: rgb(100%,100%,100%,100%)), 
+                        fill: rgb(100%,25%,21%,100%), 
+                        inset: 0.0pt), 
+                 parbreak(), 
+                 text(body: [Expanded by height.
+], 
+                      size: 8.0pt), 
+                 circle(body: align(alignment: center, 
+                                    body: { text(body: [A ], 
+                                                 size: 8.0pt), 
+                                            linebreak(), 
+                                            text(body: [B ], 
+                                                 size: 8.0pt), 
+                                            linebreak(), 
+                                            text(body: [C], 
+                                                 size: 8.0pt) }), 
+                        inset: 0.0pt, 
+                        stroke: rgb(0%,0%,0%,100%)), 
+                 parbreak() })
diff --git a/test/typ/visualize/shape-circle-02.out b/test/typ/visualize/shape-circle-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/shape-circle-02.out
@@ -0,0 +1,65 @@
+--- parse tree ---
+[ Code
+    "typ/visualize/shape-circle-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/visualize/shape-circle-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/visualize/shape-circle-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/visualize/shape-circle-02.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "rect"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 40.0 Pt))
+       , KeyValArg (Identifier "height") (Literal (Numeric 30.0 Pt))
+       , KeyValArg (Identifier "fill") (Ident (Identifier "red"))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "circle"))
+              [ KeyValArg (Identifier "fill") (Ident (Identifier "green")) ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 rect(body: circle(fill: rgb(18%,80%,25%,100%)), 
+                      fill: rgb(100%,25%,21%,100%), 
+                      height: 30.0pt, 
+                      width: 40.0pt), 
+                 parbreak() })
diff --git a/test/typ/visualize/shape-circle-03.out b/test/typ/visualize/shape-circle-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/shape-circle-03.out
@@ -0,0 +1,143 @@
+--- parse tree ---
+[ Code
+    "typ/visualize/shape-circle-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/visualize/shape-circle-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/visualize/shape-circle-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/visualize/shape-circle-03.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "fill") (Ident (Identifier "white")) ])
+, SoftBreak
+, Code
+    "typ/visualize/shape-circle-03.typ"
+    ( line 4 , column 2 )
+    (Show
+       Nothing
+       (FuncCall
+          (FieldAccess
+             (Ident (Identifier "with")) (Ident (Identifier "rect")))
+          [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Pt))
+          , KeyValArg (Identifier "height") (Literal (Numeric 50.0 Pt))
+          , KeyValArg (Identifier "inset") (Literal (Numeric 0.0 Pt))
+          , KeyValArg
+              (Identifier "fill")
+              (FuncCall
+                 (Ident (Identifier "rgb")) [ NormalArg (Literal (String "aaa")) ])
+          ]))
+, SoftBreak
+, Code
+    "typ/visualize/shape-circle-03.typ"
+    ( line 5 , column 2 )
+    (Set
+       (Ident (Identifier "align"))
+       [ NormalArg
+           (Plus (Ident (Identifier "center")) (Ident (Identifier "horizon")))
+       ])
+, SoftBreak
+, Code
+    "typ/visualize/shape-circle-03.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "stack"))
+       [ KeyValArg (Identifier "dir") (Ident (Identifier "ltr"))
+       , KeyValArg (Identifier "spacing") (Literal (Numeric 1.0 Fr))
+       , NormalArg (Literal (Numeric 1.0 Fr))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "circle"))
+              [ KeyValArg (Identifier "radius") (Literal (Numeric 10.0 Pt))
+              , KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
+              , NormalArg (Block (Content [ Text "A" ]))
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "circle"))
+              [ KeyValArg (Identifier "height") (Literal (Numeric 60.0 Percent))
+              , KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
+              , NormalArg (Block (Content [ Text "B" ]))
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "circle"))
+              [ KeyValArg
+                  (Identifier "width")
+                  (Plus (Literal (Numeric 20.0 Percent)) (Literal (Numeric 20.0 Pt)))
+              , KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
+              , NormalArg (Block (Content [ Text "C" ]))
+              ])
+       , NormalArg (Literal (Numeric 1.0 Fr))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+], 
+                      fill: rgb(100%,100%,100%,100%)), 
+                 rect(body: { text(body: [
+], 
+                                   fill: rgb(100%,100%,100%,100%)), 
+                              text(body: [
+], 
+                                   fill: rgb(100%,100%,100%,100%)), 
+                              stack(children: (1.0fr, 
+                                               circle(body: text(body: [A], 
+                                                                 fill: rgb(100%,100%,100%,100%)), 
+                                                      fill: rgb(13%,61%,67%,100%), 
+                                                      radius: 10.0pt), 
+                                               circle(body: text(body: [B], 
+                                                                 fill: rgb(100%,100%,100%,100%)), 
+                                                      fill: rgb(13%,61%,67%,100%), 
+                                                      height: 60%), 
+                                               circle(body: text(body: [C], 
+                                                                 fill: rgb(100%,100%,100%,100%)), 
+                                                      fill: rgb(13%,61%,67%,100%), 
+                                                      width: 20.0pt + 20%), 
+                                               1.0fr), 
+                                    dir: ltr, 
+                                    spacing: 1.0fr), 
+                              parbreak() }, 
+                      fill: rgb(3%,3%,3%,100%), 
+                      height: 50.0pt, 
+                      inset: 0.0pt, 
+                      width: 100.0pt) })
diff --git a/test/typ/visualize/shape-circle-04.out b/test/typ/visualize/shape-circle-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/shape-circle-04.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/visualize/shape-ellipse-00.out b/test/typ/visualize/shape-ellipse-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/shape-ellipse-00.out
@@ -0,0 +1,53 @@
+--- parse tree ---
+[ Code
+    "typ/visualize/shape-ellipse-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/visualize/shape-ellipse-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/visualize/shape-ellipse-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/visualize/shape-ellipse-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall (Ident (Identifier "ellipse")) [])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 ellipse(), 
+                 parbreak() })
diff --git a/test/typ/visualize/shape-ellipse-01.out b/test/typ/visualize/shape-ellipse-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/shape-ellipse-01.out
@@ -0,0 +1,235 @@
+--- parse tree ---
+[ Code
+    "typ/visualize/shape-ellipse-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/visualize/shape-ellipse-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/visualize/shape-ellipse-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/visualize/shape-ellipse-01.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "rect"))
+       [ KeyValArg (Identifier "inset") (Literal (Numeric 0.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/visualize/shape-ellipse-01.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "ellipse"))
+       [ KeyValArg (Identifier "inset") (Literal (Numeric 0.0 Pt)) ])
+, ParBreak
+, Text "Rect"
+, Space
+, Text "in"
+, Space
+, Text "ellipse"
+, Space
+, Text "in"
+, Space
+, Text "fixed"
+, Space
+, Text "rect"
+, Text "."
+, SoftBreak
+, Code
+    "typ/visualize/shape-ellipse-01.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "rect"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 3.0 Cm))
+       , KeyValArg (Identifier "height") (Literal (Numeric 2.0 Cm))
+       , KeyValArg
+           (Identifier "fill")
+           (FuncCall
+              (Ident (Identifier "rgb"))
+              [ NormalArg (Literal (String "2a631a")) ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "ellipse"))
+              [ KeyValArg (Identifier "fill") (Ident (Identifier "red"))
+              , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
+              , KeyValArg (Identifier "height") (Literal (Numeric 100.0 Percent))
+              , NormalArg
+                  (FuncCall
+                     (Ident (Identifier "rect"))
+                     [ KeyValArg (Identifier "fill") (Ident (Identifier "green"))
+                     , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
+                     , KeyValArg (Identifier "height") (Literal (Numeric 100.0 Percent))
+                     , NormalArg
+                         (FuncCall
+                            (Ident (Identifier "align"))
+                            [ NormalArg
+                                (Plus (Ident (Identifier "center")) (Ident (Identifier "horizon")))
+                            , BlockArg
+                                [ SoftBreak
+                                , Text "Stuff"
+                                , Space
+                                , Text "inside"
+                                , Space
+                                , Text "an"
+                                , Space
+                                , Text "ellipse!"
+                                , ParBreak
+                                ]
+                            ])
+                     ])
+              ])
+       ])
+, ParBreak
+, Text "Auto"
+, Text "-"
+, Text "sized"
+, Space
+, Text "ellipse"
+, Text "."
+, SoftBreak
+, Code
+    "typ/visualize/shape-ellipse-01.typ"
+    ( line 17 , column 2 )
+    (FuncCall
+       (Ident (Identifier "ellipse"))
+       [ KeyValArg (Identifier "fill") (Ident (Identifier "green"))
+       , KeyValArg
+           (Identifier "stroke")
+           (Plus (Literal (Numeric 3.0 Pt)) (Ident (Identifier "red")))
+       , KeyValArg (Identifier "inset") (Literal (Numeric 3.0 Pt))
+       , BlockArg
+           [ SoftBreak
+           , Code
+               "typ/visualize/shape-ellipse-01.typ"
+               ( line 18 , column 4 )
+               (Set
+                  (Ident (Identifier "text"))
+                  [ NormalArg (Literal (Numeric 8.0 Pt)) ])
+           , SoftBreak
+           , Text "But,"
+           , Space
+           , Text "soft!"
+           , Space
+           , Text "what"
+           , Space
+           , Text "light"
+           , Space
+           , Text "through"
+           , Space
+           , Text "yonder"
+           , Space
+           , Text "window"
+           , Space
+           , Text "breaks?"
+           , ParBreak
+           ]
+       ])
+, ParBreak
+, Text "An"
+, Space
+, Text "inline"
+, SoftBreak
+, Code
+    "typ/visualize/shape-ellipse-01.typ"
+    ( line 24 , column 2 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "ellipse"))
+              [ KeyValArg (Identifier "width") (Literal (Numeric 8.0 Pt))
+              , KeyValArg (Identifier "height") (Literal (Numeric 6.0 Pt))
+              , KeyValArg
+                  (Identifier "outset")
+                  (Dict
+                     [ Reg ( Ident (Identifier "top") , Literal (Numeric 3.0 Pt) )
+                     , Reg ( Ident (Identifier "rest") , Literal (Numeric 5.5 Pt) )
+                     ])
+              ])
+       ])
+, SoftBreak
+, Text "ellipse"
+, Text "."
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [Rect in ellipse in fixed rect.
+]), 
+                 rect(body: ellipse(body: rect(body: align(alignment: Axes(center, horizon), 
+                                                           body: { text(body: [
+Stuff inside an ellipse!]), 
+                                                                   parbreak() }), 
+                                               fill: rgb(18%,80%,25%,100%), 
+                                               height: 100%, 
+                                               inset: 0.0pt, 
+                                               width: 100%), 
+                                    fill: rgb(100%,25%,21%,100%), 
+                                    height: 100%, 
+                                    inset: 0.0pt, 
+                                    width: 100%), 
+                      fill: rgb(16%,38%,10%,100%), 
+                      height: 2.0cm, 
+                      inset: 0.0pt, 
+                      width: 3.0cm), 
+                 parbreak(), 
+                 text(body: [Auto-sized ellipse.
+]), 
+                 ellipse(body: { text(body: [
+]), 
+                                 text(body: [
+But, soft! what light through yonder window breaks?], 
+                                      size: 8.0pt), 
+                                 parbreak() }, 
+                         fill: rgb(18%,80%,25%,100%), 
+                         inset: 3.0pt, 
+                         stroke: (thickness: 3.0pt,
+                                  color: rgb(100%,25%,21%,100%))), 
+                 parbreak(), 
+                 text(body: [An inline
+], 
+                      size: 8.0pt), 
+                 box(body: ellipse(height: 6.0pt, 
+                                   inset: 0.0pt, 
+                                   outset: (top: 3.0pt,
+                                            rest: 5.5pt), 
+                                   width: 8.0pt)), 
+                 text(body: [
+ellipse.], 
+                      size: 8.0pt), 
+                 parbreak() })
diff --git a/test/typ/visualize/shape-fill-stroke-00.out b/test/typ/visualize/shape-fill-stroke-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/shape-fill-stroke-00.out
@@ -0,0 +1,276 @@
+--- parse tree ---
+[ Code
+    "typ/visualize/shape-fill-stroke-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/visualize/shape-fill-stroke-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/visualize/shape-fill-stroke-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/visualize/shape-fill-stroke-00.typ"
+    ( line 2 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "variant")))
+       (FuncCall
+          (FieldAccess
+             (Ident (Identifier "with")) (Ident (Identifier "rect")))
+          [ KeyValArg (Identifier "width") (Literal (Numeric 20.0 Pt))
+          , KeyValArg (Identifier "height") (Literal (Numeric 10.0 Pt))
+          ]))
+, SoftBreak
+, Code
+    "typ/visualize/shape-fill-stroke-00.typ"
+    ( line 3 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "items")))
+       (For
+          (DestructuringBind
+             [ Simple (Just (Identifier "i"))
+             , Simple (Just (Identifier "item"))
+             ])
+          (FuncCall
+             (FieldAccess
+                (Ident (Identifier "enumerate"))
+                (Array
+                   [ Reg
+                       (FuncCall
+                          (Ident (Identifier "variant"))
+                          [ KeyValArg (Identifier "stroke") (Literal None) ])
+                   , Reg (FuncCall (Ident (Identifier "variant")) [])
+                   , Reg
+                       (FuncCall
+                          (Ident (Identifier "variant"))
+                          [ KeyValArg (Identifier "fill") (Literal None) ])
+                   , Reg
+                       (FuncCall
+                          (Ident (Identifier "variant"))
+                          [ KeyValArg (Identifier "stroke") (Literal (Numeric 2.0 Pt)) ])
+                   , Reg
+                       (FuncCall
+                          (Ident (Identifier "variant"))
+                          [ KeyValArg (Identifier "stroke") (Ident (Identifier "eastern")) ])
+                   , Reg
+                       (FuncCall
+                          (Ident (Identifier "variant"))
+                          [ KeyValArg
+                              (Identifier "stroke")
+                              (Plus (Ident (Identifier "eastern")) (Literal (Numeric 2.0 Pt)))
+                          ])
+                   , Reg
+                       (FuncCall
+                          (Ident (Identifier "variant"))
+                          [ KeyValArg (Identifier "fill") (Ident (Identifier "eastern")) ])
+                   , Reg
+                       (FuncCall
+                          (Ident (Identifier "variant"))
+                          [ KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
+                          , KeyValArg (Identifier "stroke") (Literal None)
+                          ])
+                   , Reg
+                       (FuncCall
+                          (Ident (Identifier "variant"))
+                          [ KeyValArg (Identifier "fill") (Ident (Identifier "red"))
+                          , KeyValArg (Identifier "stroke") (Literal None)
+                          ])
+                   , Reg
+                       (FuncCall
+                          (Ident (Identifier "variant"))
+                          [ KeyValArg (Identifier "fill") (Ident (Identifier "red"))
+                          , KeyValArg (Identifier "stroke") (Ident (Identifier "green"))
+                          ])
+                   , Reg
+                       (FuncCall
+                          (Ident (Identifier "variant"))
+                          [ KeyValArg (Identifier "fill") (Ident (Identifier "red"))
+                          , KeyValArg
+                              (Identifier "stroke")
+                              (Plus (Ident (Identifier "black")) (Literal (Numeric 2.0 Pt)))
+                          ])
+                   , Reg
+                       (FuncCall
+                          (Ident (Identifier "variant"))
+                          [ KeyValArg (Identifier "fill") (Ident (Identifier "red"))
+                          , KeyValArg
+                              (Identifier "stroke")
+                              (Plus (Ident (Identifier "green")) (Literal (Numeric 2.0 Pt)))
+                          ])
+                   ]))
+             [])
+          (Block
+             (CodeBlock
+                [ Array
+                    [ Reg
+                        (FuncCall
+                           (Ident (Identifier "align"))
+                           [ NormalArg (Ident (Identifier "horizon"))
+                           , BlockArg
+                               [ Code
+                                   "typ/visualize/shape-fill-stroke-00.typ"
+                                   ( line 17 , column 20 )
+                                   (Plus (Ident (Identifier "i")) (Literal (Int 1)))
+                               , Text "."
+                               ]
+                           ])
+                    , Reg (Ident (Identifier "item"))
+                    , Reg (Block (Content []))
+                    ]
+                ]))))
+, ParBreak
+, Code
+    "typ/visualize/shape-fill-stroke-00.typ"
+    ( line 20 , column 2 )
+    (FuncCall
+       (Ident (Identifier "grid"))
+       [ KeyValArg
+           (Identifier "columns")
+           (Array
+              [ Reg (Literal Auto)
+              , Reg (Literal Auto)
+              , Reg (Literal (Numeric 1.0 Fr))
+              , Reg (Literal Auto)
+              , Reg (Literal Auto)
+              , Reg (Literal (Numeric 0.0 Fr))
+              ])
+       , KeyValArg (Identifier "gutter") (Literal (Numeric 5.0 Pt))
+       , SpreadArg (Ident (Identifier "items"))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 parbreak(), 
+                 grid(children: (align(alignment: horizon, 
+                                       body: { text(body: [1]), 
+                                               text(body: [.]) }), 
+                                 rect(height: 10.0pt, 
+                                      stroke: none, 
+                                      width: 20.0pt), 
+                                 {  }, 
+                                 align(alignment: horizon, 
+                                       body: { text(body: [2]), 
+                                               text(body: [.]) }), 
+                                 rect(height: 10.0pt, 
+                                      width: 20.0pt), 
+                                 {  }, 
+                                 align(alignment: horizon, 
+                                       body: { text(body: [3]), 
+                                               text(body: [.]) }), 
+                                 rect(fill: none, 
+                                      height: 10.0pt, 
+                                      width: 20.0pt), 
+                                 {  }, 
+                                 align(alignment: horizon, 
+                                       body: { text(body: [4]), 
+                                               text(body: [.]) }), 
+                                 rect(height: 10.0pt, 
+                                      stroke: 2.0pt, 
+                                      width: 20.0pt), 
+                                 {  }, 
+                                 align(alignment: horizon, 
+                                       body: { text(body: [5]), 
+                                               text(body: [.]) }), 
+                                 rect(height: 10.0pt, 
+                                      stroke: rgb(13%,61%,67%,100%), 
+                                      width: 20.0pt), 
+                                 {  }, 
+                                 align(alignment: horizon, 
+                                       body: { text(body: [6]), 
+                                               text(body: [.]) }), 
+                                 rect(height: 10.0pt, 
+                                      stroke: (thickness: 2.0pt,
+                                               color: rgb(13%,61%,67%,100%)), 
+                                      width: 20.0pt), 
+                                 {  }, 
+                                 align(alignment: horizon, 
+                                       body: { text(body: [7]), 
+                                               text(body: [.]) }), 
+                                 rect(fill: rgb(13%,61%,67%,100%), 
+                                      height: 10.0pt, 
+                                      width: 20.0pt), 
+                                 {  }, 
+                                 align(alignment: horizon, 
+                                       body: { text(body: [8]), 
+                                               text(body: [.]) }), 
+                                 rect(fill: rgb(13%,61%,67%,100%), 
+                                      height: 10.0pt, 
+                                      stroke: none, 
+                                      width: 20.0pt), 
+                                 {  }, 
+                                 align(alignment: horizon, 
+                                       body: { text(body: [9]), 
+                                               text(body: [.]) }), 
+                                 rect(fill: rgb(100%,25%,21%,100%), 
+                                      height: 10.0pt, 
+                                      stroke: none, 
+                                      width: 20.0pt), 
+                                 {  }, 
+                                 align(alignment: horizon, 
+                                       body: { text(body: [10]), 
+                                               text(body: [.]) }), 
+                                 rect(fill: rgb(100%,25%,21%,100%), 
+                                      height: 10.0pt, 
+                                      stroke: rgb(18%,80%,25%,100%), 
+                                      width: 20.0pt), 
+                                 {  }, 
+                                 align(alignment: horizon, 
+                                       body: { text(body: [11]), 
+                                               text(body: [.]) }), 
+                                 rect(fill: rgb(100%,25%,21%,100%), 
+                                      height: 10.0pt, 
+                                      stroke: (thickness: 2.0pt,
+                                               color: rgb(0%,0%,0%,100%)), 
+                                      width: 20.0pt), 
+                                 {  }, 
+                                 align(alignment: horizon, 
+                                       body: { text(body: [12]), 
+                                               text(body: [.]) }), 
+                                 rect(fill: rgb(100%,25%,21%,100%), 
+                                      height: 10.0pt, 
+                                      stroke: (thickness: 2.0pt,
+                                               color: rgb(18%,80%,25%,100%)), 
+                                      width: 20.0pt), 
+                                 {  }), 
+                      columns: (auto, 
+                                auto, 
+                                1.0fr, 
+                                auto, 
+                                auto, 
+                                0.0fr), 
+                      gutter: 5.0pt), 
+                 parbreak() })
diff --git a/test/typ/visualize/shape-fill-stroke-01.out b/test/typ/visualize/shape-fill-stroke-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/shape-fill-stroke-01.out
@@ -0,0 +1,163 @@
+--- parse tree ---
+[ Code
+    "typ/visualize/shape-fill-stroke-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/visualize/shape-fill-stroke-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/visualize/shape-fill-stroke-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/visualize/shape-fill-stroke-01.typ"
+    ( line 3 , column 2 )
+    (LetFunc
+       (Identifier "sq")
+       [ SinkParam (Just (Identifier "args")) ]
+       (FuncCall
+          (Ident (Identifier "box"))
+          [ NormalArg
+              (FuncCall
+                 (Ident (Identifier "square"))
+                 [ KeyValArg (Identifier "size") (Literal (Numeric 10.0 Pt))
+                 , SpreadArg (Ident (Identifier "args"))
+                 ])
+          ]))
+, ParBreak
+, Code
+    "typ/visualize/shape-fill-stroke-01.typ"
+    ( line 5 , column 2 )
+    (Set
+       (Ident (Identifier "square"))
+       [ KeyValArg (Identifier "stroke") (Literal None) ])
+, SoftBreak
+, Code
+    "typ/visualize/shape-fill-stroke-01.typ"
+    ( line 6 , column 2 )
+    (FuncCall (Ident (Identifier "sq")) [])
+, SoftBreak
+, Code
+    "typ/visualize/shape-fill-stroke-01.typ"
+    ( line 7 , column 2 )
+    (Set
+       (Ident (Identifier "square"))
+       [ KeyValArg (Identifier "stroke") (Literal Auto) ])
+, SoftBreak
+, Code
+    "typ/visualize/shape-fill-stroke-01.typ"
+    ( line 8 , column 2 )
+    (FuncCall (Ident (Identifier "sq")) [])
+, SoftBreak
+, Code
+    "typ/visualize/shape-fill-stroke-01.typ"
+    ( line 9 , column 2 )
+    (FuncCall
+       (Ident (Identifier "sq"))
+       [ KeyValArg (Identifier "fill") (Ident (Identifier "teal")) ])
+, SoftBreak
+, Code
+    "typ/visualize/shape-fill-stroke-01.typ"
+    ( line 10 , column 2 )
+    (FuncCall
+       (Ident (Identifier "sq"))
+       [ KeyValArg (Identifier "stroke") (Literal (Numeric 2.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/visualize/shape-fill-stroke-01.typ"
+    ( line 11 , column 2 )
+    (FuncCall
+       (Ident (Identifier "sq"))
+       [ KeyValArg (Identifier "stroke") (Ident (Identifier "blue")) ])
+, SoftBreak
+, Code
+    "typ/visualize/shape-fill-stroke-01.typ"
+    ( line 12 , column 2 )
+    (FuncCall
+       (Ident (Identifier "sq"))
+       [ KeyValArg (Identifier "fill") (Ident (Identifier "teal"))
+       , KeyValArg (Identifier "stroke") (Ident (Identifier "blue"))
+       ])
+, SoftBreak
+, Code
+    "typ/visualize/shape-fill-stroke-01.typ"
+    ( line 13 , column 2 )
+    (FuncCall
+       (Ident (Identifier "sq"))
+       [ KeyValArg (Identifier "fill") (Ident (Identifier "teal"))
+       , KeyValArg
+           (Identifier "stroke")
+           (Plus (Literal (Numeric 2.0 Pt)) (Ident (Identifier "blue")))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 box(body: square(size: 10.0pt, 
+                                  stroke: none)), 
+                 text(body: [
+]), 
+                 text(body: [
+]), 
+                 box(body: square(size: 10.0pt, 
+                                  stroke: auto)), 
+                 text(body: [
+]), 
+                 box(body: square(fill: rgb(22%,80%,80%,100%), 
+                                  size: 10.0pt, 
+                                  stroke: auto)), 
+                 text(body: [
+]), 
+                 box(body: square(size: 10.0pt, 
+                                  stroke: 2.0pt)), 
+                 text(body: [
+]), 
+                 box(body: square(size: 10.0pt, 
+                                  stroke: rgb(0%,45%,85%,100%))), 
+                 text(body: [
+]), 
+                 box(body: square(fill: rgb(22%,80%,80%,100%), 
+                                  size: 10.0pt, 
+                                  stroke: rgb(0%,45%,85%,100%))), 
+                 text(body: [
+]), 
+                 box(body: square(fill: rgb(22%,80%,80%,100%), 
+                                  size: 10.0pt, 
+                                  stroke: (thickness: 2.0pt,
+                                           color: rgb(0%,45%,85%,100%)))), 
+                 parbreak() })
diff --git a/test/typ/visualize/shape-fill-stroke-02.out b/test/typ/visualize/shape-fill-stroke-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/shape-fill-stroke-02.out
@@ -0,0 +1,99 @@
+--- parse tree ---
+[ Code
+    "typ/visualize/shape-fill-stroke-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/visualize/shape-fill-stroke-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/visualize/shape-fill-stroke-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/visualize/shape-fill-stroke-02.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "square"))
+       [ KeyValArg (Identifier "stroke") (Literal (Numeric 4.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/visualize/shape-fill-stroke-02.typ"
+    ( line 4 , column 2 )
+    (Set
+       (Ident (Identifier "text"))
+       [ KeyValArg (Identifier "font") (Literal (String "Roboto")) ])
+, SoftBreak
+, Code
+    "typ/visualize/shape-fill-stroke-02.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "square"))
+       [ KeyValArg
+           (Identifier "stroke")
+           (Dict
+              [ Reg ( Ident (Identifier "left") , Ident (Identifier "red") )
+              , Reg ( Ident (Identifier "top") , Ident (Identifier "yellow") )
+              , Reg ( Ident (Identifier "right") , Ident (Identifier "green") )
+              , Reg ( Ident (Identifier "bottom") , Ident (Identifier "blue") )
+              ])
+       , KeyValArg (Identifier "radius") (Literal (Numeric 100.0 Percent))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "align"))
+              [ NormalArg
+                  (Plus (Ident (Identifier "center")) (Ident (Identifier "horizon")))
+              , BlockArg [ Strong [ Text "G" ] ]
+              ])
+       , KeyValArg (Identifier "inset") (Literal (Numeric 8.0 Pt))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 text(body: [
+], 
+                      font: "Roboto"), 
+                 square(body: align(alignment: Axes(center, horizon), 
+                                    body: strong(body: text(body: [G], 
+                                                            font: "Roboto"))), 
+                        inset: 8.0pt, 
+                        radius: 100%, 
+                        stroke: (left: rgb(100%,25%,21%,100%),
+                                 top: rgb(100%,86%,0%,100%),
+                                 right: rgb(18%,80%,25%,100%),
+                                 bottom: rgb(0%,45%,85%,100%))), 
+                 parbreak() })
diff --git a/test/typ/visualize/shape-rect-00.out b/test/typ/visualize/shape-rect-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/shape-rect-00.out
@@ -0,0 +1,53 @@
+--- parse tree ---
+[ Code
+    "typ/visualize/shape-rect-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/visualize/shape-rect-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/visualize/shape-rect-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/visualize/shape-rect-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall (Ident (Identifier "rect")) [])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 rect(), 
+                 parbreak() })
diff --git a/test/typ/visualize/shape-rect-01.out b/test/typ/visualize/shape-rect-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/shape-rect-01.out
@@ -0,0 +1,298 @@
+--- parse tree ---
+[ Code
+    "typ/visualize/shape-rect-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/visualize/shape-rect-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/visualize/shape-rect-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/visualize/shape-rect-01.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 150.0 Pt)) ])
+, ParBreak
+, Comment
+, Code
+    "typ/visualize/shape-rect-01.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "rect"))
+       [ KeyValArg (Identifier "fill") (Ident (Identifier "green"))
+       , BlockArg [ Text "Textbox" ]
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/visualize/shape-rect-01.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "block"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg (Identifier "height") (Literal (Numeric 15.0 Pt))
+              , KeyValArg
+                  (Identifier "fill")
+                  (FuncCall
+                     (Ident (Identifier "rgb"))
+                     [ NormalArg (Literal (String "46b3c2")) ])
+              , KeyValArg
+                  (Identifier "stroke")
+                  (Plus
+                     (Literal (Numeric 2.0 Pt))
+                     (FuncCall
+                        (Ident (Identifier "rgb"))
+                        [ NormalArg (Literal (String "234994")) ]))
+              ])
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/visualize/shape-rect-01.typ"
+    ( line 15 , column 2 )
+    (FuncCall
+       (Ident (Identifier "rect"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 2.0 Cm))
+       , KeyValArg
+           (Identifier "fill")
+           (FuncCall
+              (Ident (Identifier "rgb"))
+              [ NormalArg (Literal (String "9650d6")) ])
+       , BlockArg
+           [ Text "Fixed" , Space , Text "and" , Space , Text "padded" ]
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/visualize/shape-rect-01.typ"
+    ( line 18 , column 2 )
+    (FuncCall
+       (Ident (Identifier "rect"))
+       [ KeyValArg (Identifier "height") (Literal (Numeric 1.0 Cm))
+       , KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
+       , KeyValArg
+           (Identifier "fill")
+           (FuncCall
+              (Ident (Identifier "rgb"))
+              [ NormalArg (Literal (String "734ced")) ])
+       , BlockArg [ Text "Topleft" ]
+       ])
+, ParBreak
+, Comment
+, Text "{"
+, Code
+    "typ/visualize/shape-rect-01.typ"
+    ( line 21 , column 3 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg (Identifier "width") (Literal (Numeric 0.5 In))
+              , KeyValArg (Identifier "height") (Literal (Numeric 7.0 Pt))
+              , KeyValArg
+                  (Identifier "fill")
+                  (FuncCall
+                     (Ident (Identifier "rgb"))
+                     [ NormalArg (Literal (String "d6cd67")) ])
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/visualize/shape-rect-01.typ"
+    ( line 22 , column 3 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg (Identifier "width") (Literal (Numeric 0.5 In))
+              , KeyValArg (Identifier "height") (Literal (Numeric 7.0 Pt))
+              , KeyValArg
+                  (Identifier "fill")
+                  (FuncCall
+                     (Ident (Identifier "rgb"))
+                     [ NormalArg (Literal (String "edd466")) ])
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/visualize/shape-rect-01.typ"
+    ( line 23 , column 3 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg (Identifier "width") (Literal (Numeric 0.5 In))
+              , KeyValArg (Identifier "height") (Literal (Numeric 7.0 Pt))
+              , KeyValArg
+                  (Identifier "fill")
+                  (FuncCall
+                     (Ident (Identifier "rgb"))
+                     [ NormalArg (Literal (String "e3be62")) ])
+              ])
+       ])
+, Text "}"
+, ParBreak
+, Comment
+, Code
+    "typ/visualize/shape-rect-01.typ"
+    ( line 26 , column 2 )
+    (FuncCall
+       (Ident (Identifier "stack"))
+       [ KeyValArg (Identifier "dir") (Ident (Identifier "ltr"))
+       , KeyValArg (Identifier "spacing") (Literal (Numeric 1.0 Fr))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg (Identifier "width") (Literal (Numeric 2.0 Cm))
+              , KeyValArg (Identifier "radius") (Literal (Numeric 60.0 Percent))
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg (Identifier "width") (Literal (Numeric 1.0 Cm))
+              , KeyValArg
+                  (Identifier "radius")
+                  (Dict
+                     [ Reg ( Ident (Identifier "left") , Literal (Numeric 10.0 Pt) )
+                     , Reg ( Ident (Identifier "right") , Literal (Numeric 5.0 Pt) )
+                     ])
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "rect"))
+              [ KeyValArg (Identifier "width") (Literal (Numeric 1.25 Cm))
+              , KeyValArg
+                  (Identifier "radius")
+                  (Dict
+                     [ Reg ( Ident (Identifier "top-left") , Literal (Numeric 2.0 Pt) )
+                     , Reg ( Ident (Identifier "top-right") , Literal (Numeric 5.0 Pt) )
+                     , Reg
+                         ( Ident (Identifier "bottom-right") , Literal (Numeric 8.0 Pt) )
+                     , Reg
+                         ( Ident (Identifier "bottom-left") , Literal (Numeric 11.0 Pt) )
+                     ])
+              ])
+       ])
+, ParBreak
+, Comment
+, Code
+    "typ/visualize/shape-rect-01.typ"
+    ( line 40 , column 2 )
+    (Set
+       (Ident (Identifier "rect"))
+       [ KeyValArg
+           (Identifier "stroke")
+           (Dict
+              [ Reg ( Ident (Identifier "right") , Ident (Identifier "red") ) ])
+       ])
+, SoftBreak
+, Code
+    "typ/visualize/shape-rect-01.typ"
+    ( line 41 , column 2 )
+    (FuncCall
+       (Ident (Identifier "rect"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Percent))
+       , KeyValArg (Identifier "fill") (Ident (Identifier "lime"))
+       , KeyValArg
+           (Identifier "stroke")
+           (Dict
+              [ Reg ( Ident (Identifier "x") , Literal (Numeric 5.0 Pt) )
+              , Reg ( Ident (Identifier "y") , Literal (Numeric 1.0 Pt) )
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 rect(body: text(body: [Textbox]), 
+                      fill: rgb(18%,80%,25%,100%)), 
+                 parbreak(), 
+                 block(body: rect(fill: rgb(27%,70%,76%,100%), 
+                                  height: 15.0pt, 
+                                  stroke: (thickness: 2.0pt,
+                                           color: rgb(13%,28%,58%,100%)))), 
+                 parbreak(), 
+                 rect(body: text(body: [Fixed and padded]), 
+                      fill: rgb(58%,31%,83%,100%), 
+                      width: 2.0cm), 
+                 parbreak(), 
+                 rect(body: text(body: [Topleft]), 
+                      fill: rgb(45%,29%,92%,100%), 
+                      height: 1.0cm, 
+                      width: 100%), 
+                 parbreak(), 
+                 text(body: [{]), 
+                 box(body: rect(fill: rgb(83%,80%,40%,100%), 
+                                height: 7.0pt, 
+                                width: 0.5in)), 
+                 text(body: [
+]), 
+                 box(body: rect(fill: rgb(92%,83%,40%,100%), 
+                                height: 7.0pt, 
+                                width: 0.5in)), 
+                 text(body: [
+]), 
+                 box(body: rect(fill: rgb(89%,74%,38%,100%), 
+                                height: 7.0pt, 
+                                width: 0.5in)), 
+                 text(body: [}]), 
+                 parbreak(), 
+                 stack(children: (rect(radius: 60%, 
+                                       width: 2.0cm), 
+                                  rect(radius: (left: 10.0pt,
+                                                right: 5.0pt), 
+                                       width: 1.0cm), 
+                                  rect(radius: (top-left: 2.0pt,
+                                                top-right: 5.0pt,
+                                                bottom-right: 8.0pt,
+                                                bottom-left: 11.0pt), 
+                                       width: 1.25cm)), 
+                       dir: ltr, 
+                       spacing: 1.0fr), 
+                 parbreak(), 
+                 text(body: [
+]), 
+                 rect(fill: rgb(0%,100%,43%,100%), 
+                      stroke: (x: 5.0pt, y: 1.0pt), 
+                      width: 100%), 
+                 parbreak() })
diff --git a/test/typ/visualize/shape-rect-02.out b/test/typ/visualize/shape-rect-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/shape-rect-02.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/visualize/shape-rect-03.out b/test/typ/visualize/shape-rect-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/shape-rect-03.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/visualize/shape-rounded-00.out b/test/typ/visualize/shape-rounded-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/shape-rounded-00.out
@@ -0,0 +1,67 @@
+--- parse tree ---
+[ Code
+    "typ/visualize/shape-rounded-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/visualize/shape-rounded-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/visualize/shape-rounded-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/visualize/shape-rounded-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "rect"))
+       [ KeyValArg
+           (Identifier "radius") (Negated (Literal (Numeric 20.0 Pt)))
+       ])
+, SoftBreak
+, Code
+    "typ/visualize/shape-rounded-00.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "square"))
+       [ KeyValArg (Identifier "radius") (Literal (Numeric 30.0 Pt)) ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 rect(radius: -20.0pt), 
+                 text(body: [
+]), 
+                 square(radius: 30.0pt), 
+                 parbreak() })
diff --git a/test/typ/visualize/shape-square-00.out b/test/typ/visualize/shape-square-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/shape-square-00.out
@@ -0,0 +1,68 @@
+--- parse tree ---
+[ Code
+    "typ/visualize/shape-square-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/visualize/shape-square-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/visualize/shape-square-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/visualize/shape-square-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ NormalArg (FuncCall (Ident (Identifier "square")) []) ])
+, SoftBreak
+, Code
+    "typ/visualize/shape-square-00.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "box"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "square")) [ BlockArg [ Text "hey!" ] ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 box(body: square()), 
+                 text(body: [
+]), 
+                 box(body: square(body: text(body: [hey!]))), 
+                 parbreak() })
diff --git a/test/typ/visualize/shape-square-01.out b/test/typ/visualize/shape-square-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/shape-square-01.out
@@ -0,0 +1,77 @@
+--- parse tree ---
+[ Code
+    "typ/visualize/shape-square-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/visualize/shape-square-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/visualize/shape-square-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/visualize/shape-square-01.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "square"))
+       [ KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
+       , BlockArg
+           [ SoftBreak
+           , Code
+               "typ/visualize/shape-square-01.typ"
+               ( line 4 , column 4 )
+               (Set
+                  (Ident (Identifier "text"))
+                  [ KeyValArg (Identifier "fill") (Ident (Identifier "white"))
+                  , KeyValArg (Identifier "weight") (Literal (String "bold"))
+                  ])
+           , SoftBreak
+           , Text "Typst"
+           , ParBreak
+           ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 square(body: { text(body: [
+]), 
+                                text(body: [
+Typst], 
+                                     fill: rgb(100%,100%,100%,100%), 
+                                     weight: "bold"), 
+                                parbreak() }, 
+                        fill: rgb(13%,61%,67%,100%)), 
+                 parbreak() })
diff --git a/test/typ/visualize/shape-square-02.out b/test/typ/visualize/shape-square-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/shape-square-02.out
@@ -0,0 +1,90 @@
+--- parse tree ---
+[ Code
+    "typ/visualize/shape-square-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/visualize/shape-square-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/visualize/shape-square-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/visualize/shape-square-02.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "square"))
+       [ KeyValArg (Identifier "fill") (Ident (Identifier "eastern"))
+       , BlockArg
+           [ SoftBreak
+           , Code
+               "typ/visualize/shape-square-02.typ"
+               ( line 4 , column 4 )
+               (FuncCall
+                  (Ident (Identifier "rect"))
+                  [ KeyValArg (Identifier "width") (Literal (Numeric 10.0 Pt))
+                  , KeyValArg (Identifier "height") (Literal (Numeric 5.0 Pt))
+                  , KeyValArg (Identifier "fill") (Ident (Identifier "green"))
+                  ])
+           , SoftBreak
+           , Code
+               "typ/visualize/shape-square-02.typ"
+               ( line 5 , column 4 )
+               (FuncCall
+                  (Ident (Identifier "rect"))
+                  [ KeyValArg (Identifier "width") (Literal (Numeric 40.0 Percent))
+                  , KeyValArg (Identifier "height") (Literal (Numeric 5.0 Pt))
+                  , KeyValArg (Identifier "stroke") (Ident (Identifier "green"))
+                  ])
+           , ParBreak
+           ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 square(body: { text(body: [
+]), 
+                                rect(fill: rgb(18%,80%,25%,100%), 
+                                     height: 5.0pt, 
+                                     width: 10.0pt), 
+                                text(body: [
+]), 
+                                rect(height: 5.0pt, 
+                                     stroke: rgb(18%,80%,25%,100%), 
+                                     width: 40%), 
+                                parbreak() }, 
+                        fill: rgb(13%,61%,67%,100%)), 
+                 parbreak() })
diff --git a/test/typ/visualize/shape-square-03.out b/test/typ/visualize/shape-square-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/shape-square-03.out
@@ -0,0 +1,89 @@
+--- parse tree ---
+[ Code
+    "typ/visualize/shape-square-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/visualize/shape-square-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/visualize/shape-square-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/visualize/shape-square-03.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 75.0 Pt))
+       , KeyValArg (Identifier "height") (Literal (Numeric 100.0 Pt))
+       ])
+, SoftBreak
+, Code
+    "typ/visualize/shape-square-03.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "square"))
+       [ KeyValArg (Identifier "fill") (Ident (Identifier "green"))
+       , BlockArg
+           [ SoftBreak
+           , Text "But,"
+           , Space
+           , Text "soft!"
+           , Space
+           , Text "what"
+           , Space
+           , Text "light"
+           , Space
+           , Text "through"
+           , Space
+           , Text "yonder"
+           , Space
+           , Text "window"
+           , Space
+           , Text "breaks?"
+           , ParBreak
+           ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 square(body: { text(body: [
+But, soft! what light through yonder window breaks?]), 
+                                parbreak() }, 
+                        fill: rgb(18%,80%,25%,100%)), 
+                 parbreak() })
diff --git a/test/typ/visualize/shape-square-04.out b/test/typ/visualize/shape-square-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/shape-square-04.out
@@ -0,0 +1,89 @@
+--- parse tree ---
+[ Code
+    "typ/visualize/shape-square-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/visualize/shape-square-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/visualize/shape-square-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/visualize/shape-square-04.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 100.0 Pt))
+       , KeyValArg (Identifier "height") (Literal (Numeric 75.0 Pt))
+       ])
+, SoftBreak
+, Code
+    "typ/visualize/shape-square-04.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "square"))
+       [ KeyValArg (Identifier "fill") (Ident (Identifier "green"))
+       , BlockArg
+           [ SoftBreak
+           , Text "But,"
+           , Space
+           , Text "soft!"
+           , Space
+           , Text "what"
+           , Space
+           , Text "light"
+           , Space
+           , Text "through"
+           , Space
+           , Text "yonder"
+           , Space
+           , Text "window"
+           , Space
+           , Text "breaks?"
+           , ParBreak
+           ]
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 square(body: { text(body: [
+But, soft! what light through yonder window breaks?]), 
+                                parbreak() }, 
+                        fill: rgb(18%,80%,25%,100%)), 
+                 parbreak() })
diff --git a/test/typ/visualize/shape-square-05.out b/test/typ/visualize/shape-square-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/shape-square-05.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/visualize/stroke-00.out b/test/typ/visualize/stroke-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/stroke-00.out
@@ -0,0 +1,165 @@
+--- parse tree ---
+[ Code
+    "typ/visualize/stroke-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/visualize/stroke-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/visualize/stroke-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/visualize/stroke-00.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "line"))
+       [ KeyValArg (Identifier "length") (Literal (Numeric 60.0 Pt))
+       , KeyValArg (Identifier "stroke") (Ident (Identifier "red"))
+       ])
+, SoftBreak
+, Code
+    "typ/visualize/stroke-00.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 3.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/visualize/stroke-00.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "line"))
+       [ KeyValArg (Identifier "length") (Literal (Numeric 60.0 Pt))
+       , KeyValArg (Identifier "stroke") (Literal (Numeric 2.0 Pt))
+       ])
+, SoftBreak
+, Code
+    "typ/visualize/stroke-00.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 3.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/visualize/stroke-00.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "line"))
+       [ KeyValArg (Identifier "length") (Literal (Numeric 60.0 Pt))
+       , KeyValArg
+           (Identifier "stroke")
+           (Plus (Ident (Identifier "blue")) (Literal (Numeric 1.5 Pt)))
+       ])
+, SoftBreak
+, Code
+    "typ/visualize/stroke-00.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 3.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/visualize/stroke-00.typ"
+    ( line 9 , column 2 )
+    (FuncCall
+       (Ident (Identifier "line"))
+       [ KeyValArg (Identifier "length") (Literal (Numeric 60.0 Pt))
+       , KeyValArg
+           (Identifier "stroke")
+           (Dict
+              [ Reg ( Ident (Identifier "paint") , Ident (Identifier "red") )
+              , Reg ( Ident (Identifier "thickness") , Literal (Numeric 1.0 Pt) )
+              , Reg ( Ident (Identifier "dash") , Literal (String "dashed") )
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/visualize/stroke-00.typ"
+    ( line 10 , column 2 )
+    (FuncCall
+       (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 3.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/visualize/stroke-00.typ"
+    ( line 11 , column 2 )
+    (FuncCall
+       (Ident (Identifier "line"))
+       [ KeyValArg (Identifier "length") (Literal (Numeric 60.0 Pt))
+       , KeyValArg
+           (Identifier "stroke")
+           (Dict
+              [ Reg ( Ident (Identifier "paint") , Ident (Identifier "red") )
+              , Reg ( Ident (Identifier "thickness") , Literal (Numeric 4.0 Pt) )
+              , Reg ( Ident (Identifier "cap") , Literal (String "round") )
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 line(length: 60.0pt, 
+                      stroke: rgb(100%,25%,21%,100%)), 
+                 text(body: [
+]), 
+                 v(amount: 3.0pt), 
+                 text(body: [
+]), 
+                 line(length: 60.0pt, 
+                      stroke: 2.0pt), 
+                 text(body: [
+]), 
+                 v(amount: 3.0pt), 
+                 text(body: [
+]), 
+                 line(length: 60.0pt, 
+                      stroke: (thickness: 1.5pt,
+                               color: rgb(0%,45%,85%,100%))), 
+                 text(body: [
+]), 
+                 v(amount: 3.0pt), 
+                 text(body: [
+]), 
+                 line(length: 60.0pt, 
+                      stroke: (paint: rgb(100%,25%,21%,100%),
+                               thickness: 1.0pt,
+                               dash: "dashed")), 
+                 text(body: [
+]), 
+                 v(amount: 3.0pt), 
+                 text(body: [
+]), 
+                 line(length: 60.0pt, 
+                      stroke: (paint: rgb(100%,25%,21%,100%),
+                               thickness: 4.0pt,
+                               cap: "round")), 
+                 parbreak() })
diff --git a/test/typ/visualize/stroke-01.out b/test/typ/visualize/stroke-01.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/stroke-01.out
@@ -0,0 +1,123 @@
+--- parse tree ---
+[ Code
+    "typ/visualize/stroke-01.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/visualize/stroke-01.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/visualize/stroke-01.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/visualize/stroke-01.typ"
+    ( line 3 , column 2 )
+    (Set
+       (Ident (Identifier "line"))
+       [ KeyValArg
+           (Identifier "stroke")
+           (Dict
+              [ Reg ( Ident (Identifier "paint") , Ident (Identifier "red") )
+              , Reg ( Ident (Identifier "thickness") , Literal (Numeric 1.0 Pt) )
+              , Reg ( Ident (Identifier "cap") , Literal (String "butt") )
+              , Reg
+                  ( Ident (Identifier "dash") , Literal (String "dash-dotted") )
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/visualize/stroke-01.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "line"))
+       [ KeyValArg (Identifier "length") (Literal (Numeric 60.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/visualize/stroke-01.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 3.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/visualize/stroke-01.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "line"))
+       [ KeyValArg (Identifier "length") (Literal (Numeric 60.0 Pt))
+       , KeyValArg (Identifier "stroke") (Ident (Identifier "blue"))
+       ])
+, SoftBreak
+, Code
+    "typ/visualize/stroke-01.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 3.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/visualize/stroke-01.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "line"))
+       [ KeyValArg (Identifier "length") (Literal (Numeric 60.0 Pt))
+       , KeyValArg
+           (Identifier "stroke")
+           (Dict [ Reg ( Ident (Identifier "dash") , Literal None ) ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 line(length: 60.0pt, 
+                      stroke: (paint: rgb(100%,25%,21%,100%),
+                               thickness: 1.0pt,
+                               cap: "butt",
+                               dash: "dash-dotted")), 
+                 text(body: [
+]), 
+                 v(amount: 3.0pt), 
+                 text(body: [
+]), 
+                 line(length: 60.0pt, 
+                      stroke: rgb(0%,45%,85%,100%)), 
+                 text(body: [
+]), 
+                 v(amount: 3.0pt), 
+                 text(body: [
+]), 
+                 line(length: 60.0pt, 
+                      stroke: (dash: none)), 
+                 parbreak() })
diff --git a/test/typ/visualize/stroke-02.out b/test/typ/visualize/stroke-02.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/stroke-02.out
@@ -0,0 +1,127 @@
+--- parse tree ---
+[ Code
+    "typ/visualize/stroke-02.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/visualize/stroke-02.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/visualize/stroke-02.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/visualize/stroke-02.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "rect"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 20.0 Pt))
+       , KeyValArg (Identifier "height") (Literal (Numeric 20.0 Pt))
+       , KeyValArg (Identifier "stroke") (Ident (Identifier "red"))
+       ])
+, SoftBreak
+, Code
+    "typ/visualize/stroke-02.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 3.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/visualize/stroke-02.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "rect"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 20.0 Pt))
+       , KeyValArg (Identifier "height") (Literal (Numeric 20.0 Pt))
+       , KeyValArg
+           (Identifier "stroke")
+           (Dict
+              [ Reg ( Ident (Identifier "rest") , Ident (Identifier "red") )
+              , Reg
+                  ( Ident (Identifier "top")
+                  , Dict
+                      [ Reg ( Ident (Identifier "paint") , Ident (Identifier "blue") )
+                      , Reg ( Ident (Identifier "dash") , Literal (String "dashed") )
+                      ]
+                  )
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/visualize/stroke-02.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 3.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/visualize/stroke-02.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "rect"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 20.0 Pt))
+       , KeyValArg (Identifier "height") (Literal (Numeric 20.0 Pt))
+       , KeyValArg
+           (Identifier "stroke")
+           (Dict
+              [ Reg ( Ident (Identifier "thickness") , Literal (Numeric 5.0 Pt) )
+              , Reg ( Ident (Identifier "join") , Literal (String "round") )
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 rect(height: 20.0pt, 
+                      stroke: rgb(100%,25%,21%,100%), 
+                      width: 20.0pt), 
+                 text(body: [
+]), 
+                 v(amount: 3.0pt), 
+                 text(body: [
+]), 
+                 rect(height: 20.0pt, 
+                      stroke: (rest: rgb(100%,25%,21%,100%),
+                               top: (paint: rgb(0%,45%,85%,100%),
+                                     dash: "dashed")), 
+                      width: 20.0pt), 
+                 text(body: [
+]), 
+                 v(amount: 3.0pt), 
+                 text(body: [
+]), 
+                 rect(height: 20.0pt, 
+                      stroke: (thickness: 5.0pt,
+                               join: "round"), 
+                      width: 20.0pt), 
+                 parbreak() })
diff --git a/test/typ/visualize/stroke-03.out b/test/typ/visualize/stroke-03.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/stroke-03.out
@@ -0,0 +1,228 @@
+--- parse tree ---
+[ Code
+    "typ/visualize/stroke-03.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/visualize/stroke-03.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/visualize/stroke-03.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/visualize/stroke-03.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "line"))
+       [ KeyValArg (Identifier "length") (Literal (Numeric 60.0 Pt))
+       , KeyValArg
+           (Identifier "stroke")
+           (Dict
+              [ Reg ( Ident (Identifier "paint") , Ident (Identifier "red") )
+              , Reg ( Ident (Identifier "thickness") , Literal (Numeric 1.0 Pt) )
+              , Reg
+                  ( Ident (Identifier "dash")
+                  , Array
+                      [ Reg (Literal (String "dot")) , Reg (Literal (Numeric 1.0 Pt)) ]
+                  )
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/visualize/stroke-03.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 3.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/visualize/stroke-03.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "line"))
+       [ KeyValArg (Identifier "length") (Literal (Numeric 60.0 Pt))
+       , KeyValArg
+           (Identifier "stroke")
+           (Dict
+              [ Reg ( Ident (Identifier "paint") , Ident (Identifier "red") )
+              , Reg ( Ident (Identifier "thickness") , Literal (Numeric 1.0 Pt) )
+              , Reg
+                  ( Ident (Identifier "dash")
+                  , Array
+                      [ Reg (Literal (String "dot"))
+                      , Reg (Literal (Numeric 1.0 Pt))
+                      , Reg (Literal (Numeric 4.0 Pt))
+                      , Reg (Literal (Numeric 2.0 Pt))
+                      ]
+                  )
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/visualize/stroke-03.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 3.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/visualize/stroke-03.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "line"))
+       [ KeyValArg (Identifier "length") (Literal (Numeric 60.0 Pt))
+       , KeyValArg
+           (Identifier "stroke")
+           (Dict
+              [ Reg ( Ident (Identifier "paint") , Ident (Identifier "red") )
+              , Reg ( Ident (Identifier "thickness") , Literal (Numeric 1.0 Pt) )
+              , Reg
+                  ( Ident (Identifier "dash")
+                  , Dict
+                      [ Reg
+                          ( Ident (Identifier "array")
+                          , Array
+                              [ Reg (Literal (String "dot"))
+                              , Reg (Literal (Numeric 1.0 Pt))
+                              , Reg (Literal (Numeric 4.0 Pt))
+                              , Reg (Literal (Numeric 2.0 Pt))
+                              ]
+                          )
+                      , Reg ( Ident (Identifier "phase") , Literal (Numeric 5.0 Pt) )
+                      ]
+                  )
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/visualize/stroke-03.typ"
+    ( line 8 , column 2 )
+    (FuncCall
+       (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 3.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/visualize/stroke-03.typ"
+    ( line 9 , column 2 )
+    (FuncCall
+       (Ident (Identifier "line"))
+       [ KeyValArg (Identifier "length") (Literal (Numeric 60.0 Pt))
+       , KeyValArg
+           (Identifier "stroke")
+           (Dict
+              [ Reg ( Ident (Identifier "paint") , Ident (Identifier "red") )
+              , Reg ( Ident (Identifier "thickness") , Literal (Numeric 1.0 Pt) )
+              , Reg ( Ident (Identifier "dash") , Array [] )
+              ])
+       ])
+, SoftBreak
+, Code
+    "typ/visualize/stroke-03.typ"
+    ( line 10 , column 2 )
+    (FuncCall
+       (Ident (Identifier "v")) [ NormalArg (Literal (Numeric 3.0 Pt)) ])
+, SoftBreak
+, Code
+    "typ/visualize/stroke-03.typ"
+    ( line 11 , column 2 )
+    (FuncCall
+       (Ident (Identifier "line"))
+       [ KeyValArg (Identifier "length") (Literal (Numeric 60.0 Pt))
+       , KeyValArg
+           (Identifier "stroke")
+           (Dict
+              [ Reg ( Ident (Identifier "paint") , Ident (Identifier "red") )
+              , Reg ( Ident (Identifier "thickness") , Literal (Numeric 1.0 Pt) )
+              , Reg
+                  ( Ident (Identifier "dash")
+                  , Array
+                      [ Reg (Literal (Numeric 1.0 Pt))
+                      , Reg (Literal (Numeric 3.0 Pt))
+                      , Reg (Literal (Numeric 9.0 Pt))
+                      ]
+                  )
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 line(length: 60.0pt, 
+                      stroke: (paint: rgb(100%,25%,21%,100%),
+                               thickness: 1.0pt,
+                               dash: ("dot", 1.0pt))), 
+                 text(body: [
+]), 
+                 v(amount: 3.0pt), 
+                 text(body: [
+]), 
+                 line(length: 60.0pt, 
+                      stroke: (paint: rgb(100%,25%,21%,100%),
+                               thickness: 1.0pt,
+                               dash: ("dot", 
+                                      1.0pt, 
+                                      4.0pt, 
+                                      2.0pt))), 
+                 text(body: [
+]), 
+                 v(amount: 3.0pt), 
+                 text(body: [
+]), 
+                 line(length: 60.0pt, 
+                      stroke: (paint: rgb(100%,25%,21%,100%),
+                               thickness: 1.0pt,
+                               dash: (array: ("dot", 
+                                              1.0pt, 
+                                              4.0pt, 
+                                              2.0pt),
+                                      phase: 5.0pt))), 
+                 text(body: [
+]), 
+                 v(amount: 3.0pt), 
+                 text(body: [
+]), 
+                 line(length: 60.0pt, 
+                      stroke: (paint: rgb(100%,25%,21%,100%),
+                               thickness: 1.0pt,
+                               dash: ())), 
+                 text(body: [
+]), 
+                 v(amount: 3.0pt), 
+                 text(body: [
+]), 
+                 line(length: 60.0pt, 
+                      stroke: (paint: rgb(100%,25%,21%,100%),
+                               thickness: 1.0pt,
+                               dash: (1.0pt, 
+                                      3.0pt, 
+                                      9.0pt))), 
+                 parbreak() })
diff --git a/test/typ/visualize/stroke-04.out b/test/typ/visualize/stroke-04.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/stroke-04.out
@@ -0,0 +1,228 @@
+--- parse tree ---
+[ Code
+    "typ/visualize/stroke-04.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/visualize/stroke-04.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/visualize/stroke-04.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, Code
+    "typ/visualize/stroke-04.typ"
+    ( line 3 , column 2 )
+    (FuncCall
+       (Ident (Identifier "stack"))
+       [ KeyValArg (Identifier "dir") (Ident (Identifier "ltr"))
+       , KeyValArg (Identifier "spacing") (Literal (Numeric 1.0 Em))
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "polygon"))
+              [ KeyValArg
+                  (Identifier "stroke")
+                  (Dict
+                     [ Reg ( Ident (Identifier "thickness") , Literal (Numeric 4.0 Pt) )
+                     , Reg ( Ident (Identifier "paint") , Ident (Identifier "blue") )
+                     , Reg ( Ident (Identifier "join") , Literal (String "round") )
+                     ])
+              , NormalArg
+                  (Array
+                     [ Reg (Literal (Numeric 0.0 Pt))
+                     , Reg (Literal (Numeric 20.0 Pt))
+                     ])
+              , NormalArg
+                  (Array
+                     [ Reg (Literal (Numeric 15.0 Pt))
+                     , Reg (Literal (Numeric 0.0 Pt))
+                     ])
+              , NormalArg
+                  (Array
+                     [ Reg (Literal (Numeric 0.0 Pt))
+                     , Reg (Literal (Numeric 40.0 Pt))
+                     ])
+              , NormalArg
+                  (Array
+                     [ Reg (Literal (Numeric 15.0 Pt))
+                     , Reg (Literal (Numeric 45.0 Pt))
+                     ])
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "polygon"))
+              [ KeyValArg
+                  (Identifier "stroke")
+                  (Dict
+                     [ Reg ( Ident (Identifier "thickness") , Literal (Numeric 4.0 Pt) )
+                     , Reg ( Ident (Identifier "paint") , Ident (Identifier "blue") )
+                     , Reg ( Ident (Identifier "join") , Literal (String "bevel") )
+                     ])
+              , NormalArg
+                  (Array
+                     [ Reg (Literal (Numeric 0.0 Pt))
+                     , Reg (Literal (Numeric 20.0 Pt))
+                     ])
+              , NormalArg
+                  (Array
+                     [ Reg (Literal (Numeric 15.0 Pt))
+                     , Reg (Literal (Numeric 0.0 Pt))
+                     ])
+              , NormalArg
+                  (Array
+                     [ Reg (Literal (Numeric 0.0 Pt))
+                     , Reg (Literal (Numeric 40.0 Pt))
+                     ])
+              , NormalArg
+                  (Array
+                     [ Reg (Literal (Numeric 15.0 Pt))
+                     , Reg (Literal (Numeric 45.0 Pt))
+                     ])
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "polygon"))
+              [ KeyValArg
+                  (Identifier "stroke")
+                  (Dict
+                     [ Reg ( Ident (Identifier "thickness") , Literal (Numeric 4.0 Pt) )
+                     , Reg ( Ident (Identifier "paint") , Ident (Identifier "blue") )
+                     , Reg ( Ident (Identifier "join") , Literal (String "miter") )
+                     ])
+              , NormalArg
+                  (Array
+                     [ Reg (Literal (Numeric 0.0 Pt))
+                     , Reg (Literal (Numeric 20.0 Pt))
+                     ])
+              , NormalArg
+                  (Array
+                     [ Reg (Literal (Numeric 15.0 Pt))
+                     , Reg (Literal (Numeric 0.0 Pt))
+                     ])
+              , NormalArg
+                  (Array
+                     [ Reg (Literal (Numeric 0.0 Pt))
+                     , Reg (Literal (Numeric 40.0 Pt))
+                     ])
+              , NormalArg
+                  (Array
+                     [ Reg (Literal (Numeric 15.0 Pt))
+                     , Reg (Literal (Numeric 45.0 Pt))
+                     ])
+              ])
+       , NormalArg
+           (FuncCall
+              (Ident (Identifier "polygon"))
+              [ KeyValArg
+                  (Identifier "stroke")
+                  (Dict
+                     [ Reg ( Ident (Identifier "thickness") , Literal (Numeric 4.0 Pt) )
+                     , Reg ( Ident (Identifier "paint") , Ident (Identifier "blue") )
+                     , Reg ( Ident (Identifier "join") , Literal (String "miter") )
+                     , Reg ( Ident (Identifier "miter-limit") , Literal (Float 20.0) )
+                     ])
+              , NormalArg
+                  (Array
+                     [ Reg (Literal (Numeric 0.0 Pt))
+                     , Reg (Literal (Numeric 20.0 Pt))
+                     ])
+              , NormalArg
+                  (Array
+                     [ Reg (Literal (Numeric 15.0 Pt))
+                     , Reg (Literal (Numeric 0.0 Pt))
+                     ])
+              , NormalArg
+                  (Array
+                     [ Reg (Literal (Numeric 0.0 Pt))
+                     , Reg (Literal (Numeric 40.0 Pt))
+                     ])
+              , NormalArg
+                  (Array
+                     [ Reg (Literal (Numeric 15.0 Pt))
+                     , Reg (Literal (Numeric 45.0 Pt))
+                     ])
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 stack(children: (polygon(stroke: (thickness: 4.0pt,
+                                                   paint: rgb(0%,45%,85%,100%),
+                                                   join: "round"), 
+                                          vertices: ((0.0pt, 
+                                                      20.0pt), 
+                                                     (15.0pt, 
+                                                      0.0pt), 
+                                                     (0.0pt, 
+                                                      40.0pt), 
+                                                     (15.0pt, 
+                                                      45.0pt))), 
+                                  polygon(stroke: (thickness: 4.0pt,
+                                                   paint: rgb(0%,45%,85%,100%),
+                                                   join: "bevel"), 
+                                          vertices: ((0.0pt, 
+                                                      20.0pt), 
+                                                     (15.0pt, 
+                                                      0.0pt), 
+                                                     (0.0pt, 
+                                                      40.0pt), 
+                                                     (15.0pt, 
+                                                      45.0pt))), 
+                                  polygon(stroke: (thickness: 4.0pt,
+                                                   paint: rgb(0%,45%,85%,100%),
+                                                   join: "miter"), 
+                                          vertices: ((0.0pt, 
+                                                      20.0pt), 
+                                                     (15.0pt, 
+                                                      0.0pt), 
+                                                     (0.0pt, 
+                                                      40.0pt), 
+                                                     (15.0pt, 
+                                                      45.0pt))), 
+                                  polygon(stroke: (thickness: 4.0pt,
+                                                   paint: rgb(0%,45%,85%,100%),
+                                                   join: "miter",
+                                                   miter-limit: 20.0), 
+                                          vertices: ((0.0pt, 
+                                                      20.0pt), 
+                                                     (15.0pt, 
+                                                      0.0pt), 
+                                                     (0.0pt, 
+                                                      40.0pt), 
+                                                     (15.0pt, 
+                                                      45.0pt)))), 
+                       dir: ltr, 
+                       spacing: 1.0em), 
+                 parbreak() })
diff --git a/test/typ/visualize/stroke-05.out b/test/typ/visualize/stroke-05.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/stroke-05.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/visualize/stroke-06.out b/test/typ/visualize/stroke-06.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/stroke-06.out
@@ -0,0 +1,2 @@
+--- skipped ---
+
diff --git a/test/typ/visualize/stroke-07.out b/test/typ/visualize/stroke-07.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/stroke-07.out
@@ -0,0 +1,327 @@
+--- parse tree ---
+[ Code
+    "typ/visualize/stroke-07.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/visualize/stroke-07.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/visualize/stroke-07.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Comment
+, SoftBreak
+, Code
+    "typ/visualize/stroke-07.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "rect"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 10.0 Pt))
+       , KeyValArg (Identifier "height") (Literal (Numeric 10.0 Pt))
+       , KeyValArg (Identifier "stroke") (Literal None)
+       ])
+, SoftBreak
+, Code
+    "typ/visualize/stroke-07.typ"
+    ( line 5 , column 2 )
+    (FuncCall
+       (Ident (Identifier "rect"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 10.0 Pt))
+       , KeyValArg (Identifier "height") (Literal (Numeric 10.0 Pt))
+       , KeyValArg (Identifier "stroke") (Literal (Numeric 0.0 Pt))
+       ])
+, SoftBreak
+, Code
+    "typ/visualize/stroke-07.typ"
+    ( line 6 , column 2 )
+    (FuncCall
+       (Ident (Identifier "rect"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 10.0 Pt))
+       , KeyValArg (Identifier "height") (Literal (Numeric 10.0 Pt))
+       , KeyValArg (Identifier "stroke") (Literal None)
+       , KeyValArg (Identifier "fill") (Ident (Identifier "blue"))
+       ])
+, SoftBreak
+, Code
+    "typ/visualize/stroke-07.typ"
+    ( line 7 , column 2 )
+    (FuncCall
+       (Ident (Identifier "rect"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 10.0 Pt))
+       , KeyValArg (Identifier "height") (Literal (Numeric 10.0 Pt))
+       , KeyValArg
+           (Identifier "stroke")
+           (Plus (Literal (Numeric 0.0 Pt)) (Ident (Identifier "red")))
+       , KeyValArg (Identifier "fill") (Ident (Identifier "blue"))
+       ])
+, ParBreak
+, Code
+    "typ/visualize/stroke-07.typ"
+    ( line 9 , column 2 )
+    (FuncCall
+       (Ident (Identifier "line"))
+       [ KeyValArg (Identifier "length") (Literal (Numeric 30.0 Pt))
+       , KeyValArg (Identifier "stroke") (Literal (Numeric 0.0 Pt))
+       ])
+, SoftBreak
+, Code
+    "typ/visualize/stroke-07.typ"
+    ( line 10 , column 2 )
+    (FuncCall
+       (Ident (Identifier "line"))
+       [ KeyValArg (Identifier "length") (Literal (Numeric 30.0 Pt))
+       , KeyValArg
+           (Identifier "stroke")
+           (Dict
+              [ Reg ( Ident (Identifier "paint") , Ident (Identifier "red") )
+              , Reg ( Ident (Identifier "thickness") , Literal (Numeric 0.0 Pt) )
+              , Reg
+                  ( Ident (Identifier "dash")
+                  , Array
+                      [ Reg (Literal (String "dot")) , Reg (Literal (Numeric 1.0 Pt)) ]
+                  )
+              ])
+       ])
+, ParBreak
+, Code
+    "typ/visualize/stroke-07.typ"
+    ( line 12 , column 2 )
+    (FuncCall
+       (Ident (Identifier "table"))
+       [ KeyValArg (Identifier "columns") (Literal (Int 2))
+       , KeyValArg (Identifier "stroke") (Literal None)
+       , BlockArg [ Text "A" ]
+       , BlockArg [ Text "B" ]
+       ])
+, SoftBreak
+, Code
+    "typ/visualize/stroke-07.typ"
+    ( line 13 , column 2 )
+    (FuncCall
+       (Ident (Identifier "table"))
+       [ KeyValArg (Identifier "columns") (Literal (Int 2))
+       , KeyValArg (Identifier "stroke") (Literal (Numeric 0.0 Pt))
+       , BlockArg [ Text "A" ]
+       , BlockArg [ Text "B" ]
+       ])
+, ParBreak
+, Code
+    "typ/visualize/stroke-07.typ"
+    ( line 15 , column 2 )
+    (FuncCall
+       (Ident (Identifier "path"))
+       [ KeyValArg (Identifier "fill") (Ident (Identifier "red"))
+       , KeyValArg (Identifier "stroke") (Literal None)
+       , KeyValArg (Identifier "closed") (Literal (Boolean True))
+       , NormalArg
+           (Array
+              [ Reg
+                  (Array
+                     [ Reg (Literal (Numeric 0.0 Percent))
+                     , Reg (Literal (Numeric 0.0 Percent))
+                     ])
+              , Reg
+                  (Array
+                     [ Reg (Literal (Numeric 4.0 Percent))
+                     , Reg (Negated (Literal (Numeric 4.0 Percent)))
+                     ])
+              ])
+       , NormalArg
+           (Array
+              [ Reg
+                  (Array
+                     [ Reg (Literal (Numeric 50.0 Percent))
+                     , Reg (Literal (Numeric 50.0 Percent))
+                     ])
+              , Reg
+                  (Array
+                     [ Reg (Literal (Numeric 4.0 Percent))
+                     , Reg (Negated (Literal (Numeric 4.0 Percent)))
+                     ])
+              ])
+       , NormalArg
+           (Array
+              [ Reg
+                  (Array
+                     [ Reg (Literal (Numeric 0.0 Percent))
+                     , Reg (Literal (Numeric 50.0 Percent))
+                     ])
+              , Reg
+                  (Array
+                     [ Reg (Literal (Numeric 4.0 Percent))
+                     , Reg (Literal (Numeric 4.0 Percent))
+                     ])
+              ])
+       , NormalArg
+           (Array
+              [ Reg
+                  (Array
+                     [ Reg (Literal (Numeric 50.0 Percent))
+                     , Reg (Literal (Numeric 0.0 Percent))
+                     ])
+              , Reg
+                  (Array
+                     [ Reg (Literal (Numeric 4.0 Percent))
+                     , Reg (Literal (Numeric 4.0 Percent))
+                     ])
+              ])
+       ])
+, ParBreak
+, Code
+    "typ/visualize/stroke-07.typ"
+    ( line 25 , column 2 )
+    (FuncCall
+       (Ident (Identifier "path"))
+       [ KeyValArg (Identifier "fill") (Ident (Identifier "red"))
+       , KeyValArg (Identifier "stroke") (Literal (Numeric 0.0 Pt))
+       , KeyValArg (Identifier "closed") (Literal (Boolean True))
+       , NormalArg
+           (Array
+              [ Reg
+                  (Array
+                     [ Reg (Literal (Numeric 0.0 Percent))
+                     , Reg (Literal (Numeric 0.0 Percent))
+                     ])
+              , Reg
+                  (Array
+                     [ Reg (Literal (Numeric 4.0 Percent))
+                     , Reg (Negated (Literal (Numeric 4.0 Percent)))
+                     ])
+              ])
+       , NormalArg
+           (Array
+              [ Reg
+                  (Array
+                     [ Reg (Literal (Numeric 50.0 Percent))
+                     , Reg (Literal (Numeric 50.0 Percent))
+                     ])
+              , Reg
+                  (Array
+                     [ Reg (Literal (Numeric 4.0 Percent))
+                     , Reg (Negated (Literal (Numeric 4.0 Percent)))
+                     ])
+              ])
+       , NormalArg
+           (Array
+              [ Reg
+                  (Array
+                     [ Reg (Literal (Numeric 0.0 Percent))
+                     , Reg (Literal (Numeric 50.0 Percent))
+                     ])
+              , Reg
+                  (Array
+                     [ Reg (Literal (Numeric 4.0 Percent))
+                     , Reg (Literal (Numeric 4.0 Percent))
+                     ])
+              ])
+       , NormalArg
+           (Array
+              [ Reg
+                  (Array
+                     [ Reg (Literal (Numeric 50.0 Percent))
+                     , Reg (Literal (Numeric 0.0 Percent))
+                     ])
+              , Reg
+                  (Array
+                     [ Reg (Literal (Numeric 4.0 Percent))
+                     , Reg (Literal (Numeric 4.0 Percent))
+                     ])
+              ])
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 text(body: [
+]), 
+                 rect(height: 10.0pt, 
+                      stroke: none, 
+                      width: 10.0pt), 
+                 text(body: [
+]), 
+                 rect(height: 10.0pt, 
+                      stroke: 0.0pt, 
+                      width: 10.0pt), 
+                 text(body: [
+]), 
+                 rect(fill: rgb(0%,45%,85%,100%), 
+                      height: 10.0pt, 
+                      stroke: none, 
+                      width: 10.0pt), 
+                 text(body: [
+]), 
+                 rect(fill: rgb(0%,45%,85%,100%), 
+                      height: 10.0pt, 
+                      stroke: (thickness: 0.0pt,
+                               color: rgb(100%,25%,21%,100%)), 
+                      width: 10.0pt), 
+                 parbreak(), 
+                 line(length: 30.0pt, 
+                      stroke: 0.0pt), 
+                 text(body: [
+]), 
+                 line(length: 30.0pt, 
+                      stroke: (paint: rgb(100%,25%,21%,100%),
+                               thickness: 0.0pt,
+                               dash: ("dot", 1.0pt))), 
+                 parbreak(), 
+                 table(children: (text(body: [A]), 
+                                  text(body: [B])), 
+                       columns: 2, 
+                       stroke: none), 
+                 text(body: [
+]), 
+                 table(children: (text(body: [A]), 
+                                  text(body: [B])), 
+                       columns: 2, 
+                       stroke: 0.0pt), 
+                 parbreak(), 
+                 path(closed: true, 
+                      fill: rgb(100%,25%,21%,100%), 
+                      stroke: none, 
+                      vertices: (((0%, 0%), 
+                                  (4%, -4%)), 
+                                 ((50%, 50%), (4%, -4%)), 
+                                 ((0%, 50%), (4%, 4%)), 
+                                 ((50%, 0%), (4%, 4%)))), 
+                 parbreak(), 
+                 path(closed: true, 
+                      fill: rgb(100%,25%,21%,100%), 
+                      stroke: 0.0pt, 
+                      vertices: (((0%, 0%), 
+                                  (4%, -4%)), 
+                                 ((50%, 50%), (4%, -4%)), 
+                                 ((0%, 50%), (4%, 4%)), 
+                                 ((50%, 0%), (4%, 4%)))), 
+                 parbreak() })
diff --git a/test/typ/visualize/svg-text-00.out b/test/typ/visualize/svg-text-00.out
new file mode 100644
--- /dev/null
+++ b/test/typ/visualize/svg-text-00.out
@@ -0,0 +1,72 @@
+--- parse tree ---
+[ Code
+    "typ/visualize/svg-text-00.typ"
+    ( line 1 , column 2 )
+    (Let
+       (BasicBind (Just (Identifier "test")))
+       (FuncExpr
+          [ NormalParam (Identifier "x") , NormalParam (Identifier "y") ]
+          (Block
+             (CodeBlock
+                [ If
+                    [ ( Equals (Ident (Identifier "x")) (Ident (Identifier "y"))
+                      , Block (Content [ Text "\9989" ])
+                      )
+                    , ( Literal (Boolean True)
+                      , Block
+                          (Content
+                             [ Text "\10060"
+                             , Text "("
+                             , Code
+                                 "typ/visualize/svg-text-00.typ"
+                                 ( line 1 , column 47 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "x")) ])
+                             , Space
+                             , Text "/"
+                             , Text "="
+                             , Space
+                             , Code
+                                 "typ/visualize/svg-text-00.typ"
+                                 ( line 1 , column 59 )
+                                 (FuncCall
+                                    (Ident (Identifier "repr"))
+                                    [ NormalArg (Ident (Identifier "y")) ])
+                             , Text ")"
+                             ])
+                      )
+                    ]
+                ]))))
+, SoftBreak
+, Code
+    "typ/visualize/svg-text-00.typ"
+    ( line 2 , column 2 )
+    (Set
+       (Ident (Identifier "page"))
+       [ KeyValArg (Identifier "width") (Literal (Numeric 250.0 Pt)) ])
+, ParBreak
+, Code
+    "typ/visualize/svg-text-00.typ"
+    ( line 4 , column 2 )
+    (FuncCall
+       (Ident (Identifier "figure"))
+       [ NormalArg
+           (FuncCall
+              (Ident (Identifier "image"))
+              [ NormalArg (Literal (String "/assets/files/diagram.svg")) ])
+       , KeyValArg
+           (Identifier "caption")
+           (Block
+              (Content
+                 [ Text "A" , Space , Text "textful" , Space , Text "diagram" ]))
+       ])
+, ParBreak
+]
+--- evaluated ---
+document(body: { text(body: [
+]), 
+                 parbreak(), 
+                 figure(body: image(path: "/assets/files/diagram.svg"), 
+                        caption: text(body: [A textful diagram])), 
+                 parbreak() })
diff --git a/typst.cabal b/typst.cabal
--- a/typst.cabal
+++ b/typst.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.4
 name:               typst
-version:            0.6.2
+version:            0.7
 synopsis:           Parsing and evaluating typst syntax.
 description:        A library for parsing and evaluating typst syntax.
                     Typst (<https://typst.app>) is a document layout and
@@ -15,7 +15,9 @@
 build-type:         Simple
 extra-doc-files:    CHANGELOG.md
 extra-source-files: test/typ/**/*.typ
-                    test/out/**/*.out
+                    test/typ/**/*.out
+                    test/skip/**/*.typ
+                    test/skip/**/*.out
                     test/typ/regression/something.txt
                     test/typ/regression/addons/example.typ
                     test/assets/files/*.png
